1.案例撤单都在ontimer操作,是有什么特殊含义吗?我看都是只执行一次 为什么不用其它函数呢?
2.A_DeleteAccountOrder(Symbol, 0)这个函数一行解决了账户在该合约的所有撤单,为什么还要用A_DeleteOrderEx 这个去获取未成交的单遍历一遍再撤单呢?
3.高频策略,假设有挂单成交了,OnOrder和OnPosition谁先执行呢?假设在挂的止盈单部分成交了,现在要撤单重新挂(在OnOrder操作),那么挂单数量是用ord.volume-ord.fillVolume应该是有问题的吧,因为fillVolume取的是最后一次成交数量?用myPos.shortCurrentVolume或者A_SellPosition()会不会有问题?
经实践证明:
OnPosition更新更及时,挂单使用myPos.shortCurrentVolume或者A_SellPosition()会更好。
部分成交分了几次,比如一共挂单5手,第一次成交1手,第二次成交2手,那么在第2次的OnOrder里,fillVolume是3
实践很好,可以先实践再咨询
1 没有什么特殊含义,因为这个例子展示的就是发单后固定时间后进行撤单,所以用定时器处理,完全是业务逻辑需要
2 有些策略需要精确的撤某一笔单子而不是把所有该品种的委托都撤掉。
3挂单成交应该是onorder先执行。止盈单部分成交驱动onorder域运行的时候,fillvolume就是部分成交的数量,用原数量减去这个部分成交数量就可以得到继续挂单数量
如果部分成交分了几次呢?实际成交过程中有瞬间分几次成交的情况,比如一共挂单5手,第一次成交1手,第二次成交2手,那么在第2次的OnOrder里,fillVolume是3还是2?