VeighNa · 第 6 章 BarGenerator 与 ArrayManager


文档摘要

VeighNa · 第 6 章 BarGenerator 与 ArrayManager 章节摘要:本章精读 CTA 策略的两大基石—— 和 ,它们都在 。BarGenerator 解决"怎么把高频 Tick 搓成低频 K 线":它接收逐笔 Tick,跨分钟切片合成 1 分钟 Bar,再把 1 分钟 Bar 合成 N 分钟/N 小时/日 Bar,是国内期货 CTA 的标配。ArrayManager 解决"怎么高效计算技术指标":它维护七条 numpy 滚动数组(OHLCV+turnover+openinterest),封装了 40+ talib 指标(sma/ema/macd/rsi/kdj/boll/atr...),用统一的 参数提供"最新值"或"整条序列"两种返回。

VeighNa · 第 6 章 BarGenerator 与 ArrayManager

章节摘要:本章精读 CTA 策略的两大基石——BarGeneratorArrayManager,它们都在 vnpy/trader/utility.py。BarGenerator 解决"怎么把高频 Tick 搓成低频 K 线":它接收逐笔 Tick,跨分钟切片合成 1 分钟 Bar,再把 1 分钟 Bar 合成 N 分钟/N 小时/日 Bar,是国内期货 CTA 的标配。ArrayManager 解决"怎么高效计算技术指标":它维护七条 numpy 滚动数组(OHLCV+turnover+open_interest),封装了 40+ talib 指标(sma/ema/macd/rsi/kdj/boll/atr...),用统一的 array: bool 参数提供"最新值"或"整条序列"两种返回。本章还会讲 round_to 用 Decimal 处理价格取整的精度技巧。本章共 3 节,前置依赖为第 1~3 章。

学习目标

阅读完本章,你应当能够:

  1. 逐行读懂 BarGenerator 的 update_tick(Tick→分钟 Bar)和 update_bar(分钟→N分钟/小时/日)。
  2. 说清"跨分钟判定"和"volume 增量累加"两个关键逻辑。
  3. 理解 N 分钟合成的 (minute+1) % window == 0 触发条件为什么要求 window 整除 60。
  4. 逐行读懂 ArrayManager 的滚动数组写入与 40+ 指标封装。
  5. 解释 round_to 为什么用 Decimal(str(value)) 而非 Decimal(value)

核心概念速览

CTA 策略的标配:Tick 喂给 BarGenerator 搓成 Bar,Bar 喂给 ArrayManager 算指标,指标驱动策略决策。

子章节导航

01 BarGenerator:Tick 到 K 线的合成器

init 参数;update_tick 怎么跨分钟切片、volume 怎么增量累加;update_bar 分发到分钟/小时/日三个分支;generate 收尾推送残缺 Bar。

02 BarGenerator:N 分钟与小时日的窗口合成

update_bar_minute_window 的 (minute+1)%window 触发;update_bar_hour_window 跨小时处理;update_bar_daily_window 日合成;为什么 N 分钟必须整除 60。

03 ArrayManager:滚动数组与 talib 指标封装

init 七条 numpy 数组;update_bar 的"左移+尾写"滚动;inited 判满;40+ 指标的统一 array: bool 双返回模式;round_to 的 Decimal 精度处理。

子章节之间的逻辑关系

本章第 01 节(Tick→1分钟Bar) ──► 第 02 节(1分钟→N分钟/小时/日) │ ▼ 第 03 节(ArrayManager 算指标) │ ▼ 下一章(第 7 章 开平转换)

前置知识与后续延伸

前置知识:

  • 第 1~3 章(理解 TickData/BarData 数据结构)
  • numpy 数组切片基础(arr[:-1] = arr[1:])
  • 技术指标基本概念(均线/MACD/RSI,不必熟练)

后续延伸:

  • 第 7 章讲开仓后怎么处理平今平昨
  • 第 8 章讲用 ArrayManager 跑策略参数优化
  • vnpy_ctastrategy 的 CtaTemplate 会用这两个工具(外部包,本教程不展开)

发布者: 作者: 灏天文库 转发
评论区 (0)
U