技术分析 · 波动率指标

Bollinger Bands 完整教学
不只看「碰上轨卖、碰下轨买」

2026-06-03·11 分钟阅读·初学 ~ 中阶

Bollinger Bands(布林通道)是 John Bollinger 在 1980 年代发明的波动率指标,全球几乎所有交易者都看过。 但 90% 的人只用「碰上轨卖、碰下轨买」这个入门用法 — 这在强趋势盘会连续打脸

本文讲原理(为什么用 ±2 倍标准差)、四种真实用法、 「Squeeze 挤压」突破策略、Bollinger 自己定义的 Walk the Bands 现象、 完整 Pine 代码。

1. Bollinger Bands 的数学原理

三条线:

text
中轨 = SMA(close, 20)            // 20 期简单移动平均
标准差 = stdev(close, 20)        // 过去 20 期收盘价的标准差
上轨 = 中轨 + 2 × 标准差
下轨 = 中轨 - 2 × 标准差

关键词:标准差

为什么用 ±2 倍标准差?

统计学原理:如果价格分布是正态分布,有 95.4% 的时间落在 ±2σ 内。 意思是「100 根 K 棒中,大约 95 根会在通道内,5 根会碰或穿出去」。

但真实的金融资产不是正态分布 — 会有「肥尾」(fat tails),极端事件比正态多。 所以实际碰轨频率会比 5% 高。这个偏差是 Bollinger Bands 的陷阱, 也是后面讲「Walk the Bands」现象的根源。

参数设定:为什么是 20 / 2.0
Bollinger 自己推荐:20 期 SMA + 2.0 倍标准差。 这是日线级别的标准值。 较短周期(10)+ 较小倍数(1.5)可以做短线; 较长周期(50)+ 较大倍数(2.5)可以做长线。 但强烈不建议调太多 — Bollinger 自己说过: 「If you do better with 20/2.5, fine; but the 20/2.0 settings have been very robust.」

2. 入门用法:均值回归(最常见,最容易死)

直觉:

  • 价格碰上轨 → 涨过头,反弹做空
  • 价格碰下轨 → 跌过头,反弹做多
为什么这招在加密货币常常失败
BTC 牛市时可能「沿着上轨走」连续 30 根 K 棒, 每根都碰上轨但价格持续上涨。 按这套规则一路 stop out,2017、2020 牛市都看过。
Bollinger 自己叫这种现象「Walking the Bands」 — 趋势盘的特征,不是反转信号
pine
//@version=5
strategy("BB 均值回归(教学版)", overlay=true)

length = input.int(20, "周期")
mult = input.float(2.0, "标准差倍数")

basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// 价格碰下轨 → 买
if (ta.crossunder(low, lower))
    strategy.entry("Long", strategy.long)

// 价格碰上轨 → 卖
if (ta.crossover(high, upper))
    strategy.entry("Short", strategy.short)

plot(basis, "中轨", color=color.orange)
plot(upper, "上轨", color=color.red)
plot(lower, "下轨", color=color.green)

3. 中阶用法:Squeeze 突破策略

这是 Bollinger Bands 真正强的用法。 当通道收窄(上下轨靠近),代表波动率变低、 市场在累积能量 → 突破方向常常有大行情

怎么定义 Squeeze?

有两种常见定义:

A. Bollinger Bands Width(BBW)

text
BBW = (上轨 - 下轨) / 中轨

BBW 跌到过去 X 期最低 = Squeeze。Bollinger 自己用 6 个月低点当门槛。

B. Bollinger Squeeze(vs Keltner Channel)

当 Bollinger Bands 完全在 Keltner Channel 内,视为 Squeeze。 这是 John Carter 的版本(《Mastering the Trade》一书)。

pine
//@version=5
strategy("BB Squeeze 突破", overlay=true)

length = input.int(20, "周期")
mult = input.float(2.0, "BB 倍数")
keltnerMult = input.float(1.5, "Keltner 倍数")

basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
bbUpper = basis + dev
bbLower = basis - dev

atr = ta.atr(length)
keltnerUpper = basis + keltnerMult * atr
keltnerLower = basis - keltnerMult * atr

// Squeeze 条件:BB 在 Keltner 内
squeeze = bbUpper < keltnerUpper and bbLower > keltnerLower

// Squeeze 结束 + 价格突破上轨 → 做多
if (not squeeze and squeeze[1] and close > bbUpper)
    strategy.entry("Long", strategy.long)

