MACD策略是如何计算的?

MACD计算公式、输入参数、验证方法及局限性说明。

MACD策略是如何计算的?

直接答案

MACD(“移动平均收敛发散”)是基于同一价格序列计算的两个指数移动平均线(EMA)得出的。基本步骤为:计算快EMA、计算慢EMA,两者相减得到MACD线,对MACD线再计算EMA得到信号线,最后用MACD减去信号线得到柱状图。

“MACD策略”通常指将这些MACD数值作为规则逻辑的输入(例如,比较MACD线与其信号线,或分析柱状图变化)。其核心计算即上述指标数学公式。

机制与定义

1) 选择输入价格序列

首先,确定计算中的“价格”含义。常见选择包括收盘价,有时也使用平均价格。选定输入序列后,必须在整个MACD计算中一致地使用该序列。

任何示例的前提假设:所有计算使用固定频率采样的单一价格时间序列(例如,每根K线的收盘价)。若数据频率或序列改变,MACD值也会随之改变。

2) 计算快慢EMA

设:

  • n_fast = 快EMA周期(参数)
  • n_slow = 慢EMA周期(参数)
  • P_t = 时间t的选定价格

EMA是一种加权移动平均,赋予近期数据更高权重。在多数定义中,EMA可递归表示为:

  • EMA_fast(t) = EMA_fast(t-1) + α_fast * (P_t - EMA_fast(t-1))
  • EMA_slow(t) = EMA_slow(t-1) + α_slow * (P_t - EMA_slow(t-1))

其中平滑因子α_fastα_slow取决于周期长度:

  • α_fast = 2 / (n_fast + 1)
  • α_slow = 2 / (n_slow + 1)

初始化说明(重要限制):EMA需要初始值。不同平台可能采用不同初始化方式(例如,从首个价格开始,或用简单移动平均作为初始EMA)。这意味着早期MACD值在不同实现中可能不完全一致。

3) 计算MACD线

时间t的MACD线为快慢EMA之差:

  • MACD(t) = EMA_fast(t) - EMA_slow(t)

该差值可正可负,其大小取决于价格尺度和所选EMA周期。

4) 计算信号线(MACD的EMA)

n_signal为信号EMA周期(参数)。信号线是对MACD序列应用EMA:

  • Signal(t) = Signal(t-1) + α_signal * (MACD(t) - Signal(t-1))
  • α_signal = 2 / (n_signal + 1)

同样,信号EMA也需要初始化方法。

5) 计算柱状图

柱状图突出显示MACD线与其信号线之间的距离:

  • Histogram(t) = MACD(t) - Signal(t)

若柱状图为正,MACD在信号线上方;若为负,则在下方。

参数总结

MACD计算依赖三个主要周期:

  • n_fast(快EMA周期)
  • n_slow(慢EMA周期)
  • n_signal(信号EMA周期)

还依赖于:

  • 所选价格序列P_t
  • EMA在实现中的初始化方式
  • 数据的采样频率

可验证的证据或示例

以下为使用简化假设的通用数值示例,可供复现。

假设:

  • 使用时间t = 1..6的短价格序列
  • n_fast = 3n_slow = 6n_signal = 2
  • 使用EMA递归公式并选择一种初始化方式(需一致使用)

选取输入价格序列(示例值):

  • P_1, P_2, P_3, P_4, P_5, P_6

步骤A:计算α_fast = 2/(3+1) = 0.5α_slow = 2/(6+1) ≈ 0.2857

步骤B:初始值设定。

  • 一种方式为EMA_fast(1) = P_1EMA_slow(1) = P_1

步骤C:对t = 2..6迭代:

  • EMA_fast(t) = EMA_fast(t-1) + 0.5*(P_t - EMA_fast(t-1))
  • EMA_slow(t) = EMA_slow(t-1) + 0.2857*(P_t - EMA_slow(t-1))

步骤D:MACD线:

  • MACD(t) = EMA_fast(t) - EMA_slow(t)(对每个t

步骤E:信号线:

  • α_signal = 2/(2+1) = 2/3 ≈ 0.6667
  • Signal(1) = MACD(1)(或其他一致初始化),然后迭代:
    • Signal(t) = Signal(t-1) + 0.6667*(MACD(t) - Signal(t-1))

步骤F:柱状图:

  • Histogram(t) = MACD(t) - Signal(t)

计算时应注意:

  • 改变n_fastn_slown_signal会影响MACD和信号线的平滑度与滞后性。
  • 柱状图非独立序列,而是由MACD与信号线数学推导得出。

若计算结果与图表工具不符,最常见原因为EMA初始化方式、价格字段(收盘价vs典型价)或参数解释不同。

局限性与风险(实质性失效模式)

1) EMA初始化差异

由于EMA需要初始值,不同软件在序列初期可能产生略有不同的MACD值。这可能传递至信号EMA和柱状图,尤其在短数据集上更明显。

2) 参数敏感性

MACD直接依赖n_fastn_slown_signal。微小变化可能改变:

  • 振幅(数值大小)
  • 时机(MACD响应速度)
  • 转折点频率

因此,若在不同参数集间比较MACD值,结果可能产生误导。

3) 价格序列与时间频率选择

MACD基于特定输入序列P_t和采样间隔计算。若使用不同价格定义或时间框架,结果指标值将不匹配。

4) 使用MACD制定规则无法消除不确定性

即使指标计算正确,将其转化为决策仍引入不确定性。实盘结果受多种MACD公式外因素影响(如执行质量、市场状况、操作成本)。历史关系不保证未来结果。

验证与后续检查

为独立验证你(或服务商)是否正确计算MACD,可执行以下步骤,无需依赖交易建议:

  1. 确认确切的输入价格序列(例如,收盘价)和数据频率。
  2. 确认快EMA、慢EMA和信号EMA的参数值。
  3. 使用你认为实现所采用的相同初始化方法重新计算EMA。
  4. 计算MACD = EMA_fast − EMA_slow,再计算SignalMACD的EMA,最后计算Histogram = MACD − Signal

在任何“MACD策略”讨论中值得进一步澄清的问题:在MACD值之上应用了何种规则逻辑(例如,哪些比较或柱状图条件)?计算在给定输入下是确定性的,而策略层决定如何解释这些数值。

外汇和差价合约交易具有重大风险。FoxiForex的信息仅用于教育,不构成个人财务建议。赞助内容会被清楚标注。