思路如下,就是引用5分钟和60分钟的KDJ的k和d,当60分钟的kd有金叉时候,就开始执行5分钟的kd金叉做多,只做多,平仓条件为5分钟kd死叉。同理,死叉的系统也是类似。
简单的说,就是当长周期满足金叉时候,就启动短周期kd金叉做多系统,如果长周期满足死叉时候,就停止运行短周期kd金叉做多系统,而是启动运行短周期kd死叉做空系统。
我自己编写代码如下,但是信号却不是我想要的效果,比如套用股指上面,本来在10月9日60分钟图上,已有金叉,那么短周期5分钟周期也是执行金叉做多系统,但是只显示了一个做多的信号,不是想要的结果,想要的结果应该是短周期5分钟上面kd金叉条件满足后的那几个做多的信号。应该如何编写会比较合理简单有效,请求帮忙下。
X:=STKINDI(stklabel,'KDJ.K',0,5);//引用60分钟的kdj的k值
Y:=STKINDI(stklabel,'KDJ.D',0,5);//引用60分钟的kdj的d值
XY:=CROSS(X,Y);
XY0:=CROSS(Y,X);
X1:=STKINDI(stklabel,'KDJ.K',0,2);//引用5分钟的kdj的k值
Y1:=STKINDI(stklabel,'KDJ.D',0,2);//引用5分钟的kdj的d值
XY1:=CROSS(X1,Y1);
XY2:=CROSS(Y1,X1);
KD0:=XY1 ;//开多条件
PD0:=XY2; //平多条件
IF XY THEN BEGIN
KD:BUY(KD0 and holding=0,1,THISCLOSE);
PD:SELL(PD0 and holding,1,THISCLOSE);
END
KK0:=XY1 ;//开空条件
PK0:=XY2; //平空条件
IF XY0 THEN BEGIN
KK:SELLSHORT(KK0 and holding=0,1,THISCLOSE);
PK:BUYSHORT(PK0 and holding,1,THISCLOSE);
END
variable:bj=0;
....这里引用5分钟和60分钟的金叉
if 60分钟金叉 then bj:=1;
if 60分钟死叉 then bj:=2;
if bj=1 and 5分钟金叉 then begin..........
end
if bj=2 and 5分钟死叉 then begin........
end
把你的5分钟金叉死叉策略写进上面用省略号省略的地方