策略代码如下:
ZDZS:=L;
IF KD THEN BEGINSELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE;
BUY(HOLDING=0,5,MARKET),ORDERQUEUE;
DZS:=ZDZS;
END
以上代码执行过程中,只要遇到符合KD的情况,且持仓为零,就会把DZS的值设为开仓时K线的最低价。
但是出现了问题:如果已经开了多仓,且止损(DZS)已设置完毕。那么在下一次符合KD时(此时,上一次所开多仓还没平掉),虽然没有开多仓(因为,此时不符合HOLDING=0这个条件),但是,却把DZS给改变了。请问如何处理?
我是这样做的,请问可行么?(还没实盘测试,不放心,先上来问问各位老师)
IF KD and holding<=0 THEN BEGIN
SELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE;
BUY(HOLDING=0,5,MARKET),ORDERQUEUE;
DZS:=ZDZS;
END
上面的代码是把HOLDING<=0这个条件和KD 与了一下,这样,只有在HOLDING<=0也满足的时候才会给DZS赋值。
不知我这样做对不对?
对,因为前面的理解错了。前面只有KD这一个条件,并没有holding=0这个条件,所以只要KD满足,DZS就会被重新赋值,而不需要holding=0.
所以正确写法是:
IF KD THEN BEGIN
SELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE;
if holding=0 then begin
BUY(HOLDING=0,5,MARKET),ORDERQUEUE;
DZS:=ZDZS;
end
END
必须像您这样写么?
IF KD and holding<=0 THEN BEGIN
SELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE;
BUY(HOLDING=0,5,MARKET),ORDERQUEUE;
DZS:=ZDZS;
END
写成这样可不可以?