Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:关于条件语句的使用

1楼
c100010231 发表于:2016/3/25 14:32:12
策略代码如下:
ZDZS:=L;
IF KD THEN BEGIN
SELLSHORT(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赋值。
不知我这样做对不对?
2楼
jinzhe 发表于:2016/3/25 14:37:25

对,因为前面的理解错了。前面只有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
3楼
c100010231 发表于:2016/3/25 14:44:16
必须像您这样写么?
IF KD and holding<=0 THEN BEGIN
SELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE;
BUY(HOLDING=0,5,MARKET),ORDERQUEUE;
DZS:=ZDZS;
END
写成这样可不可以?
4楼
jinzhe 发表于:2016/3/25 14:58:34
也可以,我这样写是比较符合我的习惯
共4 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 3 queries.