开拓者期货期权程序化系统交易论坛

标题: 关于平仓判断成交后再开仓的反手指令,金字塔的解决方案和TB的不作为比较! [打印本页]

作者: L790513    时间: 2012-12-3 12:24:55     标题: 关于平仓判断成交后再开仓的反手指令,金字塔的解决方案和TB的不作为比较!

日内满仓交易时,平仓反手的实现方法   Post By:2011-7-13 22:43:44 [只看该作者]

日内满仓交易时,平仓反手的时候,有个问题要特别注意,就是在平仓单未成交前如果发出开仓委托单会出现保证金不足的情况造成无法自动开仓

这个问题是众所周知的



1,一般的处理方法是在每个下单指令的最后面加一个顺序下单控制符,如下:

hi:=ref(hhv(h,20),1);
lo:=ref(llv(l,20),1);
entertime:=time<=144500;
exittime:=time>=145700;
buycond:=c>hi;
sellcond:=c<lo;
if holding>0 and (sellcond or exittime) then sell(1,1,market),orderqueue;
if holding<0 and (buycond or exittime) then sellshort(1,1,market),orderqueue;
if holding=0 and entertime and buycond then buy(1,1,market),orderqueue;
if holding=0 and entertime and sellcond then buyshort(1,1,market),orderqueue;



这种方法基本上可以解决问题。orderqueue顺序下单的意思是委托单按先后顺序排队等待,依次处理

但也有不足的地方,就是在平仓单未及时成交时,依然会出现保证金不足的错误。如 A(平多)、B(开空),A未及时成交自动撤单后追单

自动追单的委托就排在后面了,也就是下单顺序就为 B、A 。B发送时就会提示错误,因为保证金并未释放。



2,现提出另一处理方法

问题的关键,就是要等平仓单完全成交后再发开仓单,这样才能避免出现保证金不足的情况

反手模型有个特点,就是平仓单成交后,仓位为0,而后台的tholding2这个函数就是表示实际持仓

于是:

hi:=ref(hhv(h,20),1);
lo:=ref(llv(l,20),1);
entertime:=time<=144500;
exittime:=time>=145700;
buycond:=ref(c>hi,1);
sellcond:=ref(c<lo,1);
abb:=not(islastbar) or (islastbar and tholding2=0);//这里要这样处理,否则tholding2会影响前面得信号
if holding>0 and (sellcond or exittime) then sell(1,1,market);
if holding<0 and (buycond or exittime) then sellshort(1,1,market);
if holding=0 and entertime and buycond and abb then buy(1,1,market);
if holding=0 and entertime and sellcond and abb then buyshort(1,1,market);

程序执行过程:1,平仓单发出后,不发开仓单,因为tholding2不为0.如果平仓单没及时成交,自动撤单后追单直至成交

                    2,平仓单成交后,tholding2=0,此时开仓指令条件成立,发出开仓单。不会出现保证金不足的情况

                    3,注意,用的是tholding2,而非tholding,tholding会受未成交委托单影响。

以上适用的条件 :1,需要平仓委托在信号成立的K线内成交,才能发出开仓委托。模型基本符合这个条件

                        2,固定时间间隔或者高频。如果是K线走完模式,还需稍作修改为固定时间间隔模式


注:这么重要的功能,TB到现在也没有一个成功的事例来给初级投资者一个模板,来帮助我们这些初级学者来实现这种重要的功能,不知道TB整天都在干什么?
作者: 小米    时间: 2012-12-3 12:32:34

TB公式里指南里有现成的平仓延迟5个TICK反手的模板。
请查阅
作者: wfklhh2017    时间: 2017-8-16 23:09:32

小米 发表于 2012-12-3 12:32
TB公式里指南里有现成的平仓延迟5个TICK反手的模板。
请查阅

能够在多些模板让 用户 学习 以便更快进入状态  少放错误吗! 比如开仓指令后 要多少个tick等待成交回报后 根据成交回报如果未成交就撤单 撤单又要等待回报状态后再进行再次开仓 这是否要进行个循环 确保成交,  再复杂点就是部分成交的情况! 感觉就是模板案例太少了  都要靠自己琢磨  琢磨倒没关系 关键正确性和可靠性有时心里没底  TB公司难道就不能辛苦下方便更多客户吗  毕竟让大家都辛苦一遍效率太低而且不利于你们软件推广




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2