BarGenerator模块是以tick数据驱动,如果一个合约长时间没有tick数据过来将导致分钟数据缺失,应该如何解决这个问题呢,要求是实时性(分钟级别),不是盘后解决哈。
请教各位大佬如何修改BarGenerator或者通过其他途径解决呢!
BarGenerator模块是以tick数据驱动,如果一个合约长时间没有tick数据过来将导致分钟数据缺失,应该如何解决这个问题呢,要求是实时性(分钟级别),不是盘后解决哈。
请教各位大佬如何修改BarGenerator或者通过其他途径解决呢!
BarGenerator本身是tick驱动的,如果没有tick就合成不了了。如果硬要加上定时检查,需要额外增加定时检查的逻辑(监听EVENT_TIMER)事件,然后每秒检查当前时间和缓存K线时间戳的偏离度,超过一个水平就全部合成K线。
用Python的交易员 wrote:
BarGenerator本身是tick驱动的,如果没有tick就合成不了了。如果硬要加上定时检查,需要额外增加定时检查的逻辑(监听EVENT_TIMER)事件,然后每秒检查当前时间和缓存K线时间戳的偏离度,超过一个水平就全部合成K线。
好的好的 谢谢大佬指导!
用Python的交易员 wrote:
BarGenerator本身是tick驱动的,如果没有tick就合成不了了。如果硬要加上定时检查,需要额外增加定时检查的逻辑(监听EVENT_TIMER)事件,然后每秒检查当前时间和缓存K线时间戳的偏离度,超过一个水平就全部合成K线。
陈老师,定时定时合成1分钟Bar的逻辑感觉还是比较重要的。比如像rqdata的数据源,1分钟的bar数据是采用的每个1分钟走完就立刻合成的。但是如果某个品种非常不活跃,比如期权深度虚值的合约的话,可能会导致实盘合成出上一个bar的时间,与回测中rqdata的历史数据的bar的时间点差了很多了。请问这个定时检查的逻辑(监听EVENT_TIMER)事件在VNPY后续的版本会有考虑增加吗?
目前没,CtaStrategy这些模块,本来就是用来交易流动性好的合约。
对于流动性较差的期权合约,一方面可以用OptionMaster之类的模块来交易(不依赖K线),另一方面也可以用PortfolioStrategy里实现自定义K线切片逻辑来实现