1. RSI 指标简介
相对强弱指数(Relative Strength Index, RSI) 是由 J. Welles Wilder 在1978年提出的经典动量振荡指标,用于衡量价格变动的速度和幅度,判断市场的超买或超卖状态。
- 主要用途:
- 识别超买(RSI > 70)和超卖(RSI < 30)区域。
- 发现价格与RSI的背离(Divergence),预示趋势反转。
- 结合趋势指标(如均线)增强交易信号。
2. RSI 计算公式
RSI的计算基于一定周期(通常14天)内的平均涨幅和平均跌幅:
- 计算价格变化(U 和 D):

2. 计算平均涨幅(AU)和平均跌幅(AD):
- 简单移动平均(SMA)方式:
- 指数移动平均(EMA)方式(Wilder 原始方法):
- 其中 ( N ) 为周期(默认14)。
3. 计算RS(相对强度)和RSI:
3. 通达信(TDX)实现
在通达信软件中,RSI 指标可以通过内置函数 RSI
或自定义公式实现:
(1)内置函数调用
RSI(CLOSE, N); // N为周期(默认14)
(2)手动编写公式
N:=14;
LC:=REF(CLOSE,1);
U:=MAX(CLOSE-LC,0); // 上涨幅度
D:=MAX(LC-CLOSE,0); // 下跌幅度
AU:=SMA(U,N,1); // Wilder平滑(等同于EMA)
AD:=SMA(D,N,1);
RS:=AU/AD;
RSI:100*(RS/(1+RS));
参数调整:
- 可修改
N
(如6、14、21)适应不同交易周期。 - 结合均线或MACD过滤信号。
4. Python 实现
使用 pandas
和 numpy
计算RSI:
(1)基于SMA的计算
import pandas as pd
def calculate_rsi(data, window=14):
delta = data['Close'].diff()
gain = delta.where(delta > 0, 0)
loss = -delta.where(delta < 0, 0)
avg_gain = gain.rolling(window=window).mean()
avg_loss = loss.rolling(window=window).mean()
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))
return rsi
# 示例
data = pd.read_csv('stock_data.csv')
data['RSI'] = calculate_rsi(data)
print(data.tail())
(2)基于EMA(Wilder平滑)的计算
def calculate_rsi_wilder(data, window=14):
delta = data['Close'].diff()
gain = delta.where(delta > 0, 0)
loss = -delta.where(delta < 0, 0)
# Wilder平滑(近似EMA)
avg_gain = gain.ewm(alpha=1/window, adjust=False).mean()
avg_loss = loss.ewm(alpha=1/window, adjust=False).mean()
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))
return rsi
data['RSI_Wilder'] = calculate_rsi_wilder(data)
(3)可视化(Matplotlib)
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='Price')
plt.title('RSI Indicator')
plt.legend()
ax2 = plt.twinx()
ax2.plot(data['RSI'], color='orange', label='RSI (14)')
ax2.axhline(70, color='red', linestyle='--')
ax2.axhline(30, color='green', linestyle='--')
ax2.set_ylabel('RSI')
plt.show()
5. RSI 交易策略
(1)超买/超卖信号
- 卖出信号:RSI > 70(超买)
- 买入信号:RSI < 30(超卖)
(2)背离(Divergence)
- 看涨背离:价格创新低,RSI未创新低 → 可能反弹。
- 看跌背离:价格创新高,RSI未创新高 → 可能回调。
(3)结合均线
- 例如:RSI > 50 + 价格在20日均线上方 → 趋势偏多。
6. 注意事项
- 参数优化:短周期(如6)更敏感,长周期(如21)更稳定。
- 适用市场:震荡市效果较好,趋势市中可能长期超买/超卖。
- 避免单独使用:建议结合趋势指标(如MACD、均线)。
7. 总结
RSI 是经典且实用的技术指标,适用于股票、外汇、加密货币等多种市场。通过 通达信公式 和 Python代码 实现后,可进一步优化策略,提高交易胜率。建议回测验证后再用于实盘。