VNPY入门K线合成器BarGenerator

VNPY学习入门篇,工具类BarGenerator。

VNPY入门K线合成器BarGenerator
Photo by Diane Picchiottino / Unsplash

BarGenerator类在vnpy_ctastrategy包中。主要作用是帮我们在策略中合成各个周期的K线数据。

什么情况下使用

这取决于你的策略周期,如果你的策略是基于5分钟K线的短线思路,那对不起,类似于QMT,TuShare这类,都不提供5分钟K线。如QMT,我们可以拿到的数据有:

  1. tick
  2. 1分钟
  3. 1小时
  4. 日线

因此,诸如5分钟,15分钟,30分钟这些数据周期的K线,就需要通过BarGenerator来通过本地程序做数据整合。

使用方法

基础使用: K线拟合

  • 用法一:时间节点达到1分钟时,调用on_bar方法,而在这个方法中,用户可以定义自己的计算逻辑。
💡
# 通过tick数据拟合成1分钟K线
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)

单周期策略

比如构建一个周期期双均策略,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