VNPY中持仓查询的方法,可以根据以下以下原理灵活变通:
1.在CTP_gateway中定义了计时器处理函数,def process_timer_event(self, event): 它的功能是每2秒查询一次账户持仓(CTP_gateway里也有个队列)。
- 在CTP_gateway中向CTP柜台请求查询账户持仓后,CTP柜台响应、用def onRspQryInvestorPosition()来处理响应,这函数调用on_position,把查询到的结果推入事件引擎队列中。
- main_engine从队列中读持仓数据,用def process_position_event()函数来处理查询到的持仓数据,在这个函数中,把查询的持仓数据缓存到了self.positions这个字典中
- 那么在CTA策略中如果想查看账户持仓数据,那就调用主引擎的get_position或者get_all_position(),就可看到持仓数据,也就实现了你想要的“调用”。