RSI 和 MACD 的计算方法

RSI 和 MACD 的计算公式、参数及数据要求。

RSI 和 MACD 的计算方法

直接答案

RSI(相对强弱指数)和 MACD(指数平滑异同移动平均线)是根据历史价格序列和一组少量设置计算得出的。

  • RSI 通过选定回溯周期内的平均涨幅和平均跌幅,将近期价格动量转换为 0–100 的尺度。
  • MACD 使用指数移动平均线(EMA)来衡量快线与慢线趋势估计值之间的差异,然后可选择性地用另一个 EMA 对该差异进行平滑处理。

要解释或验证任一指标,你只需要:(1) 一个按时间排序的价格列表,(2) 指标的参数(如回溯长度或 EMA 周期),以及 (3) 精确的计算方法(特别是 RSI 的平均方式)。由于计算方法依赖于这些选择,不同图表工具或不同设置可能导致结果不同。

机制与定义

RSI:动量输入的定义

RSI 从连续数据点之间的价格变化开始计算。

  1. 计算变化量:
    • (\Delta_t = \text{Price}t - \text{Price}{t-1})
  2. 将变化量拆分为涨幅跌幅
    • (\text{Gain}_t = \max(\Delta_t, 0))
    • (\text{Loss}_t = \max(-\Delta_t, 0))
  3. 在选定长度为 (N) 的回溯窗口内,计算平均涨幅和平均跌幅。

一种常见的 RSI 计算方法使用 Wilder 式平滑法。使用 Wilder 平滑时,首先用前 (N) 个涨幅和跌幅计算初始平均值,然后递归更新:

  • 初始值(用于第一个 RSI 值):
    • (\text{AvgGain}N = \frac{1}{N}\sum{i=1}^{N}\text{Gain}_i)
    • (\text{AvgLoss}N = \frac{1}{N}\sum{i=1}^{N}\text{Loss}_i)
  • 更新(对于 (t > N)):
    • (\text{AvgGain}t = \frac{(\text{AvgGain}{t-1}\cdot (N-1)) + \text{Gain}_t}{N})
    • (\text{AvgLoss}t = \frac{(\text{AvgLoss}{t-1}\cdot (N-1)) + \text{Loss}_t}{N})

然后计算相对强度比率:

  • (\text{RS}_t = \frac{\text{AvgGain}_t}{\text{AvgLoss}_t})

最后转换为 RSI 尺度:

  • (\text{RSI}_t = 100 - \frac{100}{1 + \text{RS}_t})

重要边界情况:如果 (\text{AvgLoss}_t = 0),则直接除法会导致 (\text{RS}_t) 未定义。许多实现方式在这种情况下将 RSI 视为趋近于 100(当平均跌幅在平均窗口内实际为零时)。在验证结果时,必须与所用数据工具采用的惯例保持一致。

MACD:EMA 差值的定义

MACD 基于指数移动平均线(EMA),这是一种加权移动平均线,对近期价格反应更快。

核心输入包括:

  • 一个快线 EMA 周期 (a)
  • 一个慢线 EMA 周期 (b)
  • 一个信号线周期 (c)(通常在许多默认设置中 (c) 为 9,但应确认你的具体设置)
  1. 在选定的价格序列上计算快线和慢线 EMA:

    • (\text{EMA}_{a}(t))
    • (\text{EMA}_{b}(t))
  2. 将 MACD 线计算为两者之差:

    • (\text{MACD}(t) = \text{EMA}{a}(t) - \text{EMA}{b}(t))
  3. 可选择性地将信号线计算为 MACD 线的 EMA:

    • (\text{Signal}(t) = \text{EMA}_{c} \big(\text{MACD}(t)\big))
  4. 通常还会显示直方图(取决于图表惯例):

    • (\text{Histogram}(t) = \text{MACD}(t) - \text{Signal}(t))

验证的关键细节:EMA 的初始化方式以及实现中使用的精确公式可能有所不同(例如,第一个 EMA 值的初始化方式)。如果你计算的 MACD 与图表不一致,请检查双方是否使用了相同的 EMA 初始化方式和周期。

证据或示例(可自检)

以下是一些简单且可验证的方法,可用于你已有的任何固定历史价格序列来检验你的理解。

RSI 示例设置

本示例的假设:

  • 你有价格数据 (\text{Price}_0, \text{Price}_1, …)
  • 你选择回溯周期 (N)
  • 你使用上述 Wilder 式平滑方法

你可以复现的步骤:

  1. 为每一步构建 (\Delta_t)。
  2. 转换为 (\text{Gain}_t) 和 (\text{Loss}_t)。
  3. 对于第一个 RSI 值,对前 (N) 个涨幅和跌幅取平均。
  4. 对后续点,使用 Wilder 递推公式更新平均值。
  5. 应用公式 (\text{RSI}_t = 100 - \frac{100}{1 + \text{AvgGain}_t/\text{AvgLoss}_t})。

一个可靠的自测方法是:从头开始在相同输入上重新计算 RSI,并在相同时间索引处比较数值。如果你只想验证计算机制,可重点关注早期 RSI 输出,因为初始平均值在此阶段影响最大。

MACD 示例设置

假设:

  • 你有一个按时间排序的价格序列
  • 你选择周期 (a)(快线)、(b)(慢线)和 (c)(信号线)
  • 你对两个 EMA 和信号 EMA 使用相同的 EMA 方法(包括初始化)

步骤:

  1. 在整个序列上计算 (\text{EMA}{a}(t)) 和 (\text{EMA}{b}(t))。
  2. 相减得到 (\text{MACD}(t))。
  3. 将 (\text{Signal}(t)) 计算为 (\text{MACD}(t)) 的 EMA。
  4. 如有必要,计算 (\text{Histogram}(t) = \text{MACD}(t) - \text{Signal}(t))。

一个自检方法是:验证你的 MACD 线是否在每个索引处等于快线 EMA 减去慢线 EMA。如果 MACD 线匹配但信号线不匹配,差异几乎总是由于信号周期或 EMA 初始化不一致所致。

局限性与失效模式

1) 不同“标准”设置产生不同数值

RSI 和 MACD 的输出都依赖于参数(RSI 回溯周期 (N);MACD 的 EMA 周期 (a)、(b),以及可选的信号周期 (c))。即使用户认为使用的是相同指标,不同平台的设置也可能不同。

2) 数据对齐和缺失点改变计算结果

这些指标基于连续数据点构建。如果你的输入序列存在缺失K线、不规则时间戳,或“价格”定义不同(例如收盘价与其他衍生值),RSI 的涨跌幅和 MACD 的 EMA 序列都可能发生变化。

3) EMA 和 RSI 平均初始化影响早期数值

RSI 的首个计算值依赖于前 (N) 个周期的初始平均。MACD 的早期数值取决于 EMA 在算法“锁定”前的初始化方式。这可能导致图表历史起始部分出现明显差异。

4) 边界情况可能导致未定义比率

在 RSI 中,当平均跌幅为零(或实际为零)时,(\text{RS}) 会出现除零错误。不同实现方式处理方式不同(例如,将 RSI 视为 100)。如果你独立验证,必须采用相同的边界情况处理惯例。

5) 指标并非结果的独立保证

RSI 和 MACD 描述的是价格和动量中的模式(经数学转换),而非未来行为的保证。

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