3.74K 浏览
0

关于 wait_update 方法,文档里多次提到,如策略程序创建的后台调仓任务只会在wait_update()时发出交易指令……

请问 wait_update() 方法是如何执行下单指令的?源码文件中的哪一行是执行下单指令?

lookis 已回答的问题 2020年7月6日
1

tqsdk是采用了一个消息队列,而下单的方式有两种:
1. set_target_volume是在本地维护了一个 _pos_chan,它把消息放到了这个队列里,而在
_target_pos_task这里面把这个消息取出来进行处理转化成一个 task 任务
InsertOrderUntilAllTradedTask,放到了asyncio的eventloop里面,所以需要找下单指令的话,就是在 InsertOrderUntilAllTradedTask 这个类的 async def _run 这个函数里执行的,当然最终也会落到 insert_order 下

2. insert_order 在调用的时候把创建了订单消息放到了 _send_chan 本地队列里,然后在具体的账号类(TqSim 或者 TqAccount)里有一个异步任务通过eventloop执行,不断检查 _send_chan队列,而这个异步任务是在 api.wait_update 的时候,通过 _run_until_idle 这条语句保信息发送到服务器。

lookis 已回答的问题 2020年7月6日
您正在查看1个答案中的1个,单击此处查看所有答案。