RSI 范围的计算方法(公式、输入和验证)
在数学之前先理解概念
“RSI 范围”是一种表达相对强弱指数(RSI)当前值相对于其近期极值位置的方法。它不是仅将 RSI 作为一个单一数值使用,而是将当前 RSI 值映射到其近期最小值和最大值所形成的区间内。
要计算 RSI 范围,你需要:
- 使用选定的回看长度(即 RSI 周期)从价格数据中计算 RSI;
- 再取第二个回看窗口(即 RSI 范围窗口),找出该窗口内的 RSI 最小值和最大值;
- 将当前 RSI 转换为该 [最小值, 最大值] 区间内的归一化位置。
这保证了机制的一致性;只有你选择的参数会影响其行为。
机制:输入、参数和公式
第一步:从价格数据计算 RSI
RSI 通常使用周期长度 (n)(通常为 14)来定义。使用收盘价,RSI 基于该周期内的平均涨幅和平均跌幅。
一种常见的表达方式是:
- 计算每一步的涨幅 (G) 和跌幅 (L)(当价格上涨时 (G) 为正;价格下跌时 (L) 为正);
- 计算 RSI 周期 (n) 内的平均涨幅 (\overline{G}) 和平均跌幅 (\overline{L});
- 然后: [ \text{RSI} = 100 \times \frac{\overline{G}}{\overline{G} + \overline{L}} ]
如果你的实现使用了不同的 RSI 平均方法(例如 Wilder 式平滑 vs. 简单平均),计算出的 RSI 序列可能不同,因此得出的 RSI 范围也会不同。
第二步:定义 RSI 范围窗口
选择第二个参数:(m),即 RSI 范围窗口长度。在每个时间点 (t),你回看 (m) 个周期并计算:
- (\text{RSI}{\min} = \min(\text{RSI}{t-m+1}, \dots, \text{RSI}_t))
- (\text{RSI}{\max} = \max(\text{RSI}{t-m+1}, \dots, \text{RSI}_t))
第三步:将当前 RSI 转换为归一化的“范围位置”
典型的 RSI 范围计算是对当前 RSI 进行最小-最大归一化: [ \text{RSI Range}t = 100 \times \frac{\text{RSI}t - \text{RSI}{\min}}{\text{RSI}{\max} - \text{RSI}_{\min}} ]
该值的解释如下:
- 如果 (\text{RSI}_t) 等于回看窗口内的最小 RSI 值,则 RSI 范围为 0;
- 如果 (\text{RSI}_t) 等于窗口内的最大 RSI 值,则 RSI 范围为 100;
- 介于最小值和最大值之间的值将 RSI 按比例置于该区间内。
所需数据和假设
要计算数值,你必须具备:
- 一致的价格序列(通常为收盘价);
- 明确的时间步长(例如日线或小时线);
- 两个参数:(n)(RSI 周期)和 (m)(RSI 范围窗口);
- 以及一致的 RSI 方法(平滑/平均规则)。
如果这些要素在两个实现之间存在差异,即使面对相同的市场,RSI 范围序列也可能不同。
证据或示例:可自行验证的检查
以下是使用假设 RSI 值进行的简单、面向验证的示例。
使用 RSI 值的示例(跳过 RSI 计算)
假设在某个时间点 (t),你已计算出过去 (m=5) 个周期的 RSI 值:
- (\text{RSI} = [42,\ 46,\ 40,\ 48,\ 45])
那么:
- (\text{RSI}_{\min} = 40)
- (\text{RSI}_{\max} = 48)
- (\text{RSI}_t = 45)
应用公式: [ \text{RSI Range}_t = 100 \times \frac{45 - 40}{48 - 40} = 100 \times \frac{5}{8} = 62.5 ]
这告诉你如何在不猜测的情况下验证你的实现:当 RSI 处于最小值和最大值中间时,RSI 范围将落在 0 和 100 的正中间。
使用价格的示例(你仍需确保的事项)
如果你从价格开始,你的自我检查应确认:
- 你的 RSI 输出使用了相同的 RSI 平均方法和周期 (n);
- RSI 范围窗口 (m) 应用于 RSI 序列(而非价格);
- 你的最小值和最大值是基于恰好 (m) 个 RSI 观测值计算的。
一个常见的错误是意外使用了 (m) 个周期的价格极值(或使用了偏移一个周期的窗口),这会改变 (\text{RSI}{\min}) 和 (\text{RSI}{\max}),从而改变归一化值。
局限性和风险:可能出现的实质性问题
1) 除以零(或接近零的范围)
如果 (\text{RSI}{\max} = \text{RSI}{\min}),则分母 ((\text{RSI}{\max} - \text{RSI}{\min})) 变为零,公式无定义。
这种情况可能发生在整个回看窗口内 RSI 平坦,或由于舍入、数据问题或产生重复值的实现导致计算出的 RSI 值相同时。
实际影响:你的软件必须定义在这种情况下应如何处理(例如返回默认值或标记为未定义)。不同的选择会导致不同的绘图结果。
2) 对参数选择的敏感性
RSI 范围的行为强烈依赖于 (n)(RSI 周期)和 (m)(范围窗口)。较大的 (m) 使用更早的 RSI 极值,这会使归一化更稳定但响应性降低;较小的 (m) 使其更敏感。
因此,即使面对相同的价格序列,如果双方的参数或 RSI 方法不同,计算出的 RSI 范围值也可能不同。
3) RSI 平均方法的实现差异
实际上,RSI 并非唯一的计算方式。常见的 RSI 实现可能在以下方面存在差异:
- 是否使用 Wilder 式平滑;
- 使用简单移动平均;
- 或其他平均约定。
即使两个实现使用相同的 (n),RSI 时间序列也可能略有不同,从而导致导出的 RSI 范围发生偏移。
4) 数据质量、时间步长和公司行为
RSI 和 RSI 范围的可靠性取决于其底层输入序列。实际问题包括:
- 缺失的K线;
- 时区或交易时间不一致;
- 数据源差异。
这些问题可能导致人为的 RSI 波动,从而改变 (\text{RSI}{\min}) 和 (\text{RSI}{\max})。
验证和下一个应提出的问题
如何独立验证你的 RSI 范围
要验证一个计算出的 RSI 范围序列:
- 以完全相同的方式重新计算 RSI(相同的周期 (n),相同的平均方法);
- 对于选定的时间点 (t),列出最近的 (m) 个 RSI 值,并计算 (\text{RSI}{\min}) 和 (\text{RSI}{\max});
- 将 (\text{RSI}t)、(\text{RSI}{\min}) 和 (\text{RSI}_{\max}) 代入归一化公式;
- 确认结果与时间点 (t) 的指标输出一致。