Stochastic vs RSI — 超买超卖指标什么时候该用哪个
你把 RSI 换成 Stochastic,同一根 K 棒——RSI 才 60,Stochastic 已经冲到 90 贴在顶。两条线都在讲「过热」,怎么会差这么多?没有人先跟你讲的是:这两个指标其实在算完全不同的东西,只是输出都被压成 0–100,看起来像同一种信号。
这篇不是要评论「哪个比较准」——没有指标会比较准,只有适合与不适合的行情。我们把两个公式摊开来看它们各自在测什么,再给你三种行情下该挑哪个的判断依据,最后示范怎么把两者串成一支能跑的 Pine Script(也就是 TradingView 内建、用来写策略脚本的语言)。
两个公式在算什么,摊开来看
RSI 的核心是「过去 N 根 K 棒里,涨的力道除以跌的力道」。1978 年 J. Welles Wilder 在 「New Concepts in Technical Trading Systems」里定出这个指标,原版是 14 根,后来多数平台照抄成默认。公式长这样:
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 年代的原始想法就是这样——收盘靠区间顶端,代表买方在推收盘;靠底端,代表卖方压着收。公式是:
%K = (今天收盘 - 过去 N 根最低价) / (过去 N 根最高价 - 过去 N 根最低价) × 100
%D = %K 的 M 根移动平均%K 是快线,%D 是慢线,两条线的交叉就是原版 Stochastic 产信号的方式。常见设置写成 14/3/3——14 根看区间、3 根平滑 %K(这个平滑版本一般叫 Slow %K)、3 根算 %D。这个组合不是唯一「正确」的答案,只是多数平台自带的起点;换周期与换平滑长度都是常态。
| RSI | Stochastic | ||
|---|---|---|---|
| 算的东西 | 涨跌力道的比例 | 收盘在区间的相对位置 | |
| 常用超买/超卖 | 70 / 30 | 80 / 20 | |
| 常用周期 | 14 | 14, 3, 3 | |
| 强项行情 | 趋势中的动能衰竭 | 区间震荡的反转 | |
| 弱项行情 | 纯震荡盘信号模糊 | 单边趋势里卡在极值 | |
| 信号快慢 | 较慢、较稳 | 较快、噪音多 |
为什么 Stochastic 常常比 RSI 早两三根 K 进超买区
两者的分母不一样,反应速度就不一样。RSI 的分母是「过去 N 根的平均跌幅」——那是一个会随新 K 慢慢滚动的平均值,一根大跌没办法立刻把它拉低。Stochastic 的分母是「过去 N 根的最高减最低」,只要今天的高或低没有刷新这个极值,分母根本不动。
结果是:Stochastic 对「收盘跳到区间顶端」这件事反应非常直接——同一根 K 收在最高,%K 直接跳到 100。RSI 得等那根 K 的涨幅把平均涨幅拉起来、平均跌幅拉下来,才会慢慢往上爬。实际看盘时常常会看到 Stochastic 比 RSI 早两三根 K 进超买区,也早两三根 K 掉出来。
区间盘还是趋势盘?先判断再选指标
在挑指标之前先看行情。这件事比选 RSI 还是 Stochastic 重要——选错行情,两个都会空转。判断逻辑不用复杂,看价格有没有明确的高点与低点区间就够了。
第三个分支不是敷衍。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 挡掉一半。
//@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,才知道这种组合适不适合你要交易的商品。
三个最常见的误读
最后把常犯的三个错误放这里,都是我自己一开始踩过的。这些不会让你立刻亏钱,但会让你看指标的时候一直有种「信号怪怪的」感觉。
「Stochastic 到 80 就卖、20 就买」不是策略,是联想
Stochastic 在区间盘好用,是因为区间本身有均值回归的倾向,不是因为 80/20 这两个数字本身有魔力。趋势盘里 Stochastic 贴在 80 完全正常——上升趋势的定义就是「收盘持续靠近区间顶端」。把它当卖信号会卖在半山腰。
「RSI 跌到 30 一定会反弹」也不是策略
单边行情里 RSI 可以卡在极值好几周,一路等它「反弹」等到仓位归零。实务上有名的例子就是几次崩盘盘中的日线 RSI 跌破 20 之后还继续往下走。RSI 的超卖要配合背离、支撑、成交量或任何其他信号才有意义。单独用一个阈值不叫策略。
用两个指标同时进场不等于「多一层确认」
如果 RSI 跟 Stochastic 用的是同一段 K 棒数据、看的又都是动能,它们的信号很多时候会同时出现——这是「相关」不是「独立确认」。真正的多一层确认要用不同性质的信号:动能指标配上量能、配上市场结构、或是配上更大时间框架的方向。
常见问题
RSI 和 Stochastic 可以在同一根 K 上同时进场吗?
要不要调 14 这个周期?
TradingView 内建的 Stochastic 有 Slow 和 Fast 版本,差在哪?
要怎么把这种信号自动送到交易所?
指标是不是越多越好?
Get started
把 TradingView 的 RSI 或 Stochastic 信号接上真实下单——TVSBot 用你自己的 API 密钥,先 dry-run 再上实盘,风控自己设。
免费开始使用