什么是RSI
RSI策略是一种围绕 相对强弱指数 构建的、旨在识别市场“超买”和“超卖”状态,从而预测潜在价格反转点的技术分析策略。其核心理念是:价格的上涨速度和幅度(动量)不会无限持续,当上涨或下跌过于极端时,市场有向均值回归的趋势。
它的核心指标
RSI = 100 - [100/(1+RS)] RS = 一定周期内(14天) 上涨日平均涨幅/下跌日平均跌幅
最经典的应用方式
超卖与买入信号:当RSI向下穿越30(或更严格的20)水平时,表明市场下跌动量可能已过度释放,进入“超卖”状态。此时,交易者会寻找买入机会(例如,当RSI从30下方重新回升至30上方时确认买入)。 超买与卖出信号:当RSI向上穿越70(或更严格的80)水平时,表明市场上涨可能过热,进入“超买”状态。此时,交易者会寻找卖出或做空机会(例如,当RSI从70上方回落至70下方时确认卖出)。 中轴(50线):常被视作多空分水岭。RSI在50上方表明多头占优,在50下方表明空头占优。从下向上突破50可视为转强信号,反之则为转弱信号。
高阶的应用方式(背离交易)
看涨背离:价格形成更低的低点,但RSI却形成更高的低点。这暗示下跌动量正在减弱,是潜在的趋势反转上涨信号。 看跌背离:价格形成更高的高点,但RSI却形成更低的高点。这暗示上涨动量正在衰退,是潜在的趋势反转下跌信号。
如何构建RSI
class RSIStrategy(bt.Strategy):
params = (('period', 14), ('oversold', 30), ('overbought', 70))
def __init__(self):
self.rsi = bt.indicators.RSI(self.data.close, period=self.p.period)
def next(self):
if not self.position:
if self.rsi < self.p.oversold:
self.buy()
elif self.rsi > self.p.overbought:
self.close()
if __name__ == '__main__':
run_and_report(RSIStrategy, '600519.SH', '2025-01-01', '2025-12-31', label='RSI策略', plot=True)
逻辑: RSI < 30(超卖) -> 买入; RSI > 70(超买) -> 卖出 参数: RSI周期14, 超卖线30, 超买线70
挑选几支处于震荡区间的股票进行验证
| 股票 | 股票名称 | 所属板块 |
|---|---|---|
| 600519.SH | 贵州茅台 | 食品饮料,白酒 |
| 002027.SZ | 分众传媒 | 传媒,广告营销 |
| 300628.SZ | 亿联网络 | 通信,通信设备 |
贵州茅台
贵州茅台第一次交易买在了低点,卖在了高点,第二次交易,虽然买卖的价格差距不大,但是依然有盈利
分众传媒
分众传媒第一次交易买在了低点,卖在了高点,第二次买入后持有,还未卖出,看后续的趋势还是震荡向上的,总体收益应该会高于预估值。
亿联网络
亿联网络和分众传媒的趋势类似,都是第二次交易只是买入。但是整体的趋势属于盈利的情况。
分析和思考
数据对比
| 股票 | 收益率 | 最大回撤 | 交易次数 | 胜率 | 卡玛 | 买入持有收益 |
|---|---|---|---|---|---|---|
| 贵州茅台 | 20.55% | 4.39% | 2 | 100% | 4.87 | -4.12% |
| 分众传媒 | 38.53% | 9.35% | 2 | 50% | 4.30 | 13.38% |
| 亿联网络 | 21.47% | 5.71% | 2 | 50% | 3.91 | -0.14% |
思考
我从基本面选股的结果中,把所有的预备股都跑了一下,发现一个结论,就是如果出现2次RSI交易的股票中,他们的收益率都要大大超过持仓收益。但是美中不足的是,我发现很多的股票,一年都不会有一次交易。因为RSI<30或者RSI>70,他们的条件相对来说比较苛刻。因此,RSI是针对震荡行情下的一种备选策略。 实际在使用过程中,我们最好结合着其他的策略一起使用,或者我们把买卖的阈值进行修改。否则的话,交易次数过小看不出具体的效果。