Average True Range (ATR) measures how much an asset moves per bar — including overnight gaps that a simple High minus Low calculation would miss. It tells you the market's current pulse: fast or slow, wide or tight. ATR does not predict direction. It quantifies magnitude.
Section 1: Core Mechanics
ATR was developed by J. Welles Wilder Jr. and published in his 1978 book New Concepts in Technical Trading Systems. The same book introduced RSI and the Parabolic SAR.
Formula
The first step is the True Range (TR) — the largest of three measurements for each bar:
The second measurement captures upward gaps; the third captures downward gaps. This is why ATR is more accurate than a simple High-Low range for assets that gap overnight.
ATR is then a Wilder-smoothed average of TR over N periods:
For the first bar, (simple average of the first N true ranges). Default N = 14.
Inputs
- High: Bar high
- Low: Bar low
- Close: Previous bar close (for gap measurement)
Parameters
| Parameter | Default | Range | Impact |
|---|---|---|---|
| Period (N) | 14 | 5–50 | Lower = reacts faster to recent volatility; Higher = smoother, slower |
| Price source | HLC | Fixed | Not configurable — ATR requires all three |
Output
ATR outputs a single positive value per bar on a separate sub-panel, expressed in the same unit as price (dollars for stocks, pips for forex, points for futures). Higher ATR = wider price swings. Lower ATR = quieter, tighter price action.
Visual Behavior
- Rising ATR → volatility expanding — market becoming more active
- Falling ATR → volatility contracting — market quieting down
- ATR at multi-month lows → pre-breakout squeeze or extended low-volatility environment
Section 2: Interpretation & Signals
ATR is not a buy/sell signal generator. It is a measurement tool that powers three critical trade management functions.
Three Uses of ATR
| Function | Formula | Purpose |
|---|---|---|
| Stop-loss placement | Entry ± (1.5 to 2 × ATR) | Stops sized to current volatility, not arbitrary |
| Position sizing | Dollar risk / (ATR × price per point) | Consistent risk per trade regardless of asset |
| Volatility filter | ATR at 3-month low → avoid breakouts | Breakouts in low-vol environments fail at high rates |
ATR Stop-Loss Logic
A fixed stop of $2.00 is too tight on a stock with ATR = $4.00 and too wide on one with ATR = $0.80. ATR-based stops adapt automatically:
ATR Stop-Loss — 1.5× ATR below entry
Volatility Filter Signal
Section 3: Pass vs. Live — Real-Time Reliability
ATR on a live (unclosed) bar updates in real time as the high and low expand. The true range will only be finalized at bar close. For stop-loss calculations, always use the ATR from the prior closed bar — not the current live bar — to avoid sizing your stop on an ATR that hasn't finished forming.
Section 4: Practical Use Cases
Setup: ATR(14) on 15-minute chart Signal: Price breaks above a 10-bar high with ATR rising (not at a low) Entry: Close of the breakout candle Stop: Entry minus 1× ATR(14) from the prior closed bar Key rule: Skip setups where ATR is below its 20-period average — breakouts in compressed vol fail more than 60% of the time
Setup: ATR(14) on daily chart for stop calculation; trend direction from SMA(50) Signal: Price pulls back to SMA(50) in an established uptrend Entry: First daily close that reclaims the prior day's high after the pullback Stop: Entry minus 1.5× ATR(14) on daily Key rule: Target minimum 2:1 risk-reward — ATR stop gives you the risk, target is 3× ATR above entry
Setup: ATR(14) on weekly chart Signal: Weekly breakout above a multi-month high with ATR expanding Entry: Close of the breakout week Stop: Entry minus 2× weekly ATR(14) Key rule: Wide ATR-based stop on weekly charts means small position size — check position sizing before entry
Real example — Position sizing: Account $50,000, risk 1% per trade = $500 maximum risk. AAPL ATR(14) on daily = $3.20. Position size = $500 ÷ $3.20 = 156 shares. Stop = entry price minus 1× ATR = entry minus $3.20. If AAPL is at $175.00, stop goes at $171.80. This size and stop risk exactly $499.20 — within the 1% rule.
Section 5: Pseudo Code
INPUT: high[], low[], close[], period=14
PROCESS:
Step 1: Calculate True Range for each bar i (starting from bar 1, not bar 0)
tr[i] = max(
high[i] - low[i],
abs(high[i] - close[i-1]),
abs(low[i] - close[i-1])
)
Step 2: Seed the first ATR value using a simple average
atr[period] = mean(tr[1 : period+1])
Step 3: Apply Wilder smoothing for all subsequent bars
atr[i] = ((atr[i-1] * (period - 1)) + tr[i]) / period
OUTPUT: atr[] — array of ATR values, NaN for first (period - 1) bars
EDGE CASES:
- Fewer than period bars: return all NaN
- First bar (i=0): no previous close, so tr[0] = high[0] - low[0]
- Gap open: |High - PrevClose| or |Low - PrevClose| will exceed High-Low — ATR captures this correctly
- Period = 1: ATR equals TR of each bar (no smoothing)
Section 6: Parameters & Optimization
Standard ATR Period Conventions
| Period | Common Use | Characteristics |
|---|---|---|
| 7 | Very short-term | Reacts fast; noisy; useful for intraday scalpers |
| 14 | Default (Wilder) | Balanced; works across all timeframes |
| 20 | Slower filter | Smooths out short spikes; good for swing traders |
| 50 | Long-term regime | Identifies multi-month volatility environment |
ATR Multiplier Reference
| Use Case | Typical Multiplier | Notes |
|---|---|---|
| Scalp stop-loss | 1× ATR | Tight; accept more noise-outs |
| Swing stop-loss | 1.5× ATR | Standard; good balance |
| Trend stop-loss | 2× ATR | Wide; fewer stops, larger drawdown |
| Trailing stop | 3× ATR | Used in Chandelier Exit indicator |
What is the Chandelier Exit?
The Chandelier Exit is a trailing stop built on ATR: Chandelier Stop = Highest High over N bars minus 3 × ATR(N). It keeps you in trends by trailing below the highest high, not below the current price. It was developed by Chuck LeBeau and is available natively in TradingView as "Chandelier Exit."
Should I use ATR(14) or ATR(20) for crypto?
Crypto is 2–3× more volatile than equities. ATR(14) on crypto daily charts captures this fine — the higher raw ATR value already reflects the wider swings. What changes is your multiplier: use 1.5× to 2× ATR for crypto stops (same as equities) because the wider swings are already in the ATR number. Do not reduce the multiplier just because the number looks large.
Why does ATR never reach zero?
True Range uses the maximum of three values, all of which are non-negative. Even on a doji bar with identical open/close, the high-low spread is still positive (unless it is a perfect doji on a market with no movement — rare). Wilder smoothing carries forward prior ATR values, so the output decays toward, but never reaches, zero.
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| Chandelier Exit | ATR is the core of Chandelier Exit — trailing stops that adapt to volatility automatically | — |
| Bollinger Bands | Both measure volatility expansion/contraction — combine ATR direction with BB squeeze for entry timing | — |
| ADX | ADX identifies trend strength; ATR identifies volatility level. High ADX + rising ATR = strong trend worth trading | — |
| RSI / Stochastic | Oscillators time entry; ATR sizes the stop — complementary roles with no conflict | — |
| Fixed-dollar stops | — | Mixing ATR-based and fixed stops creates inconsistent risk per trade — pick one framework |
| Realized Volatility (HV) | — | HV measures historical vol; ATR measures current bar volatility. For simple stop placement, ATR is more actionable — HV is for regime analysis |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Using ATR as a buy/sell signal | ATR has no directional information | Combine with trend indicator (SMA, ADX) for direction; use ATR only for sizing/stops |
| Setting stop at exactly 1× ATR | Too tight for most market noise | Use 1.5× to 2× ATR minimum; 1× only for confirmed high-probability setups |
| Using live-bar ATR for stop placement | ATR on unclosed bar is not final | Always read ATR from the prior closed bar |
| Not adjusting multiplier for asset class | Stock ATR multiplier applied to volatile crypto | Crypto ATR is already wide — multiplier can stay the same; the raw number is the adjustment |
| Treating low ATR as a signal to trade less | Low ATR means low volatility, not low opportunity | Low ATR + channel breakout = high-probability setup. The signal is the breakout, ATR is the context |
Section 9: Cheat Sheet
USE WHEN: Sizing a stop-loss, calculating position size, checking volatility regime before a breakout
AVOID WHEN: Looking for directional buy/sell signals — ATR does not provide them
ENTRY SIGNAL: Not a standalone entry signal — use with trend/breakout indicators
EXIT SIGNAL (Stop): Entry minus 1.5× ATR(14) for swing; 1× ATR for scalp; 2× ATR for position
PARAMETERS: Default ATR(14) works across all timeframes and asset classes
CONFLUENCE: ADX (trend strength) + ATR (stop size) + RSI (entry timing) = complete trade framework
RISK: ATR spike after entry invalidates original stop size — recalculate on large volatility jumps
BEST TIMEFRAME: Most useful on Daily and 4H for stop sizing; 15m/1H for scalp stop placement