又得麻烦大牛,直接套入后。图表表现出来并不是macd二次金叉死叉平仓,而是开仓后一碰到金叉死叉就平仓了。想表现的效果:是开仓后,然后才判断macd是否是第二次金叉死叉。下面是代码,大牛解答哪里出错了????
variable:n=0,m=0;
diff:"macd.diff";
dea:"macd.dea";
ma1:=ma(c,a);
ma2:=ma(c,b);
cond1:cross(ma1,ma2);
cond2:cross(ma2,ma1);
KD:=cond1; //开多条件
PD:=cond2; //平多条件
KK:=cond2; //开空条件
PK:=cond1; //平空条件
平空:SELLSHORT(PK,1,THISCLOSE); //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL(PD,1,THISCLOSE); //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE);
//止损条件1
shortzs1:cross(diff,dea);
longzs1:cross(dea,diff);
if shortzs1 and n=0 then n:=1;//第一次
if shortzs1 and n=1 then begin//第二次
sellshort(1 and holding<0,1,market);
n:=0;
end
if longzs1 and m=0 then m:=1;//第一次
if longzs1 and m=1 then begin//第二次
sell(1 and holding>0,1,market);
m:=0;
end