Debated1 min read
◆ The PatternThe highest high and lowest low of the last N bars; leaving that range is the signal
Donchian Channels — Richard Donchian, the "father of trend following."
Upper = Highest High of N periods
Lower = Lowest Low of N periods
Middle = (Upper + Lower) / 2
Lower = Lowest Low of N periods
Middle = (Upper + Lower) / 2
Turtle Traders: Richard Dennis's famous experiment used Donchian channel breakouts:
• Buy when price breaks above 20-day high
• Sell when price breaks below 20-day low
• Exit at 10-day opposite channel
• Buy when price breaks above 20-day high
• Sell when price breaks below 20-day low
• Exit at 10-day opposite channel
Worked example
Five-day channel. On day 7 the close of 109 tops the previous five days’ highest high of 108: a breakout. On day 15 the channel runs from 98 to 105, and the close of 104 sits just inside the top.
The example data: 15 days, used in every indicator here
| Day | High | Low | Close | Volume |
|---|---|---|---|---|
| 1 | 101 | 99 | 100 | 50,000 |
| 2 | 103 | 100 | 102 | 62,000 |
| 3 | 103 | 100 | 101 | 48,000 |
| 4 | 105 | 101 | 104 | 70,000 |
| 5 | 108 | 104 | 107 | 85,000 |
| 6 | 108 | 105 | 106 | 60,000 |
| 7 | 110 | 106 | 109 | 90,000 |
| 8 | 110 | 107 | 108 | 72,000 |
| 9 | 108 | 104 | 105 | 80,000 |
| 10 | 105 | 102 | 103 | 66,000 |
| 11 | 105 | 102 | 104 | 55,000 |
| 12 | 104 | 101 | 102 | 75,000 |
| 13 | 102 | 98 | 99 | 95,000 |
| 14 | 102 | 99 | 101 | 64,000 |
| 15 | 105 | 101 | 104 | 71,000 |
Where it misleads
- Most breakouts in a range fail. The system lives on a few long trends and loses small amounts often in between.
- Exits are slow: when a trend ends, the opposite edge of the channel can be far away.
- The look-back is the whole strategy — 20 days and 55 days give very different trades — and tuning it on history overfits.
In code
df['dc_up'] = df['high'].rolling(5).max() df['dc_lo'] = df['low'].rolling(5).min() df['dc_mid'] = (df['dc_up'] + df['dc_lo']) / 2 df['breakout'] = df['close'] > df['dc_up'].shift() # close above the prior range
Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns high, low, close and volume — the 15 days above.
Sources
- C. Faith, Way of the Turtle, McGraw-Hill, 2007 — the Turtle traders’ Donchian breakout rules
- Trading Systems and Methods (5th ed.), P. J. Kaufman, Wiley, 2013
Last reviewed October 2026 · How this site checks its content · Report a mistake
Pattern bridge: Highest high and lowest low over N periods is the range (max-min) from descriptive statistics.
Linked from 1