技术分析

Stochastic vs RSI — 超买超卖指标什么时候该用哪个

2026-09-29·7 分钟阅读

你把 RSI 换成 Stochastic,同一根 K 棒——RSI 才 60,Stochastic 已经冲到 90 贴在顶。两条线都在讲「过热」,怎么会差这么多?没有人先跟你讲的是:这两个指标其实在算完全不同的东西,只是输出都被压成 0–100,看起来像同一种信号。

这篇不是要评论「哪个比较准」——没有指标会比较准,只有适合与不适合的行情。我们把两个公式摊开来看它们各自在测什么,再给你三种行情下该挑哪个的判断依据,最后示范怎么把两者串成一支能跑的 Pine Script(也就是 TradingView 内建、用来写策略脚本的语言)。

先讲结论
RSI 算的是「涨跌力道的比例」,适合看趋势中的动能衰竭;Stochastic 算的是「收盘价落在最近区间的哪个位置」,适合抓区间震荡的反转。趋势盘里 Stochastic 会一路贴在 80/20,读不出东西;区间盘里 RSI 又常常晃在 40–60 不给信号。用错就是空转。

两个公式在算什么,摊开来看

RSI 的核心是「过去 N 根 K 棒里,涨的力道除以跌的力道」。1978 年 J. Welles Wilder 在 「New Concepts in Technical Trading Systems」里定出这个指标,原版是 14 根,后来多数平台照抄成默认。公式长这样:

text
RS  = 过去 14 根 K 平均涨幅 / 过去 14 根 K 平均跌幅
        RSI = 100 - 100 / (1 + RS)

输出永远在 0–100 之间。涨的力道越大,分母越小,RSI 越接近 100。过去 14 根全涨,RSI 就等于 100;全跌等于 0。所以你只看 RSI 的值其实不知道现在的收盘价是多少——你只知道最近涨的比跌的多很多。

Stochastic 走的是完全不同的路。它不管涨跌力道,只问「今天的收盘价落在最近 N 根 K 棒的高低区间的哪个位置」。George Lane 在 1950 年代的原始想法就是这样——收盘靠区间顶端,代表买方在推收盘;靠底端,代表卖方压着收。公式是:

text
%K = (今天收盘 - 过去 N 根最低价) / (过去 N 根最高价 - 过去 N 根最低价) × 100
        %D = %K 的 M 根移动平均

%K 是快线,%D 是慢线,两条线的交叉就是原版 Stochastic 产信号的方式。常见设置写成 14/3/3——14 根看区间、3 根平滑 %K(这个平滑版本一般叫 Slow %K)、3 根算 %D。这个组合不是唯一「正确」的答案,只是多数平台自带的起点;换周期与换平滑长度都是常态。

RSIStochastic
算的东西涨跌力道的比例收盘在区间的相对位置
常用超买/超卖70 / 3080 / 20
常用周期1414, 3, 3
强项行情趋势中的动能衰竭区间震荡的反转
弱项行情纯震荡盘信号模糊单边趋势里卡在极值
信号快慢较慢、较稳较快、噪音多

为什么 Stochastic 常常比 RSI 早两三根 K 进超买区

两者的分母不一样,反应速度就不一样。RSI 的分母是「过去 N 根的平均跌幅」——那是一个会随新 K 慢慢滚动的平均值,一根大跌没办法立刻把它拉低。Stochastic 的分母是「过去 N 根的最高减最低」,只要今天的高或低没有刷新这个极值,分母根本不动。

结果是:Stochastic 对「收盘跳到区间顶端」这件事反应非常直接——同一根 K 收在最高,%K 直接跳到 100。RSI 得等那根 K 的涨幅把平均涨幅拉起来、平均跌幅拉下来,才会慢慢往上爬。实际看盘时常常会看到 Stochastic 比 RSI 早两三根 K 进超买区,也早两三根 K 掉出来。

1978
RSI 诞生年(Wilder)
1950s
Stochastic 诞生年(Lane)
0–100
两者共同的输出范围
分母不同
信号快慢差异的根源

区间盘还是趋势盘?先判断再选指标

在挑指标之前先看行情。这件事比选 RSI 还是 Stochastic 重要——选错行情,两个都会空转。判断逻辑不用复杂,看价格有没有明确的高点与低点区间就够了。

1
过去 30 根 K 棒有没有明确的水平压力和支撑?
有,价格反复在区间里打转 →Stochastic 为主,信号密、进出场点清楚
没有,价格阶梯式往一个方向走 →RSI 为主,用背离看动能衰竭;别用超买超卖直接进场
看不出来,K 棒又乱又杂 →两个都关掉,换一个时间框架再看;当下这个尺度没有可用信号

第三个分支不是敷衍。5 分钟级别常常出现「不是趋势也不是区间」的过渡状态——K 棒交错、量能忽大忽小,这时任何动能指标都会乱跳。与其硬解读,不如换成 1 小时或 4 小时再看。这是 RSI 指标完整教学 里那句「大时间框架的信号可靠性远高于小时间」的另一种说法。

三种常见情境,我会怎么挑

把上面那张决策表落到实际情境,讲三个场景。这些不是「这样做一定会赚」——没有这种东西——而是讲「在这种情境里,用另一个指标会比较不对劲」。

情境一:BTC 在区间里横盘两周

明显的区间盘。这种时候 Stochastic 的 %K 跳到 80 以上再掉下来、掉到 20 以下再拉上来,跟价格触顶触底的节奏很接近。RSI 反而会一直在 45–55 中间晃,因为涨跌力道相抵——你等它到 70 或 30 大概等不到,等到的时候价格已经跑出区间了。

