> ## Content Index
> Fetch the complete content index at: https://www.gogao.top/llms.txt
> Use this file to discover other available public pages before exploring further.

# VNPY入门K线合成器BarGenerator
- URL: https://www.gogao.top/vnpyru-men-kxian-he-cheng-qi-bargenerator/
- Published: 2025-09-17T01:38:17.000Z
- Updated: 2025-09-17T05:50:37.000Z
- Description: VNPY学习入门篇，工具类BarGenerator。
- Author: 爱德姆
- Tags: 投资, #Import 2026-09-23 11:35

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金叉买，死叉卖。

```python
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

```

#### 多周期策略

如果需要通过多个周期做出入场决策，就可以参考以下框架。

```python
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
```