RSI指标计算(修正版)-程序旅途

以前写过一篇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步骤

  1. 计算 Up Move 和 Down Move (U 和 D)
  2. 计算 Up Move 和 Down Move 的平均值 ( AvgU 和 AvgD )
  3. 计算相对强弱 (RS)
  4. 计算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)