策略类型 · 突破交易

突破策略完整教学
Donchian / NR7 / 开盘区间

2026-06-03·11 分钟阅读·策略

突破策略是趋势追踪的核心:价格突破某个关键区间,跟着走。 1950 年代 Richard Donchian 发明的 Donchian Channel 是这类策略的鼻祖,海龟交易(1983)用的也是 Donchian。

本文讲三种经典突破策略(Donchian / NR7 / 开盘区间)、 怎么用 ATR 过滤假突破、配合成交量确认、完整 Pine 实作。

1. 突破策略的核心逻辑

所有突破策略都基于同一个假设:当价格突破近期高/低点,往往会延续方向走一段

背后的市场心理:

  • 突破新高 = 之前在高点卖的人错了 + 新买盘涌入 + 空头被轧
  • 突破新低 = 之前在低点买的人错了 + 新卖盘涌入 + 多头被洗

这套逻辑在加密货币特别有效,因为:

  • 24/7 开盘 → 突破发生时没有「等开盘」的延迟
  • 波动大 → 突破后动能强
  • 明显周期 → 大牛大熊,突破方向常持续

2. 经典实作 ①:Donchian Channel(海龟的核心)

Donchian Channel 由 Richard Donchian 在 1950 年代发明,1949 年他创立 Futures Inc. 提供管理型期货服务, 是最早做这事的人。

三条线:

text
上轨 = 过去 N 期最高价
下轨 = 过去 N 期最低价
中轨 = (上轨 + 下轨) / 2

N 常用值:
  20 — 短期突破(海龟 System 1)
  55 — 长期突破(海龟 System 2)
  10 — scalping
pine
//@version=5
strategy("Donchian 20 突破", overlay=true,
  initial_capital=10000, default_qty_type=strategy.percent_of_equity,
  default_qty_value=10)

length = input.int(20, "通道周期")
exitLength = input.int(10, "出场通道周期")

upperBand = ta.highest(high, length)[1]
lowerBand = ta.lowest(low, length)[1]
exitUpper = ta.highest(high, exitLength)[1]
exitLower = ta.lowest(low, exitLength)[1]

// 突破上轨做多
if (close > upperBand)
    strategy.entry("Long", strategy.long)
// 跌破出场下轨
if (close < exitLower)
    strategy.close("Long")

// 突破下轨做空
if (close < lowerBand)
    strategy.entry("Short", strategy.short)
// 涨破出场上轨
if (close > exitUpper)
    strategy.close("Short")

plot(upperBand, "上轨", color=color.red)
plot(lowerBand, "下轨", color=color.green)
plot((upperBand + lowerBand) / 2, "中轨", color=color.gray)
为什么进场跟出场用不同周期
海龟的精髓:进场慢、出场快。 进场用 20 期,等趋势确认再进; 出场用 10 期,遇到反转立刻撤。 这样抓长尾趋势的中段,避开两头的杂讯。

3. 经典实作 ②:NR7(窄幅 K 棒收缩)

NR7(Narrow Range 7)由 Linda Bradford Raschke 推广。 原理:当出现「过去 7 根 K 棒里最窄的一根」, 往往代表市场在累积能量,下一根突破方向有大行情。

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

range_ = high - low
nr7 = range_ == ta.lowest(range_, 7)  // 过去 7 根最窄

prevHigh = high[1]
prevLow = low[1]

// NR7 后 K 棒突破上一根高点 → 做多
if (nr7[1] and close > prevHigh)
    strategy.entry("Long", strategy.long)

// NR7 后 K 棒突破上一根低点 → 做空
if (nr7[1] and close < prevLow)
    strategy.entry("Short", strategy.short)

// NR7 K 棒标记
plotshape(nr7, "NR7", location=location.belowbar,
          color=color.yellow, style=shape.circle)
NR7 的扩展:NR4 / IB / IB+NR4
NR4 = 过去 4 根最窄,更频繁但杂讯也多
IB(Inside Bar)= 整根 K 在前一根 K 内,类似挤压
IB+NR4 = 同时是 Inside Bar 跟 NR4,是 Raschke 最爱的「火药桶」

4. 经典实作 ③:开盘区间突破(ORB)

Opening Range Breakout(ORB)由 Toby Crabel 在 《Day Trading with Short Term Price Patterns》一书系统化。 原理:用开盘后 N 分钟的高低当区间,突破方向跟。

