Strategy Type · Breakout Trading

Breakout Strategy Complete Guide
Donchian / NR7 / Opening Range

2026-06-03·11 min read·Strategy

Breakout strategies are the core of trend following:price breaks through a key range, you ride it. The Donchian Channel, invented by Richard Donchian in the 1950s, is the ancestor of this family. The Turtle Traders (1983) also used Donchian.

This article covers three classic breakout strategies (Donchian / NR7 / Opening Range), how to filter false breakouts with ATR, volume confirmation, and a complete Pine implementation.

1. The Core Logic of Breakout Strategies

Every breakout strategy is built on the same assumption:when price breaks above a recent high or below a recent low, it tends to continue in that direction for a while.

The market psychology behind it:

  • Breaking a new high = sellers near the prior high were wrong + new buyers pile in + shorts get squeezed
  • Breaking a new low = buyers near the prior low were wrong + new sellers pile in + longs get flushed

This logic is especially effective in crypto, because:

  • 24/7 markets → no "wait for open" delay when a breakout happens
  • High volatility → strong momentum after a breakout
  • Clear cycles → big bull and bear runs mean breakout directions often persist

2. Classic Implementation ①: Donchian Channel (the Turtle core)

The Donchian Channel was invented by Richard Donchian in the 1950s. In 1949 he founded Futures Inc., the first managed futures service ever offered.

Three lines:

text
Upper band = highest high of the past N periods
Lower band = lowest low of the past N periods
Mid band  = (upper + lower) / 2

Common N values:
  20 — short-term breakout (Turtle System 1)
  55 — long-term breakout (Turtle System 2)
  10 — scalping
pine
//@version=5
strategy("Donchian 20 Breakout", overlay=true,
  initial_capital=10000, default_qty_type=strategy.percent_of_equity,
  default_qty_value=10)

length = input.int(20, "Channel Period")
exitLength = input.int(10, "Exit Channel Period")

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

// Long on break above upper
if (close > upperBand)
    strategy.entry("Long", strategy.long)
// Exit on break below lower
if (close < exitLower)
    strategy.close("Long")

// Short on break below lower
if (close < lowerBand)
    strategy.entry("Short", strategy.short)
// Exit on break above upper
if (close > exitUpper)
    strategy.close("Short")

plot(upperBand, "Upper", color=color.red)
plot(lowerBand, "Lower", color=color.green)
plot((upperBand + lowerBand) / 2, "Middle", color=color.gray)
Why use different periods for entry and exit
The essence of the Turtle system: enter slow, exit fast. Entry uses 20 periods to wait for trend confirmation; exit uses 10 periods so you bail the moment it reverses. You capture the middle of the long-tail trend and skip the noise at both ends.

3. Classic Implementation ②: NR7 (Narrow Range Contraction)

NR7 (Narrow Range 7) was popularized by Linda Bradford Raschke. The idea: when you see "the narrowest bar of the last 7," the market is often coiling energy, and the next breakout direction tends to deliver a big move.

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

range_ = high - low
nr7 = range_ == ta.lowest(range_, 7)  // narrowest in last 7 bars

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

// Bar after NR7 breaks prior high → long
if (nr7[1] and close > prevHigh)
    strategy.entry("Long", strategy.long)

// Bar after NR7 breaks prior low → short
if (nr7[1] and close < prevLow)
    strategy.entry("Short", strategy.short)

// NR7 bar marker
plotshape(nr7, "NR7", location=location.belowbar,
          color=color.yellow, style=shape.circle)
NR7 extensions: NR4 / IB / IB+NR4
NR4 = narrowest of the last 4 — more frequent but noisier
IB (Inside Bar) = the whole bar sits inside the prior bar, similar to a squeeze
IB+NR4 = both Inside Bar and NR4 at once — Raschke's favorite "powder keg"

4. Classic Implementation ③: Opening Range Breakout (ORB)

Opening Range Breakout (ORB) was systematized by Toby Crabel in Day Trading with Short Term Price Patterns. The idea: take the high and low of the first N minutes after the open as the range, and trade the breakout direction.

This strategy works best in markets with a clear open (US equities, Taiwan stocks, crude oil futures). Crypto is 24/7 with no "open," but you can use UTC 00:00 as an analogous reference.

pine
//@version=5
strategy("ORB Opening Range Breakout (5min)", overlay=true)

// Run on 5min chart, define "first 30 min after open" = 6 bars
openingBars = input.int(6, "Opening Bars")

// Check if in opening session (UTC 00:00 start)
isOpeningTime = (hour == 0 and minute < 30)

// Opening range high/low
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)
    // Opening range close
    label.new(bar_index, orbHigh,
      "ORB High: " + str.tostring(orbHigh, "#.##"))

// Long on ORB upper break
if (not isOpeningTime and not na(orbHigh) and close > orbHigh)
    strategy.entry("Long", strategy.long)

// Short on ORB lower break
if (not isOpeningTime and not na(orbLow) and close < orbLow)
    strategy.entry("Short", strategy.short)

// Exit before close
if (hour == 23 and minute >= 45)
    strategy.close_all()

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

5. Three Filters to Avoid False Breakouts

The biggest enemy of breakout strategies is the false breakout. Three filtering methods:

Filter ①: ATR Magnitude Filter

Require the breakout to exceed ATR × 0.5 to count. See the ATR complete guide.

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

// True breakout = close above prev high + at least 0.5 ATR
trueBreakout = close > prevHigh + atr * 0.5

Filter ②: Volume Confirmation

Real breakouts are usually accompanied by a volume spike. False breakouts are often "no-volume rallies" — nobody picks up the bid and it snaps back.

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

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

Filter ③: Macro Trend Direction Filter

Only accept breakouts that align with the larger trend. When BTC is above SMA 200, only take long breakouts; when below, only shorts.

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. Win Rate and Payoff Characteristics

PropertyNumber
Win rate30-45% (low)
Payoff (win/loss ratio)2:1 ~ 5:1 (strong)
Expected valuePositive
Psychological thresholdHigh (60% of the time you're losing)
Why most people give up on breakout strategies
Because the win rate is only 30-45%. Strings of 5-7 losses in a row are common, and it's psychologically brutal. The total P&L gets pulled positive by a few big winners (5-10x the stop distance). That's why you must execute mechanically — trading on feel guarantees you'll abandon the system mid-drawdown.

7. Relationship to the Turtle System

The Turtle Traders system (see CTA Trend Following + Turtle Traders) is exactly Donchian breakouts + ATR sizing + strict discipline:

  • Entry: Donchian 20 or 55 breakout
  • Stop loss: 2 ATR against you
  • Position size: 1% risk / ATR
  • Pyramiding: add a unit every 0.5 ATR move, up to 4 units
  • Exit: break Donchian 10 or 20 in the opposite direction

These rules were written in 1983, and they still run on BTC in 2026.

Get started

Ready to ship what you just learned?

Want to implement a full breakout system? Write your strategy in Pine → TVSBot routes it to the exchange and executes automatically, so you don't have to stare at charts.

Start free trial

8. Three Key Takeaways

  1. Breakouts have low win rates but strong payoffs. The psychological bar is high, so execution must be mechanical.
  2. False breakouts are the number one enemy. ATR magnitude + volume + trend direction together filter out roughly 50% of the noise.
  3. Donchian + ATR + discipline = the Turtle formula. A system from 1983 that still works today — the rules are dead simple; the hard part is execution.