情境二:ETH 一路走高没有像样的回撤

这是趋势盘。Stochastic 会在 %K 贴在 100 附近好几天,每次「假回落」到 80 都被下一根 K 推回去。照 80 卖的话会一路空着看它继续涨。RSI 这时候可以看背离——价格创新高但 RSI 没跟上,那才是动能真的衰竭的信号。均值回归策略 那篇对「趋势中的假信号」有更细的讨论。

情境三:一根长阴之后价格在低位盘三根小 K

短期反弹的经典场景。Stochastic 的 %K 会很快从 0 附近爬上来、跟 %D 交叉,时间点通常比 RSI 从 30 爬回 40 早两三根 K。这是 Stochastic 相对于 RSI 唯一稳定的优势——反应快在「行情刚转」的时候有价值,其他时候反而是缺点。

把两者组合起来的一种写法

如果你不想每次都要判断「这是区间盘还是趋势盘」,一个常见做法是把 RSI 当「同意权」、Stochastic 当「触发器」——Stochastic 给时机,RSI 决定要不要开。这样即使误判行情,错的信号会被 RSI 挡掉一半。

pine
//@version=6
        strategy("RSI-filtered Stochastic reversal", overlay=true)

        rsiLen   = input.int(14, "RSI length")
        stochLen = input.int(14, "Stochastic %K length")
        smoothK  = input.int(3,  "%K smoothing")
        smoothD  = input.int(3,  "%D smoothing")

        rsi = ta.rsi(close, rsiLen)
        k   = ta.sma(ta.stoch(close, high, low, stochLen), smoothK)
        d   = ta.sma(k, smoothD)

        // Long: %K 从 20 以下向上穿越 %D,且 RSI 没有明显强势
        longCond  = ta.crossover(k, d)  and k < 20 and rsi < 55

        // Short: %K 从 80 以上向下穿越 %D,且 RSI 没有明显弱势
        shortCond = ta.crossunder(k, d) and k > 80 and rsi > 45

        if longCond
            strategy.entry("Long",  strategy.long)
        if shortCond
            strategy.entry("Short", strategy.short)

这是示例代码,不是回测过的策略。里面的 20/80/55/45 是拿标准阈值当出发点,不同标的与时间框架都要重测。你至少要在 TradingView 的 strategy tester 跑一段包含趋势盘与区间盘的期间,看它在两种行情下分别的胜率与 max drawdown,才知道这种组合适不适合你要交易的商品。

回测不代表未来
所有回测数字都是过去,不代表未来会重演。过往绩效不代表未来表现。加密交易风险高,实盘前用 dry-run(模拟单)跑至少一周,看实际触发频率与延迟是不是符合你的预期。

三个最常见的误读

最后把常犯的三个错误放这里,都是我自己一开始踩过的。这些不会让你立刻亏钱,但会让你看指标的时候一直有种「信号怪怪的」感觉。

「Stochastic 到 80 就卖、20 就买」不是策略,是联想

Stochastic 在区间盘好用,是因为区间本身有均值回归的倾向,不是因为 80/20 这两个数字本身有魔力。趋势盘里 Stochastic 贴在 80 完全正常——上升趋势的定义就是「收盘持续靠近区间顶端」。把它当卖信号会卖在半山腰。

「RSI 跌到 30 一定会反弹」也不是策略

单边行情里 RSI 可以卡在极值好几周,一路等它「反弹」等到仓位归零。实务上有名的例子就是几次崩盘盘中的日线 RSI 跌破 20 之后还继续往下走。RSI 的超卖要配合背离、支撑、成交量或任何其他信号才有意义。单独用一个阈值不叫策略。

用两个指标同时进场不等于「多一层确认」

如果 RSI 跟 Stochastic 用的是同一段 K 棒数据、看的又都是动能,它们的信号很多时候会同时出现——这是「相关」不是「独立确认」。真正的多一层确认要用不同性质的信号:动能指标配上量能、配上市场结构、或是配上更大时间框架的方向。

常见问题

RSI 和 Stochastic 可以在同一根 K 上同时进场吗?
可以,但要清楚它们不是独立信号。两者都用 close、都在同一根 K 上做判断,同时触发不代表「两个都同意」——比较像是「同一个原因看两次」。想要真的独立确认,把其中一个换成量能指标(OBV、MFI)或市场结构信号。
要不要调 14 这个周期?
先用默认跑一段回测,看它在你要交易的商品上的信号密度。太密就把周期拉到 21 或 28,太稀就缩到 9。周期不是越短越好——短周期会让两个指标都变成噪音机。
TradingView 内建的 Stochastic 有 Slow 和 Fast 版本,差在哪?
Fast 是原版 %K(不做平滑),Slow 是先把 %K 用 3 根 SMA 平滑之后再算 %D。两者的信号延迟差 2–3 根 K。实务上多数人用 Slow 版,噪音少一些。
要怎么把这种信号自动送到交易所?
TradingView 的 alert 可以把信号打到 webhook(也就是把信号自动送到别的服务的那条通道),再由执行端帮你下单。设置细节在 TradingView Webhook 完整教学。
指标是不是越多越好?
不是。三个以上的指标同时看会让你永远找得到理由「这一根不进场」或「这一根该进」——过滤条件太多就等于没有条件。守 1–2 个核心指标,其他当辅助观察就好。

Get started

想把今天学到的东西自动化跑起来?

把 TradingView 的 RSI 或 Stochastic 信号接上真实下单——TVSBot 用你自己的 API 密钥,先 dry-run 再上实盘,风控自己设。

免费开始使用