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

这个问题困扰了我几个月了,每次新合约生成的那一天,新的合约总是不能推送tick数据。其他时候的交易日,我程序是9.16启动,15.05结束,可以正常跑一个月。但是新合约生成的第一天,就是死活订阅不到这个新合约的tick数据。
回查log记录,显示CTP已经订阅新的合约,但是就是一直收不到新合约的tick推送。我魔改了部分策略层面的代码,每天每个合约收到的第一个tick数据都会print出来,以便我debug。但是在策略层面这个新合约就是一直不推送tick。
一开始我以为是启动时间的问题,特意将新合约生成的这一天的交易时间改为9.35再启动程序,结果今天一看,还是老样子,能订阅成功,但是永远不会推送tick。只有程序重新启动了(关闭cmd,再开一次),才能正常运行。
版本是vnpy2.4.0,希望有已经爬坑了的同学指点一下

description

Member
avatar
加入于:
帖子: 4684
声望: 285

可以去对应模块的process_tick_event函数下打印看看

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

xiaohe wrote:

可以去对应模块的process_tick_event函数下打印看看
谢谢xiaohe老师指点,已经改了代码,下个月再复查并回复帖子

description

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

找到了问题所在了。我在策略层面写了每天都更新vt_symbol的代码,以为这样可以解决新合约出现的时候的问题。确实log是显示 了订阅了合约,ctp也确实推送了数据。但是在strategies_engine层面上,每次都是从setting.txt里面读取数据,从而出现了策略层面的vt_symbols和engine的vt_symbol不一致,数据无法正常推送。后续解决方案,写一个小程序,每天凌晨自动更新setting的vt_symbol。

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

沪公网安备 31011502017034号

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