相对强弱指数(RSI)是技术分析领域最流行的指标之一。在本文中,我们将优化RSI指标,创建一个帮助判断趋势反转的领先信号。接下来,我们基于此创新(称为RSI²)创建交易策略并进行回溯检验。
相对强弱指数
RSI是最著名的动能指标之一,它有很多优势,可以应用到不同的资产。RSI的取值范围限制在0到100,这使它更易于解释。
当更多的交易员和基金经理关注RSI,就会有更多的人根据RSI的信号做出反应,从而反过来影响市场价格。当然,我们无法证明这个想法,这仅仅是一种直觉性解释,技术分析的基础之一就是它是自我实现的。
威尔斯怀尔德于1978年提出了该指标,回溯期使用14,取值范围是0-100,通常将30和70视为超卖区间和超买区间。RSI一般有4种解读方式:
- 价格进入超卖/超买区域,意味着会发生短期修正。
- 指标与价格发生背离意味着趋势会反转。
- 在指标上绘制趋势线以找到反应水平。
- 穿越中位线50意味着当前趋势可能改变。
RSI的计算方法非常简单。首先计算收盘价的一阶差分,然后用正差的移动平滑除以负差的移动平滑,最后计算相对强度并转换为0到100的取值。
上图显示了EURUSD的RSI(14)。
以下代码显示了如何计算指数移动平均和RSI:
def ema(Data, alpha, lookback, what, where):
# alpha is the smoothing factor
# window is the lookback period
# what is the column that needs to have its average calculated
# where is where to put the exponential moving average
alpha = alpha / (lookback + 1.0)
beta = 1 - alpha
# First value is a simple SMA
Data = ma(Data, lookback, what, where)
# Calculating first EMA
Data[lookback + 1, where] = (Data[lookback + 1, what] * alpha) + (Data[lookback, where] * beta)# Calculating the rest of EMA
for i in range(lookback + 2, len(Data)):
try:
Data[i, where] = (Data[i, what] * alpha) + (Data[i - 1, where] * beta)
except IndexError:
pass
return Datadef rsi(Data, rsi_lookback, what1, what2):
rsi_lookback = (rsi_lookback * 2) -