有时候下单后不一定马上成交,我让程序10秒后还未成交就撤销该笔订单。运行过程中遇到问题,实际订单已成交,但也会触发撤单,导致显示撤单失败。
order = api.insert_order(......)
time=10
while order.status != "FINISHED":
api.wait_update()
time=time-1
time.sleep(1)
if order.status=="ALIVE" and time==0:
api.cancel_order(order)
好好学习 已回答的问题 2020年9月11日
我是知识的搬运工:
不建议使用 time.sleep(),因为每次调用 wait_update() 时只处理一个业务数据包,而在time.sleep(x)暂停期间,业务数据包可能已经接收了n个, 此时再调用 wait_update()时则会发现api中刚更新的数据不是当前的最新状态(而是x秒以前的数据),即与真实最新行情间有较明显的时间差,并且随着多次调用 time.sleep(x),这个时间差会越来越大。
建议暂停程序的方法:
1
2
3
4
# 暂停5秒时间
deadline=time.time()+5
whileapi.wait_update(deadline=deadline):
pass
好好学习 已回答的问题 2020年9月11日
tqsdk不能直接用time.sleep(), 会让你的api.wait_update()出问题。