Skip to content

计算 MACD

MACD(12/26/9 默认)via pandas-ta。返回 macd 线、signal 线、histogram。Edge-first 消费上游 close 序列。连到多个 Price Factor 时按标的 fan out 为 by_symbol

做什么(One-liner)

MACD 三元组(line / signal / histogram),Appel 12/26/9 default —— 基于链式 EMA 的趋势/动量交叉 transform。

输入

  • fast(number,可选)—— Fast EMA 周期,默认 12。
  • slow(number,可选)—— Slow EMA 周期,默认 26。
  • signal(number,可选)—— Signal 线 EMA 周期,默认 9。

输出

  • macd —— EMA(fast) - EMA(slow)
  • signal —— MACD 线的 EMA。
  • histogram —— MACD - signal
  • by_symbol —— 连多个 Price Factor 时的 per-ticker 映射。

怎么用

  1. 上游 price_factor 提供 close 序列。
  2. 可选:覆盖 fast / slow / signal 周期。
  3. 查看 macd / signal / histogram 数组。

核心公式

MACD = EMA(close, 12) - EMA(close, 26)
signal = EMA(MACD, 9)
histogram = MACD - signal

pandas-ta 返回 columns 是 [MACD_12_26_9, MACDh_12_26_9, MACDs_12_26_9] —— MACD, histogram, signal。之前的 BUG-GOLDEN-002 把 index 1 和 2 搞反;golden test 捕获,现已 fix。

假设与适用场景

假设:Appel defaults 12/26/9 + EMA adjust=False + pandas-ta 1e-10 等价。

适用:trend / divergence / crossover signal;equities、FX、crypto、commodities,daily / weekly 频率。

不适用:intraday tick、n < 35、横盘。

已知局限

  1. 滞后指标 —— 剧烈反转时偏晚。
  2. 默认 12/26/9 是惯例,未按资产调参。
  3. pandas-ta 版本漂移风险(修复前 column ordering 曾 swap;BUG-GOLDEN-002)。

参考文献

Appel (1979) 原始 MACD;Murphy (1999) 标准解释。

Golden Test

tests/golden/fixtures/tier1/compute_macd/ —— 容差 1e-10 absolute,pandas-ta 直接调用 + 手算 EMA 链 cross-check,最后验证 2026-05-25,状态 passing。

Changelog

  • 1.0.0 (2026-05-25) —— 作为 Layer-1 规范 transform 激活;并入已弃用 Layer-0 compute_macd 卡的治理字段(含 BUG-GOLDEN-002 column-ordering 历史)。

Verifiable intelligence for the decisions that demand scrutiny.