// Squeeze 结束 + 价格突破下轨 → 做空
if (not squeeze and squeeze[1] and close < bbLower)
    strategy.entry("Short", strategy.short)

plot(basis, "中轨", color=color.orange)
plot(bbUpper, "BB 上轨", color=color.red)
plot(bbLower, "BB 下轨", color=color.green)
bgcolor(squeeze ? color.new(color.purple, 90) : na, title="Squeeze")
实战技巧:Squeeze 不告诉你方向
Squeeze 只说「即将有大行情」,不说往上还是往下。 要配合:① 大趋势方向(SMA 200 / EMA 50)、 ② 突破时的成交量、③ 其他指标确认。

4. 进阶用法:%B 指标

Bollinger 后来自己加了一个辅助指标 %B, 量化价格在通道内的相对位置:

text
%B = (close - 下轨) / (上轨 - 下轨)

%B = 0     → 价格刚碰下轨
%B = 0.5   → 价格在中轨
%B = 1     → 价格刚碰上轨
%B > 1     → 价格突破上轨(强趋势)
%B < 0     → 价格突破下轨(强趋势)

用 %B 可以做:

  • %B 背离:价格创新高但 %B 没创新高 → 趋势动能衰竭
  • %B + RSI:当 %B > 0.95 且 RSI > 70 → 双重超买确认
  • %B 突破 0.5:价格从下半部穿到上半部,常作为趋势开始信号

5. 高阶用法:BB + RSI + 趋势过滤

Bollinger 自己最推荐的组合用法。完整流程:

  1. SMA 200 判断大趋势方向(在 SMA 200 上方 = 多头结构)
  2. 价格回踩 BB 中轨(不是下轨) → 趋势回踩买点
  3. RSI 同时 > 50(多头动能仍在)
  4. 进场做多
pine
//@version=5
strategy("BB 中轨回踩 + 趋势过滤", overlay=true)

basis = ta.sma(close, 20)
dev = 2.0 * ta.stdev(close, 20)
upper = basis + dev
lower = basis - dev

sma200 = ta.sma(close, 200)
rsi = ta.rsi(close, 14)

// 多头结构:价格 > SMA 200 + RSI > 50
bullishStructure = close > sma200 and rsi > 50

// 回踩中轨:低点触及中轨但收盘站回中轨上
pullback = low <= basis and close > basis

if (bullishStructure and pullback)
    strategy.entry("Long", strategy.long)

// 跌破中轨 + RSI < 50 → 出场
if (close < basis and rsi < 50)
    strategy.close("Long")

plot(basis, "中轨", color=color.orange)
plot(upper, "上轨", color=color.red)
plot(lower, "下轨", color=color.green)
plot(sma200, "SMA 200", color=color.purple)

6. 不同时间框架的 BB 该怎么解读

时间框架BB 用法主要应用
1m / 5m杂讯多,不建议scalping,但胜率低
15m / 1hSqueeze 突破最有效日内波段
4h回踩中轨 + 趋势过滤2-7 天波段
D / W趋势方向判断月级别配置

7. 常见错误

❌ 把 BB 当「绝对范围」

价格碰上轨 ≠ 一定要卖。在牛市中价格可以「Walking the Bands」连续碰轨十几根 K。 要看大趋势结构决定该不该逆势。

❌ 参数调太短

有人把 length 改成 5、mult 改成 1.0「想更敏感」 — 结果通道太窄、信号爆量、胜率掉到 30%。 坚持用 20 / 2.0 预设。

❌ 在 Squeeze 期间进场

Squeeze = 沉睡期,市场不动。在这时进场常常被闷到 stop out。 要等 Squeeze 结束 + 有明确突破才进场。

❌ 只看 BB 不看成交量

价格突破上轨但成交量没放大 → 假突破机率高。 真突破通常伴随爆量。

Get started

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

把你的策略接上 TradingView webhook,自动下单到 Binance / OKX / Bybit 等 7 家交易所。

免费注册 TVSBot

8. Bollinger 自己给的「19 条法则」精华

John Bollinger 写过《Bollinger on Bollinger Bands》一书, 列了 19 条法则。挑最关键的:

  • 法则 4:价格触碰通道本身不是信号, 要配合其他指标确认
  • 法则 6:Squeeze 期间市场储存能量, 突破方向是大行情起点
  • 法则 11:Walking the Bands 是趋势的正常现象, 不要逆势
  • 法则 14:BB 是「相对」工具,不是「绝对」工具 — 上轨只是「相对高」、下轨只是「相对低」