根据文档,下单的时候有个net参数可以设置净仓下单模式,多数情况下是正常的,但是偶尔(概率并不小)仍然会出现锁仓的情况。
比如当前的pos是1,
调用self.sell(order_price, 2, net=True)
大概率是会先平1手多仓,然后再开1手空仓。
但是有一定概率会直接开2手空仓,造成有1手锁仓的问题。
反之当前pos是-1的时候,
调用self.buy(order_price, 2, net=True)
大概率是会先平1手空仓,然后再开1手多仓。
但是有一定概率会直接开2手多仓,造成有1手锁仓的问题。
出问题的概率只是相对低,实际并不低,
我对接simnow,写了个run.py,同时开启所有主力合约。
过1天,就有一大堆锁仓的。
每次下单之前我都会调用self.cancel_all(),所以实际伪代码类似下面这种:
self.cancel_all()
self.buy(order_price, self.target_pos-self.pos, net=True)
因为有可能上次报单价格没有成交,所以会先撤单,再重新下单。
我猜可能是由于撤单和成交回报不同步导致的vnpy对仓位的判断错误而导致的净仓转换的问题。
请问这种要怎么解决呢?