1.41K 浏览
0

在下面这段报撤单的过程中,我理解的过程是这样的:

  1. 在count=1的时候,wait_update()中发送委托单,并收到委托单已报入交易所的信息,这时order.is_online=True,并执行if order.is_online下面的部分。
  2. 在count=2的时候,wait_update()中发送撤单请求,并收到订单已取消,这时order.status=Finished,order.is_online=False。
  3. 在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)

ghastmg 问的问题 2021年8月9日