以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 还是信号的闪烁问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=51575) |
-- 作者:李亚弟 -- 发布时间:2013/5/2 14:03:45 -- 还是信号的闪烁问题 runmode:0; variable:cc=0,kcj=0,pcj=0,maxprofit=0,win=0,win2=0,hcgy=0,win2bz=0; exittime:=time>=150800; {收盘强制平仓时间} closetime1:=(time=151500); if exitbars=1 and hcgy=0 and win2bz=0 then begin //在平仓后尽快恢复回撤止盈的相关标志 win:=0; win2:=0; maxprofit:=0; hcgy:=1; win2bz:=0; end //回撤止盈--start--- if holding>0 and enterbars>0 then begin win:=(h-kcj)/kcj*100;//记录盈利点数 if win>maxprofit and win>maxd/kcj*100 then begin maxprofit:=win;hcgy:=0;end//maxd是参数,做多时从这个点数开始记录最大盈利点数maxprofit。 if maxprofit>0 and win2bz=0 then win2:=(maxprofit-win)/maxprofit*100;//最大盈利后的回调幅度.win2bz为0时更新win2bz,回撤止盈后win2bz设为1。 end if holding<0 and enterbars > 0 then begin win:=(kcj-l)/kcj*100; //记录盈利点数 if win>maxprofit and win>maxk/kcj*100 then begin maxprofit:=win;hcgy:=0;end //maxk是参数,做空时从这个点数开始记录最大盈利点数maxprofit。 if maxprofit>0 and win2bz=0 then win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度。win2bz为0时更新win2bz,回撤止盈后win2bz设为1。 end if holding>0 and win2>=60 and OPENPROFIT>0 then begin pcj:=(maxprofit*kcj)/100-(win2*maxprofit*kcj)/10000+kcj; sell(1,P,limitr,pcj); cc:=0;//持仓标志 win2bz:=1;//win2bz设为1,避免win2重新赋值。其实按原有win2赋值的if,holding>0,不会重新赋值,但会实际情况是会出现信号闪烁。 end if holding<0 and win2>=60 and OPENPROFIT>0 then begin pcj:=kcj-(maxprofit*kcj)/100+(win2*maxprofit*kcj)/10000; sellshort(1,P,limitr,pcj); cc:=0; win2bz:=1;//win2bz设为1,避免win2重新赋值。其实按原有win2赋值的if,holding>0,不会重新赋值,但会实际情况是会出现信号闪烁。 end //回撤止盈--end--- 这段代码是用每秒一次来轮询的,在1分钟K线上。(1)代码会闪烁,(2)还会出现win2乱赋值的情况。我弄了半天自己有点晕了。麻烦帮我检查问题在哪里。谢谢。 |
-- 作者:jinzhe -- 发布时间:2013/5/2 14:23:09 -- win2不会乱赋值的,多用shift+q进行调试 代码闪烁,避免用ref(条件,1)来替代 条件 |