以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  MSGOUT  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=182785)

--  作者:gaojb
--  发布时间:2020/10/30 14:10:45
--  MSGOUT
代码如下:

//在3分钟K线上提示均线金叉、死叉和KD高位死叉、低位金叉

//初始化变量
MAJC:=0;
MASC:=0;
KDGWSC:=0;
KDDWJC:=0;
//是否到达3分钟
MINUTE_3:=MOD(MOD(INTPART(dynainfo(207)/100),100)*100,3);

//均线
MA_1:=MA(CLOSE,MA1);
MA_2:=MA(CLOSE,MA2);
MA_3:=MA(CLOSE,MA3);

//KD
RSV:=(CLOSE-LLV(LOW,KD_N))/(HHV(HIGH,KD_N)-LLV(LOW,KD_N))*100;
K:=SMA(RSV,KD_P1,1);
D:=SMA(K,KD_P2,1);

//信号
//三均线金叉
MAJC:= MA_1>MA_2 AND MA_2>MA_3 AND NOT(REF(MA_1,1)>REF(MA_2,1) AND REF(MA_2,1)>REF(MA_3,1));
输出消息1:= STKNAME()+\' 三均线金叉\';
SPEAK(MAJC,输出消息1);
MSGOUT(MAJC AND MINUTE_3=0,输出消息1);

//三均线死叉
MASC:= MA_1<MA_2 AND MA_2<MA_3 AND NOT(REF(MA_1,1)<REF(MA_2,1) AND REF(MA_2,1)<REF(MA_3,1));
输出消息2:= STKNAME()+\' 三均线死叉\';
SPEAK(MASC,输出消息2);
MSGOUT(MASC AND MINUTE_3=0,输出消息2);

//KD高位死叉
KDGWSC:= REF(K,1)>75 AND REF(D,1)>75 AND CROSS(D,K);
输出消息3:= STKNAME()+\' KD高位死叉\';
SPEAK(KDGWSC,输出消息3);
MSGOUT(KDGWSC AND MINUTE_3=0,输出消息3);

//KD低位金叉
KDDWJC:= REF(K,1)<22 AND REF(D,1)>22 AND CROSS(K,D);
输出消息4:= STKNAME()+\' KD低位金叉\';
SPEAK(KDDWJC,输出消息4);
MSGOUT(KDDWJC AND MINUTE_3=0,输出消息4);

运行模式是逐K线(仅刷最后一根K线)

输出是这样的:
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 KD高位死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 KD高位死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 KD高位死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉
2020/10/30 13:54:01  300_11跨4800 三均线死叉
2020/10/30 13:54:01  300_11跨4800 三均线金叉

问题:这是什么情况?每条K线对应一行数据吗?和K线图对照,也不对啊!代码哪里有问题吗?

--  作者:yukizzc
--  发布时间:2020/10/30 14:21:51
--  

在消息栏输出消息,可以使用该函数进行公式调试

用法:MSGOUT(COND,S),当COND为1时,在消息栏输出字符串S

例如:MSGOUT(OPEN<CLOSE,\'大阳线\')在执行公式时,对于逐K线计算模式,只要符合阳线的周期都将会得到输出。对于序列计算模式,最后一个周期COND成立时才进行输出,此时参数S必须是常数。
所属函数组:特色函数


--  作者:gaojb
--  发布时间:2020/10/30 14:27:45
--  
麻烦在软件上实际跑一下