1999issue C021-8
Building the average directional index from range extension and true range
Each bar is given one net directional movement, scaled by true range, and accumulated over a lookback so the average directional index can classify whether a market is trending before a trend-following rule is applied.
- Each bar receives exactly one net directional movement: upward extension, downward extension, or none, after the current high-low range is compared with the prior bar.
- When a bar extends both ways, only the larger outside portion is kept; an inside bar or equal outside portions produce zero directional movement, and true range is always recorded as a positive scale.
- A directional indicator is directional movement divided by true range, then accumulated over a shared lookback so the directional index can express how one-sided that window has been.
- The finished average directional index is meant to classify whether a market is trending before a trend-following rule is applied; a slower average of that index is presented as a confirmation step that must be backtested if its rule is changed.
What each bar contributes
Each bar is assigned exactly one net directional movement: upward extension, downward extension, or none. The assignment is made by comparing the current high-low range with the prior bar.
Positive directional movement is the upward part of the current bar that extends beyond the prior bar, or zero when that upward extension is not the larger of the two sides. Negative directional movement is the downward part of the current bar that extends beyond the prior bar, recorded as a positive magnitude when that downward extension is the larger of the two sides.
When a bar extends both above and below the prior range, only the larger outside portion is kept as directional movement. An inside bar, or a bar whose outside portions are equal, produces zero directional movement.
True range as a positive scale
True range is defined as the largest of the current high minus low, the current high minus the prior close, and the current low minus the prior close. It is always recorded as a positive value.
In the same construction, true range is the largest of the current high-low span and the two gaps from the prior close to the current high or low. Directional movement is later read against this scale, not against a raw price change.
Directional indicators over a lookback
A directional indicator is built by dividing that bar’s directional movement by true range. Both the upward and downward indicators are nonnegative ratios of range extension to realized range.
Those daily ratios are then accumulated over a lookback, commonly 14 bars and sometimes 13 or 20, by summing true ranges and summing each side’s directional movement over the same window. The raw one-bar ratio is less jumpy after that accumulation.
The construction treats a trend as a series of ranges that keep extending in a consistent direction, then expresses that extension as a function of true range rather than as a raw price change.
From two sides to one filter
The directional index is the absolute gap between the two directional indicators, scaled by their sum, so one number expresses how one-sided the lookback has been. The average directional index is a smoothed score of how much successive true ranges extend one way rather than both ways, used to judge whether a market is trending enough for a directional rule.
The finished filter is meant to classify whether a market is trending before a trend-following rule is applied. Methods built for trends and methods built for ranges can fail when used in the other regime.
A further average of the directional index, the average directional rating, can be used as a slower confirmation step. It is sometimes used as a slower confirmation that a trend filter has already crossed a construction threshold. A construction change such as requiring that average to rise through a threshold instead of merely sitting above it is presented as something that must be backtested on the intended series.
Fourteen-day plus DI, minus DI, and DX from the ADX worksheet

The worksheet prints +DI, −DI and DX as whole numbers. ADX has not started in these rows because the second 14-session average of DX is still incomplete.
All readings on this track · 56 readings
- 1986Cycle-aligned directional trend indicator
- 1987What crossover and directional entry rules actually compare
- 1988A directional-line cross needs a trend filter, an extreme-point rule, and a dollar stop
- 1988Constructing true range by offset addressing
- 1988Constructing directional movement from bar range
- 1988Average directional index construction: recursive smoothing and lookback offset
- 1988Staged Average Directional Index construction with Relative Strength Index confirmation and stop alerts
- 1988Average Directional Index construction with frozen true range and directional rules
- 1991Constructing the average directional index from range expansion and true range
- 1991Constructing five-session forecasts from stochastic, ADX, and MACD inputs
- 1993Constructing the average directional index from directional movement and true range
- 1993Confirming n-bar breakouts with ADX and DX filters
- 1994Constructing a Bollinger band-width trend filter
- 1994A pre-trade checklist that can refuse a long three ways
- 1997An ADX threshold and a moving average as a trend filter
- 1998Regime filters for mutated indicators
- 1999Building the average directional index from range extension and true range
- 2000Evaluating ADX, RSI, and moving averages in a multi-stock warehouse
- 2000Stochastic pop as a filtered continuation setup
- 2000Onset and exit from one average directional index
- 2002Joint ADX and MACD readout for trend strength and direction
- 2003Adaptive Donchian breakout with implied volatility and volume
- 2004The average directional index as a regime gate for the relative strength index and the stochastic oscillator
- 2004Constructing true-range-specified volume as a directional filter
- 2005Constructing a multi-filter penny stock breakout procedure
- 2005Construct one playbook that flips with session regime
- 2005Combining Bollinger Bands, the average directional index, and Fibonacci retracement on currency pairs
- 2006Assembling an adaptive price zone from double-smoothed averages
- 2006An ADX strength gate for MACD and the stochastic oscillator
- 2007Directional movement as a filter plus trigger
- 2007Constructing a veto-first trend permission stack
- 2007ADX gates for trend end, range, and reversal
- 2008Constructing a nine-cell directional-ratio grid
- 2008Average directional index and directional trend indicator lookbacks as trend-filter parameters
- 2008A holding-matched market lens from averages and directional-line crosses
- 2008A nine-cell directional scoreboard for multi-horizon entries
- 2010Building a Vortex Indicator from high-low distances
- 2010Constructing ADX, RSI, and MACD price filters
- 2011Constructing a volume zone oscillator with a moving-average and Average Directional Index regime filter
- 2011A volume zone oscillator conditioned by an Average Directional Index filter
- 2011Candlestick names need volume-price, ADX, and moving-average checks
- 2012Clustered average-directional-index traces as a trend-start filter
- 2012Average Directional Index cluster filters for trend-start signals
- 2012Confirming a trend start or turn with a triple ADX cluster
- 2013Constructing a late-entry stack from a signed DMI oscillator
- 2013A directional oscillator and its stochastic as a stacked timing filter
- 2013ADX cluster lookbacks are a locked specification, not a chart label
- 2013Combining moving averages, stochastics, and ADX in a daily scan
- 2015Assembling the Average Directional Index from directional movement
- 2016How an Average Directional Index filter and a breakout entry form one procedure
- 2016Score RSI and stochastic crossings only when ADX confirms the trend
- 2018Constructing an ADX filter for intraday breakouts
- 2018An ADX volatility gate for prior-day breakouts
- 2019Exponential deviation bands with a moving average, RSI and ADX
- 2020A normalized-slope trend filter from linear regression
- 2020Gating volatility-momentum divergences with a Trend filter