tbuy(1,1,lmt,stkindi(HY1,'Formula3.bprice',0,0)+0.2,0,'',HY1);
tsell(TISREMAINex(1,'',HY1)=0,1,mkt,0,0,'',HY2);
TCANCELEX(TISREMAINex(1,'',HY1),1,'612808',HY1);
预期代码效果是:若HY1成交,则平一手HY2,若未成交,则撤单
执行结果是:HY1在未成交的情况下HY2就会平,而且这种情况似乎只出现在tsell的时候,我将tsell改为tbuy的话似乎就可以按照预期执行了(即HY1成交时才执行开仓HY2)
就是上一笔委托单是否未成交那个函数,我以为它会在每一次执行的时候检查是否上一笔委托单是否成交(即限价单是否成交)
你看下交易日志,是同一时刻tbuy了然后马上tsell
还是过了几秒,下一次轮询时候再执行tsell.
另外用debugfile输出下TISREMAINex(1,'',HY1) 看下输出值是多少
1.是tbuy下一次轮询的时候再执行tsell2.TISREMAINex(1,'',HY1) 之前检查过,有未成交单的时候为1,没有未成交单的时候为0
3.我发现问题可能在于,它每一次轮询的时候并不都执行第一个tbuy,反而可能tbuy之后过了两个轮询的时候由于已经撤单,显示没有未成交单的时候执行了一次tsell,但是也仅此一次,不会在每次显示没有未成交单的时候都执行
另外我怀疑,系统判断是否上一笔委托未成交的时候,是首先判断是否有开仓动作,然后判断未成交委托中是否有相应的单,若两者皆是则判断上一笔委托未成交,若有开仓动作且未成交委托中没有相应的单,则判断成交。然而,如果我已经撤单了,那么系统会发现有开仓动作,未成交委托中没有相应的单,因此判断为上一笔委托成交了,这就变成了一个bug
或者也不能说是bug,当我撤单了以后,系统就不认为这是上一笔委托了,而是认为上上一笔委托才是上一笔委托
或者你直接走vba,对报单的id做监控,这样去跟踪单子情况