以前写过一篇RSI指标计算的文章,总觉得有些问题,今天再重新写一下。
RSI计算公式
- RSI = 100 – 100 / ( 1 + RS )
- RS = Relative Strength = AvgU / AvgD
- AvgU = 过去N个Bar的Up Move平均值
- AvgD = 过去N个Bar的Down Move平均值
- N = RSI的周期
- 有三种不同的求AvgU和AvgD的方法
计算RSI步骤
- 计算 Up Move 和 Down Move (U 和 D)
- 计算 Up Move 和 Down Move 的平均值 ( AvgU 和 AvgD )
- 计算相对强弱 (RS)
- 计算RSI
第一步:计算 Up Move 和 Down Move
下面以period = 14 为例。
首先计算每个Bar的变化 change = Close(t) - Close(t-1)
Close(t)表示当前Bar的收盘价,Close(t-1)表示前一个Bar的收盘价
那么
Up Move (U) = change > 0 ? change : 0
Down Move(D) = change < 0 ? ABS(change):0
第二步:计算 AvgU 和 AvgD
有三种不同的计算平均的方法,分别是 SMA ,EMA 和 Wilder的平滑方法,通常我们使用Wilder的方法,在计算DMI,ATR指标时也是使用的Wilder的平滑方法
Wilder的平滑方法和EMA的逻辑是一样的,只不过它的平滑因子是 α = 1 / N (N表示 RSI 周期)
那么周期14的
AvgU = 1/14 * U(t) + 13/14 * AvgU(t-1)
AvgD = 1/14 *D(t) + 13/14 * AvgD(t-1)
第1个AvgU的计算不适用上面的公式,还是按照简单移动平均(SMA)
第三步:计算RS
有了每个Bar的 AvgU 和 AvgD,计算相对强弱(RS)就简单了
RS = AvgU / AvgD
注意 AvgD 可能为0的情况
第四步:计算相对强弱指数(RSI)
最后,计算RSI,直接套用公式
RSI = 100 - 100 / (1 + RS)