这个策略在有明确开盘的市场最有效(美股、台股、原油期货)。 加密 24/7 没「开盘」,但可以用 UTC 00:00 作为类比基准。

pine
//@version=5
strategy("ORB 开盘区间突破(5 分钟)", overlay=true)

// 用 5 分钟图跑,定义「开盘 30 分钟」= 6 根 K
openingBars = input.int(6, "开盘几根 K")

// 判断是否在开盘时段(UTC 00:00 开始)
isOpeningTime = (hour == 0 and minute < 30)

// 开盘区间高低
var float orbHigh = na
var float orbLow = na

if (isOpeningTime)
    orbHigh := math.max(nz(orbHigh, high), high)
    orbLow := math.min(nz(orbLow, low), low)
else if (hour == 0 and minute == 30)
    // 开盘区间结算
    label.new(bar_index, orbHigh,
      "ORB High: " + str.tostring(orbHigh, "#.##"))

// 突破 ORB 上限做多
if (not isOpeningTime and not na(orbHigh) and close > orbHigh)
    strategy.entry("Long", strategy.long)

// 突破 ORB 下限做空
if (not isOpeningTime and not na(orbLow) and close < orbLow)
    strategy.entry("Short", strategy.short)

// 收盘前出场
if (hour == 23 and minute >= 45)
    strategy.close_all()

plot(orbHigh, "ORB High", color=color.red)
plot(orbLow, "ORB Low", color=color.green)

5. 避免假突破的三大滤网

突破策略最大的敌人是假突破。三种过滤法:

滤网 ①:ATR 幅度过滤

要求突破幅度大于 ATR × 0.5 才算数。 详见 ATR 完整教学

pine
atr = ta.atr(14)
prevHigh = ta.highest(high, 20)[1]

// 真突破 = close 突破 prev high + 至少 0.5 ATR
trueBreakout = close > prevHigh + atr * 0.5

滤网 ②:成交量确认

真突破常伴随爆量。 假突破常是「无量上涨」 — 没人接,马上回。

pine
avgVolume = ta.sma(volume, 20)
volumeSpike = volume > avgVolume * 1.5  // 爆量 50%+

if (close > prevHigh and volumeSpike)
    strategy.entry("Long", strategy.long)

滤网 ③:大趋势方向过滤

只接受「跟大趋势同方向」的突破。 BTC 在 SMA 200 上方时只做多突破、下方只做空突破。

pine
sma200 = ta.sma(close, 200)
trendUp = close > sma200
trendDown = close < sma200

if (close > prevHigh and trendUp)
    strategy.entry("Long", strategy.long)
if (close < prevLow and trendDown)
    strategy.entry("Short", strategy.short)

6. 突破策略的胜率与赔率特性

特性数字
胜率30-45%(不高)
赔率(赚/亏比)2:1 ~ 5:1(强)
期望值
心理门槛高(60% 的时间在亏)
为什么大多数人放弃突破策略
因为胜率只有 30-45%。 连亏 5-7 次很常见,心理上很难坚持。 但靠少数大赢(5-10 倍止损距离)拉回总获利。 这也是为什么必须机械化执行 — 靠感觉一定会在连亏时放弃系统。

7. 跟海龟系统的关系

海龟交易(详见 CTA 趋势追踪 + 海龟交易)就是 Donchian 突破 + ATR 部位 + 强纪律的组合:

  • 进场:Donchian 20 或 55 突破
  • 止损:2 ATR 反向
  • 部位:1% 风险 / ATR
  • 加仓:每涨 0.5 ATR 再加一个 unit,最多 4 个
  • 出场:跌破 Donchian 10 或 20

这套规则 1983 年写的,套到 2026 的 BTC 仍然能跑。

Get started

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

想实作完整突破系统?Pine 写好策略 → TVSBot 接到交易所自动执行,免去人工盯盘。

免费注册 TVSBot

8. 三个关键 takeaway

  1. 突破策略胜率低但赔率强。 心理门槛高,必须机械化执行
  2. 假突破是头号敌人。 ATR 幅度 + 成交量 + 趋势方向三滤网能挡掉 50% 杂讯
  3. Donchian + ATR + 纪律 = 海龟公式。 1983 年的系统至今仍适用 — 规则简单到爆,难在执行