做个微调,问题出在ref身上。ref取值其实是一种切片方式,就是你在第10行ref时候,它取值同样是前面K在第十行时候该变量的值。所以你这里ref时候 因为位置是和开仓语句在一个位置,这时候开仓没完成,你获取的holding其实还是0. 现在改成全局变量记录方式,全局变量始终记录最近一次赋值的结果。
[PEL] 复制代码 VARIABLE:HD:=0;
result1:=MA(HIGH,6)-MA(OPEN,6);
result2:=MA(OPEN,6)-MA(LOW,6);
JX1:=MA(CLOSE,22);
JX2:=MA(CLOSE,20);
ma1: O+REF(result1,1)*1.2;
ma2: O-REF(result2,1)*1.2;
ma3: O-REF(result1,1)*2.25;
ma4: O+REF(result2,1)*2.25;
win:(c-enterprice)/enterprice*100;
win1:(LOW-enterprice)/enterprice*100;
KD:HIGH>ma1 AND REF(JX1,1)>REF(JX1,2) ;
KK:LOW<ma2 AND REF(JX2,1)<REF(JX2,2) ;
IF win>0 THEN
平多1:SELL(1,1,THISCLOSE);
IF win1<0 THEN
平多2:SELL(win1<-2,1,thisCLOSE);
IF win<0 THEN
平空1:SELLSHORT(1,1,THISCLOSE);
IF win1>0 THEN
平空2:SELLSHORT(win1>2,1,thisCLOSE); //平空信号
开多:BUY( KD AND HD=0 AND HOLDING=0,1,LIMITR,ma1); //开多信号
开空:BUYSHORT( KK AND HD=0 AND HOLDING=0,1,LIMITR,ma2); //开空信号
HD:=HOLDING; |