在ctpgateway中有定时执行查询函数, 这用于主界面上仓位更新这容易理解
def init_query(self):
""""""
self.count = 0
self.query_functions = [self.query_account, self.query_position]
main engine有处理这个事件,用于GUI显示;
我看到策略里比如cta或者spreadtrading都又订阅了position事件 会去更新coverter里的holdings 但是同时又会去根据ontrade去更新仓位 processposition拿到当前总量,但是on trade信息是增量式的 这两步是不是有些重复?(考虑一种情况, ontrade来的晚了一些,onposition刚查出成交后的总量 那么ontrade信息会重复计数) 我的理解是开始查一次即可,后面每个策略没必要单独去订阅position事件吧 反而会出错 感觉 当然不订阅 等于说是完全依赖网络的可靠性 我猜想系统订阅position事件是为了考量网络不行的时候 万一ontrade掉包了 可以等于重新拉了一遍完整数据了
再结合 我以前报过的一个bug https://github.com/vnpy/vnpy/issues/2234 实际上ontrade也不够准 应该不处理 用onorder去更新仓位更合理;