VNPY入门K线合成器BarGenerator
VNPY学习入门篇,工具类BarGenerator。
BarGenerator类在vnpy_ctastrategy包中。主要作用是帮我们在策略中合成各个周期的K线数据。
什么情况下使用
这取决于你的策略周期,如果你的策略是基于5分钟K线的短线思路,那对不起,类似于QMT,TuShare这类,都不提供5分钟K线。如QMT,我们可以拿到的数据有:
- tick
- 1分钟
- 1小时
- 日线
因此,诸如5分钟,15分钟,30分钟这些数据周期的K线,就需要通过BarGenerator来通过本地程序做数据整合。
使用方法
基础使用: K线拟合
- 用法一:时间节点达到1分钟时,调用on_bar方法,而在这个方法中,用户可以定义自己的计算逻辑。
💡
# 通过tick数据拟合成1分钟K线
self.bg = BarGenerator(self.on_bar)
self.bg = BarGenerator(self.on_bar)
- 用法二:使用on_bar接收拟合1分钟K线,进而当1min k线到整点5分钟时,调用指定的周期K线处理方法。
💡
# 将K线聚合成指定周期K线
self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
self.bg15 = BarGenerator(self.on_bar, 15, self.on_15min_bar)
self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
self.bg15 = BarGenerator(self.on_bar, 15, self.on_15min_bar)
单周期策略
比如构建一个周期期双均策略,MA金叉买,死叉卖。
def on_init(self):
self.bg = BarGenerator(self.on_bar)
def on_tick(self, tick: TickData):
self.bg.update_tick(tick)
def on_bar(self, bar: BarData):
# 处理1分钟K线数据
pass
多周期策略
如果需要通过多个周期做出入场决策,就可以参考以下框架。
def on_init(self):
self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
self.bg15 = BarGenerator(self.on_bar, 15, self.on_15min_bar)
def on_tick(self, tick: TickData):
self.bg5.update_tick(tick)
def on_bar(self, bar: BarData):
self.bg5.update_bar(bar)
self.bg15.update_bar(bar)
def on_5min_bar(self, bar: BarData):
# 处理5分钟K线数据
pass
def on_15min_bar(self, bar: BarData):
# 处理15分钟K线数据
pass