股票Relative Strength Index(相对强弱指数, 简称RSI)是一种用于衡量股票价格动量的技术分析指标。它通过比较一段时间内股票价格上涨和下跌的幅度来确定股票是否超买或超卖。RSI的取值范围在0到100之间, 通常认为当RSI值超过70时, 股票被认为是超买状态, 可能会出现价格回调; 当RSI值低于30时, 股票被认为是超卖状态, 可能会出现价格反弹。
RSI的计算方法如下:
计算价格变化:首先计算出每个交易日的价格变化, 即当日收盘价与前一日收盘价之差。
计算平均上涨和平均下跌:分别计算出一段时间内(通常为14天)价格上涨的平均值和价格下跌的平均值。
计算相对强度:用平均上涨除以平均下跌, 得到相对强度。
计算RSI:将相对强度代入RSI公式,即100减去100除以(1加相对强度)。
RSI的计算公式如下:
RSI = 100 - (100 / (1 + RS))
其中, RS是相对强度, 等于平均上涨除以平均下跌。
RSI指标可以帮助投资者判断股票价格的走势, 识别潜在的买入和卖出信号。然而, RSI指标也有其局限性, 例如在市场趋势不明显时, RSI指标可能会发出错误的信号。因此, 投资者在使用RSI指标时, 应该结合其他技术分析工具和基本面分析, 以做出更准确的投资决策。
def stock_rsi(stock_data, name, window=14):
stock_data.set_index('trade_date', inplace=True)
delta = stock_data[name].diff()
gain = delta.where(delta > 0, 0) # Gain
loss = -delta.where(delta < 0, 0) # Loss
avg_gain = gain.rolling(window).mean()
avg_loss = loss.rolling(window).mean()
rs = avg_gain / avg_loss # Relative Strength
rsi = 100 - (100 / (1 + rs)) # Relative Strength Index
return rsi
画出RSI:
def plot_stock_rsi(stock_data):
rsi = stock_rsi(stock_data)
stock_data['trade_date'] = pd.to_datetime(stock_data['trade_date'], format='%Y%m%d')
plt.plot(stock_data['trade_date'], rsi, label='RSI')
plt.axhline(y=30, color='r', linestyle='--', label='Overbought')
plt.axhline(y=70, color='g', linestyle='--', label='Oversold')
plt.legend()
plt.title('RSI')
plt.show()