VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 95
声望: 0

紧急求助,无法刷新获取订单信息数据和持仓数据!
用get_order(vtorderid='CTP.3-9351590_1',use_df=False) 获取订单信息,和用get_position获取仓位信息,很多时候都返回None.
调试发现这些访问服务器的接口,只是获取了本地数据,刚下单的数据没有更新,导致返回None。
如果重新登录系统,又可以获取数据了,但不可能每次下单都退出系统再重新登录系统。
请问有什么命令可以刷新获取服务器的订单信息数据和持仓数据?

Member
avatar
加入于:
帖子: 47
声望: 2

发完单之后要等收到订单回报才能用get_order()查询到结果,所以你需要sleep一段时间,具体需要多长时间要看本地到交易所的网络延迟

Member
avatar
加入于:
帖子: 95
声望: 0

我就是用sleep一直等待的,然后每秒get_order()一次,也不返回订单数据。
但关掉vnpy,再重新打开vnpy,重新连接,再get_order()一次,立即就返回订单数据了。
下单一次,关一次vnpy,那肯定不行了,请问有没有刷新服务器数据的命令?

Member
avatar
加入于:
帖子: 4379
声望: 270

可以自己在接口打印排查一下委托之后的变化

Member
avatar
加入于:
帖子: 95
声望: 0
def get_order(self, vt_orderid: str) -> Optional[OrderData]:
    """查询委托数据"""
    return self.orders.get(vt_orderid, None)

这段代码已经是接口了吧,一直返回就是None呀,还要怎样打印?

另外我也试过这样重新连接
gateway.close
gateway.connect
结果执行后,整个vnpy都自动退出了

老师,还有什么办法可以刷新服务器数据?
如果获取不了最新的服务器数据,整个vnpy都用不了!

Member
avatar
加入于:
帖子: 95
声望: 0

其实不用打印出来,主界面那个成交列表也看不到刚刚成交的数据,感觉get_order就是取主界面那个成交列表的数据。
只要关闭vnpy系统,再重新打开vnpy系统,重新连接,再get_order()同一个vt_orderid,立即就返回订单数据了。
所以有没有命令可以刷新主界面那个成交列表的数据?

Member
avatar
加入于:
帖子: 47
声望: 2

这个bug还真没见过,是不是修改了什么地方把订单回报的函数卡住了?可以在vnpy_ctp/gateway/ctp_gateway.py里面CtpTdApi类的OnRtnOrder里打印一下看看

Member
avatar
加入于:
帖子: 95
声望: 0

我连的是simnow服务器

Member
avatar
加入于:
帖子: 4379
声望: 270

simnow也是用的vnpy_ctp的ctp_gateway.py,这个才是接口。
如果主界面成交也不能及时更新,可能是底层出现了报错,可以自己观察一下
正常排查也是在接口文件的委托推送和成交推送里面打印,如果没收到就是API没有推送。如果底层接口收到了没成功推向上层应该就是底层报错了

Member
avatar
加入于:
帖子: 95
声望: 0

老师说得对,排查过就是order_event事件没有推送的原因。
启动vnpy的时候,order_event事件会推送一次所有旧的委托到主界面,然后无论怎样下单,无论sleep多长时间,都不会再推送新的委托。
但重新启动vnpy,就可以看到上一次的委托,因为启动的时候会推送一次。
我查过,的确是用vnpy_ctp的ctp_gateway.py,这个没有问题,而且启动时推送是成功的,证明接口没有错。
为什么新的下单,order_event事件一直没有收到任何委托推送和成交推送呢?

Member
avatar
加入于:
帖子: 4379
声望: 270

第一次启动的时候有在接口的onRtnOrder函数下进行打印排查吗?
或者底层有报错信息输出吗?

Member
avatar
加入于:
帖子: 95
声望: 0

非常感谢老师的指导和排查方法,帮我解决了不少问题。
今天simnow接收数据特别快,数据一下子就推送过来了。
感觉这个问题跟simnow服务器有关,而vnpy的机制是由服务器推送。
希望后续vnpy能够增加一些主动刷新推送事件的方法,当服务器故障暂停推送时,能够主动发送命令刷新推送事件!

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】