RSI 策略是如何计算的
直接答案
RSI(相对强弱指数)通过价格的时间序列进行计算,将每个周期的涨跌转化为两个运行平均值——在选定的回溯窗口内的平均涨幅和平均跌幅。这两个平均值被转换为相对强度比率,然后映射为 0 到 100 之间的振荡器值。
机制与定义
RSI 试图衡量什么
RSI 旨在表达近期价格上涨相对于近期价格下跌的强度。为此,它需要逐周期的价格变化(例如,每个周期的收盘价到收盘价变化)。每个周期的变化被拆分为:
- 涨幅:相对于前一周期的上涨,若变化为负则为 0。
- 跌幅:相对于前一周期的下跌,以正数表示,若变化为正则为 0。
核心要素(输入)
要一致地计算 RSI,你必须具备:
- 一个定义频率的价格序列(例如,每根K线一个值)。RSI 不是“魔法数字”;它是根据你提供的序列计算得出的。
- 回溯窗口长度 (N),在许多图表环境中通常为 14 个周期。
- 平均涨幅和平均跌幅的平滑方法(这是不同 RSI 实现之间差异的主要来源)。
- 初始平均值的约定(初始化),因为最早的 RSI 值取决于平均值的起始方式。
广泛使用的 RSI 公式结构
RSI 使用以下中间值:
- 平均涨幅 在回溯窗口内
- 平均跌幅 在回溯窗口内
- 相对强度 (RS) = (平均涨幅)/(平均跌幅)
然后 RSI 被映射为:
- RSI = 100 − (100 / (1 + RS))
这种结构意味着当平均涨幅远超平均跌幅时,RSI 值较高;当平均跌幅远超平均涨幅时,RSI 值较低。
Wilder 平滑法(常见变体)
许多平台使用 Wilder 平滑法来逐周期更新平均值。在这种方法中,如果你已有前一周期的平均涨幅和平均跌幅,则使用当前涨幅/跌幅和前一平均值来更新它们。
总体而言,更新遵循以下模式:
- 新的平均涨幅是 前一平均涨幅 和 当前涨幅 的混合,权重由回溯窗口决定。
- 新的平均跌幅是 前一平均跌幅 和 当前跌幅 的混合,权重由回溯窗口决定。
具体的算术更新取决于实现方式,但核心思想相同:它对涨幅和跌幅进行平滑处理,而不是每一步都从头重新计算简单平均值。
“RSI 策略”与计算的关系
“RSI 策略”可以指任何使用 RSI 值的规则集(例如,基于 RSI 高于或低于某个阈值的条件,或 RSI 穿越某一水平)。重要的是要区分:
- 计算:RSI 从价格数据、N 值以及平滑/初始化选择中确定性地计算得出。
- 策略逻辑:任何交易规则对 RSI 值进行解释。相同的 RSI 计算可用于多种不同的决策规则。
如果你想独立验证 RSI,请专注于计算步骤,并确保你匹配数据源或软件所使用的精确 RSI 设置。
证据或示例(含明确假设)
示例设置与假设
由于不同的 RSI 实现可能有所不同,本示例明确说明其假设:
- 我们使用 逐周期的收盘价到收盘价价格序列。
- 我们选择 回溯窗口 N = 14。
- 我们使用 概念上与 Wilder 风格平滑一致的平滑方法。
- 我们使用以下方式计算涨跌:涨幅 = max(变化, 0),跌幅 = max(-变化, 0)。
可复现的逐步结构
- 计算变化:change[t] = price[t] − price[t−1]。
- 拆分为涨幅和跌幅:
- gain[t] = max(change[t], 0)
- loss[t] = max(−change[t], 0)
- 在有足够的周期覆盖 N 时初始化平均涨幅和平均跌幅。
- 一种常见的初始化方法是对前 N 个涨幅和前 N 个跌幅取简单平均。
- 使用所选平滑方法在每个新周期更新平均值。
- 计算 RS:RS = averageGain / averageLoss。
- 转换为 RSI:RSI = 100 − (100 / (1 + RS))。
需检查的关键边界情况
如果平均跌幅变为 0,则 RS 在不同实现中可能未定义或趋于无穷大。许多 RSI 实现通过将 RSI 值设为极值来处理这种情况(例如,当平均窗口内无损失时,RSI 为 100)。当你验证 RSI 输出时,请确认你的工具如何处理平均跌幅为零的情况(同样,当平均涨幅为 0 时会发生什么)。
限制与风险(可能出现的问题)
1) 初始化与早期值
序列起始处的 RSI 值取决于初始化。不同平台可能:
- 对第一个 averageGain/averageLoss 使用简单平均,
- 使用不同的预热方法,
- 或选择不同的方式初始化平滑过程。
这意味着即使后期值趋同,早期 RSI 值也可能不同。
2) 变体差异(平滑与输入定义)
即使使用相同的 N,RSI 也可能因实现方式不同而有所差异,包括:
- 平滑方法(Wilder 风格 vs 简单平均 vs 其他方法),
- 输入是收盘价、典型价格还是其他价格字段,
- 周期的定义方式(时间框架对齐、缺失K线)。
因此,“RSI 值”只有在指定了确切的计算变体和确切的输入序列后才明确定义。
3) 数据依赖性与非预测性
RSI 是历史价格变化的转换结果。历史转换不能保证 RSI 未来的行为表现,相同的 RSI 值也不意味着单一结果。此外,成本和执行细节(不属于 RSI 计算的一部分)可能主导任何实际结果。
4) 验证可能因设置不匹配而失败
一种常见错误是假设默认 RSI 设置符合你需要复现的内容。要独立验证,你必须匹配:
- 确切的 N 值,
- 平滑/平均方法和初始化方式,
- 使用的价格序列,
- 以及边界情况的处理方式。
验证与下一个问题
如何独立验证你的 RSI 计算
要验证任何系统的 RSI 值,请使用相同的输入和设置重新计算 RSI:
- 导出或重建工具所用的相同价格序列。
- 精确匹配 N 值。
- 匹配平滑/平均方法和初始化方式。
- 重新计算涨跌拆分,然后计算平均涨幅/平均跌幅,再计算 RS,最后计算 RSI 映射。
- 与工具的 RSI 输出进行多点比较,尤其是在预热期之后。
如果数值不一致,原因通常是平滑变体、初始化或输入价格定义存在差异。