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...),用统一的 参数提供"最新值"或"整条序列"两种返回。
章节摘要:本章精读 CTA 策略的两大基石——
BarGenerator和ArrayManager,它们都在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 章。
阅读完本章,你应当能够:
(minute+1) % window == 0 触发条件为什么要求 window 整除 60。round_to 为什么用 Decimal(str(value)) 而非 Decimal(value)。CTA 策略的标配:Tick 喂给 BarGenerator 搓成 Bar,Bar 喂给 ArrayManager 算指标,指标驱动策略决策。
init 参数;update_tick 怎么跨分钟切片、volume 怎么增量累加;update_bar 分发到分钟/小时/日三个分支;generate 收尾推送残缺 Bar。
update_bar_minute_window 的 (minute+1)%window 触发;update_bar_hour_window 跨小时处理;update_bar_daily_window 日合成;为什么 N 分钟必须整除 60。
init 七条 numpy 数组;update_bar 的"左移+尾写"滚动;inited 判满;40+ 指标的统一 array: bool 双返回模式;round_to 的 Decimal 精度处理。
本章第 01 节(Tick→1分钟Bar) ──► 第 02 节(1分钟→N分钟/小时/日) │ ▼ 第 03 节(ArrayManager 算指标) │ ▼ 下一章(第 7 章 开平转换)
前置知识:
arr[:-1] = arr[1:])后续延伸: