以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 关于条件语句的使用 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=95136) |
-- 作者: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赋值。 不知我这样做对不对?
|
-- 作者: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 |
-- 作者: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 写成这样可不可以? |
-- 作者:jinzhe -- 发布时间:2016/3/25 14:58:34 -- 也可以,我这样写是比较符合我的习惯 |