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 这条语句保信息发送到服务器。