可以参考函数TYPEBAR,在开仓条件中判断下平仓信号距离当前K线大于1个周期满足开仓条件才进行开仓。例如TYPEBAR(1,2);//倒数第一个平多信号距离当前的周期数
也可以使用函数TEXITBARS。在开仓时判断下平仓历时。
例如:
if 开仓条件 and TEXITBARS>0 then buy(1,1,market);
可以增加一个全局变量来控制,此K线平了仓就不再开仓,比如extgbdata函数;
1. 需要在工具-数据管理中添加变量名称,比如“bar”
2. 在平仓条件中:
if 平仓条件 and holding>0 and extgbdata( 'bar')<barpos
then
sell(1,holding,market);
extgbdataset('bar',barpos);//重置bar的值
end
如果你用的是market、limit这种次周期指令,那在平仓信号出现后的当根K线上exitbars返回的就是-1,若用的是marketr、limitr这种本周期指令,那返回的就是0,所以你在开仓条件中加入exitbars>=0或exitbars>0,例如,以5分钟周期为例:
if time=140000 then buy(1,1,marketr);
if time=145500 then sell(1,1,marketr);
if time=145500 and exitbars>0 then buy(1,1,marketr);
这样就需要平仓语句写在开仓语句前面了,因为只有先执行了平仓语句,exitbars的值才会改变过来。