在下面这段报撤单的过程中,我理解的过程是这样的:
- 在count=1的时候,wait_update()中发送委托单,并收到委托单已报入交易所的信息,这时order.is_online=True,并执行if order.is_online下面的部分。
- 在count=2的时候,wait_update()中发送撤单请求,并收到订单已取消,这时order.status=Finished,order.is_online=False。
- 在count=3的时候,执行else部分的程序。
如果用模拟账户运行的话,结果就是和上面的描述一样的,但是实盘账户的情况如下图所示,在count=3的时候order.is_online才变为True,并且在发送撤单请求后的第三个循环也才确认撤单成功,请问是什么原因?在第一个第二次循环中,在没有数据更新的情况下为什么wait_update()仍然返回了?谢谢。
contract = 'DCE.rr2205' order = api.insert_order(symbol=contract, direction='BUY', offset='OPEN', volume=1, limit_price=3501) print('发送委托单') count = 1 while order.status == 'ALIVE': print(count, dt.datetime.today()) api.wait_update() if order.is_online: print('委托单已到达交易所') print(order.status, order.is_online) print('发送撤单请求\n') api.cancel_order(order) count += 1 else: print(count) print('已撤单') print(order.status, order.is_online)