比如挂单buy后,没有成交,buy的条件又一次满足了,这时候本应该加仓的(第一次的挂单没有成交),这时候,是不是要先把之前的挂单取消,再挂新的订单,
否则之前的挂单会一直在,并且一直不会成交,因为每次cross_limit_order里只会判断self.active_limit_orders,而self.active_limit_orders是最新的挂单
不知道这样的理解对不对
比如挂单buy后,没有成交,buy的条件又一次满足了,这时候本应该加仓的(第一次的挂单没有成交),这时候,是不是要先把之前的挂单取消,再挂新的订单,
否则之前的挂单会一直在,并且一直不会成交,因为每次cross_limit_order里只会判断self.active_limit_orders,而self.active_limit_orders是最新的挂单
不知道这样的理解对不对
如果是参照示例策略写的话,会在下一个on_bar推过来的时候用cancel_all()方法立刻撤销之前未成交的所有委托的https://www.vnpy.com/docs/cn/cta_strategy.html
xiaohe wrote:
如果是参照示例策略写的话,会在下一个on_bar推过来的时候用cancel_all()方法立刻撤销之前未成交的所有委托的https://www.vnpy.com/docs/cn/cta_strategy.html
谢谢,看到了,如果没有用cancel_all()是不是就会出现上面我说的问题?
如果不撤单,之前的单会一直在,但是一旦满足要求也会被撮合。self.active_limit_orders不是最新委托,是未撤销和未成交的委托,也就是还在活动中的委托。
之所以要撤掉所有委托,是因为一来上个委托相对现在已经失去了时效性,二来是方便持仓管理。
郭易燔 wrote:
如果不撤单,之前的单会一直在,但是一旦满足要求也会被撮合。self.active_limit_orders不是最新委托,是未撤销和未成交的委托,也就是还在活动中的委托。
之所以要撤掉所有委托,是因为一来上个委托相对现在已经失去了时效性,二来是方便持仓管理。
明白了,非常感谢