以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 请问老师如何实现模型组合后的交易次数 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=61687) |
-- 作者:雪球 -- 发布时间:2014/2/16 0:55:51 -- 请问老师如何实现模型组合后的交易次数 下面是2个模型组合,图表交易。请问老师模型1与模型2分别交易不超过2次,如何改编呢? input: cang2(1,0,10,1); runmode:0; variable:zs=0,cc1=0; ma5:=ma(c,5); ma20:=ma(c,20); entertime:=time>100000 and time<144500; if holding>0 and cc1<=0 then sell(1,1,limitr,o); if holding<0 and cc1>=0 then sellshort(1,1,limitr,o); if holding=0 and cc1>0 then buy(1,1,limitr,o); if holding=0 and cc1<0 then buyshort(1,1,limitr,o); if cc1>0 and l<zs then begin sell(1,1,limitr,min(o,zs-0.6)); cc1:=0; end if cc1<0 and h>zs then begin sellshort(1,1,limitr,max(o,zs+0.6)); cc1:=0; end if cc1>0 and ma5<ma20 then cc1:=0; if cc1<0 and ma5>ma20 then cc1:=0; if cc1=0 and ma5>ma20 and entertime then begin cc1:=1; zs:=c-10; end if cc1=0 and ma5<ma20 and entertime then begin cc1:=-1; zs:=c+10; end if time>=150000 then begin cc1:=0; end /////////////////////////////////以上是模型1 /////////////////////////////////模型2——20周期反手 /////////////////////////////////以上是模型2 |
-- 作者:klc -- 发布时间:2014/2/16 17:55:26 -- 模型1与模型2分别交易不超过2次 这句话是什么意思呢? |
-- 作者:雪球 -- 发布时间:2014/2/17 7:58:06 -- 以下是引用klc在2014/2/16 17:55:26的发言:
就是模1开仓不超过2次,模2开仓不超过2次。
模型1与模型2分别交易不超过2次 这句话是什么意思呢? |
-- 作者:yukizzc -- 发布时间:2014/2/17 9:08:18 -- variable:num=0;// 全局变量,控制交易次数,没开仓一次把这个值加1。
if holding=0 and cc1>0 and num<2 then begin buy(1,1,limitr,o); num:=num+1; end
if holding=0 and cc1<0 and num<2 then being buyshort(1,1,limitr,o); num:=num+1; end |
-- 作者:客人 -- 发布时间:2014/2/17 11:23:34 -- 以下是引用yukizzc在2014/2/17 9:08:18的发言:
variable:num=0;// 全局变量,控制交易次数,没开仓一次把这个值加1。
if holding=0 and cc1>0 and num<2 then begin buy(1,1,limitr,o); num:=num+1; end
if holding=0 and cc1<0 and num<2 then being buyshort(1,1,limitr,o); num:=num+1加在开仓语句控制交易次数,结果交易信号几乎看不到了;如num:=num+1加在平仓语句中控制交易次数又控制不住,即交易超过2次,如模型不组合在一起分别运行则正常即不超过2次。昨天我已都试过了。老师上面的方法你实际试验的结果如何呀?num:=num+1; end |
-- 作者:雪球 -- 发布时间:2014/2/17 11:25:49 -- 以下是引用yukizzc在2014/2/17 9:08:18的发言:
variable:num=0;// 全局变量,控制交易次数,没开仓一次把这个值加1。
if holding=0 and cc1>0 and num<2 then begin buy(1,1,limitr,o); num:=num+1; end
if holding=0 and cc1<0 and num<2 then being buyshort(1,1,limitr,o); num:=num+1; num:=num+1加在开仓语句控制交易次数,结果交易信号几乎看不到了;如num:=num+1加在平仓语句中控制交易次数又控制不住,即交易超过2次,如模型不组合在一起分别运行则正常即不超过2次。昨天我已都试过了。老师上面的方法你实际试验的结果如何呀?end |
-- 作者:yukizzc -- 发布时间:2014/2/17 11:32:38 -- 因为num到2之后就不会再开仓了,你得加上个条件什么时候把num重置为0 |
-- 作者:雪球 -- 发布时间:2014/2/17 13:37:23 -- 以下是引用yukizzc在2014/2/17 11:32:38的发言:
重启在:收盘时重置为0的。还有问题:就是1分钟k线iF00品种开仓时经常是同根K开2次仓的,但num:=num+1一下子就超过了2次!
因为num到2之后就不会再开仓了,你得加上个条件什么时候把num重置为0 |
-- 作者:雪球 -- 发布时间:2014/2/17 13:40:00 -- 尤其是模型2同根K都开2次仓的,请老师怎样才能阻止这种同根K开2次仓呢? |
-- 作者:yukizzc -- 发布时间:2014/2/17 13:50:59 -- if time=closetime(0) then num:=0;// 在代码后加上这句当time等于收盘时num重置为0 你开仓语句里加上一个开仓历时的判断ENTERBARS>0,这样如果当前k线出现开仓信号那么ENTERBARS=0,之后的开仓语句不会执行。 |