MACD

增量式、因果技术分析文档

摘要

MACD 是 RTTA 对移动平均收敛/发散振荡器的多输出流式实现:快速 EMA 减慢速 EMA、该差值的信号 EMA,以及 MACD 减信号线所得柱状图。

更新 API

result = rtta.MACD(a=12, b=26, c=9, fillna=False).update(value)
参数 默认值 含义
a 12 快速 EMA 周期
b 26 慢速 EMA 周期
c 9 信号 EMA 周期
fillna False 若为 False,预热结束前返回 NaN

update(value) 返回的结果包含:

advance(value) 更新状态;last() 返回缓存的结果。

相关 API:MACDFix(固定 12/26 周期)、MACDExt(可选择 SMA/EMA 类型)。

工作原理

MACD 衡量价格短期指数平均与长期指数平均之间的距离。快速 EMA 高于慢速 EMA 时,中期动量为正;反之则为负。信号线是进一步平滑 MACD 的 EMA,因此:

三个内部 EMA 均以 fillna=True 运行,因此系数和种子会在每根 K 线上推进;外层 fillna 标志只控制预热不完整的样本是否以 NaN 返回。

递推公式

令 \(x_t\) 为输入序列,\(a,b,c\) 为三个周期。

\[F_t = \operatorname{EMA}_a(x_t),\qquad S_t = \operatorname{EMA}_b(x_t)\]
\[MACD_t = F_t - S_t\]
\[signal_t = \operatorname{EMA}_c(MACD_t)\]
\[hist_t = MACD_t - signal_t\]

fillna=False 时,只要样本计数仍小于 \(\max(a,b)+c\),三个字段就全部为 NaN;否则返回当前 MACD 三元结果。

EMA 的初始化与 \(\alpha=2/(n+1)\) 遵循 RTTA 的 EMA

实现说明

参考资料