不对的几点地方如下:
1,TRIX3金叉 := CROSS(TRIX3,TRML3);
CROSS返回的是交叉时的状态(某根k上是1,不能代码一个范围),所以在交叉之后,TRIX3>TRML3的情况下,TRIX3金叉 := CROSS(TRIX3,TRML3);返回值一样是0.
2.您说的盈利指的应该是持仓的浮动盈亏,不是平仓盈亏,所以NUMPROFIT(1)是不合理的,他只能返回上次平仓时的结果。
注:下面修改中使用OPENPROFIT函数,并且规定了大于0。
3.根据第一点,所以不需要使用全局变量进行标记。
代码修改如下:
//DMA(S,P,M)二线
DDD:=(MA(CLOSE,S)-MA(CLOSE,P));
AMA:=MA(DDD,M);
//TRIX(N1,M1)线
TR3:= EMA(EMA(EMA(CLOSE,N1),N1),N1);
TRIX3 : (TR3-REF(TR3,1))/REF(TR3,1)*100,LINETHICK0;
TRML3 : MA(TRIX3,M1),LINETHICK0;
DMA金叉 := CROSS(DDD,AMA);
DMA死叉 := CROSS(AMA,DDD);
TRIX3金叉 := TRIX3>TRML3;
TRIX3死叉 := TRML3>TRIX3;
if TRIX3金叉=1 and DMA金叉=1 then begin
开多1:BUY(HOLDING=0,NUM,MARKET);
end
if DMA死叉=1 and ( OPENPROFIT>0 or TRIX3死叉=1 ) then begin
平多1: SELL(HOLDING>0,NUM,MARKET);
end