Skip to content
Indicators 8 min read

Average directional index (ADX): calculation and reading

How ADX is calculated from directional movement and true range, a worked example of +DI, −DI and DX, how to read trend strength, and the limits of ADX.

Hypothetical daily chart: price moves sideways and then declines steadily, while ADX(14) in the pane below rises during the decline and the +DI minus −DI bars stay below zero.ADX above 25025ADX(14); bars: +DI minus −DI
Daily candles on hypothetical data with ADX(14). The bars show +DI minus −DI: below zero, downward movement dominates. ADX stays below 20 while price moves sideways, rises above 25 during the decline and peaks at 40.4 before easing as the decline flattens. ADX rose while price fell.

ADX measures how strong a trend is, not which way it runs. Read its level and slope together with +DI and −DI, and expect it to react late.

What the average directional index measures

The average directional index, or ADX, measures the strength of a trend on a 0 to 100 scale, whatever its direction. J. Welles Wilder Jr. introduced it in 1978 together with two companion lines, the positive and negative directional indicators, +DI and −DI, which make up his directional movement system.

ADX at a glance
PropertyADX
InputsDaily highs, lows and closes
Standard period14 sessions
LinesADX, +DI and −DI
Scale0 to 100
DirectionFrom +DI against −DI; ADX itself has no sign
First valueAbout two periods in: the 28th session of a series for ADX(14)

ADX answers one question: is price moving persistently in one direction, or chopping back and forth? A rising ADX means directional movement is becoming more dominant relative to the overall range. A falling ADX means it is fading, which happens both when a trend ends and when it pauses.

ADX directional movement calculation

Wilder compared each session’s high and low with the prior session’s. The part of the range above the prior high is upward movement; the part below the prior low is downward movement. Only the larger of the two counts.

up move = high − prior high
down move = prior low − low
+DM = up move, if up move > down move and up move > 0; otherwise 0
−DM = down move, if down move > up move and down move > 0; otherwise 0
true range = max(high − low, |high − prior close|, |low − prior close|)
  • An inside session, with a lower high and a higher low, has no directional movement: both values are 0.
  • An outside session extends both ways; only the larger extension counts.
  • When the up move equals the down move, both values are 0.
  • +DM and −DM are never both positive in the same session.

True range, the same measure used in average true range, is the yardstick: directional movement is divided by it in the next step.

Average directional index calculation

The calculation smooths the three daily series, turns them into two directional indicators, measures how far apart those are and smooths the result again.

smoothed TR, +DM and −DM: first value = average of the first n values; then (prior × (n − 1) + current) ÷ n
+DI = 100 × smoothed +DM ÷ smoothed TR
−DI = 100 × smoothed −DM ÷ smoothed TR
DX = 100 × |+DI − −DI| ÷ (+DI + −DI)
ADX: first value = average of the first n DX values; then (prior ADX × (n − 1) + DX) ÷ n
n
The period, 14 by default.

Wilder’s worksheets kept running sums instead of averages: the prior sum, minus the prior sum divided by n, plus the current value. The sums are n times the averages, so the ratios, and therefore +DI and −DI, come out the same either way.

Edge cases: if every true range so far has been 0, the smoothed true range is 0, and +DI and −DI divide by zero; they are undefined. If +DI and −DI are both 0, there has been no directional movement since the calculation began, and DX is 0 ÷ 0, also undefined. Software that prints a number for such sessions is applying its own convention.

The warm-up is long. The first +DI and −DI need n price changes, which takes n + 1 sessions, and the first ADX needs n DX values. With n = 14, ADX first appears at the 28th session of a series, and early values still carry the starting point, so ADX settles only after further sessions.

ADX and directional indicators example

To keep the tables short, this example uses n = 5 instead of 14; every step is the same. The 13 hypothetical sessions include an inside session (session 2), a session whose up and down moves are equal (session 3) and a run of rising sessions.

Directional movement and true range, sessions 0–12
SessionHigh ($)Low ($)Close ($)Up moveDown move+DM−DMTrue range
020.5019.9020.30
120.8020.1520.60+0.30-0.250.300.000.65
220.7020.2520.40-0.10-0.100.000.000.45
321.0019.9520.15+0.30+0.300.000.001.05
420.6019.7019.85-0.40+0.250.000.250.90
520.4519.8020.35-0.15-0.100.000.000.65
620.9520.2020.85+0.50-0.400.500.000.75
721.3020.6021.15+0.35-0.400.350.000.70
821.2020.3520.50-0.10+0.250.000.250.85
921.5520.4021.40+0.35-0.050.350.001.15
1021.9021.1021.75+0.35-0.700.350.000.80
1122.2521.4522.10+0.35-0.350.350.000.80
1222.1021.3021.45-0.15+0.150.000.150.80
Smoothed values, +DI, −DI, DX and ADX with n = 5, sessions 5–12
SessionSmoothed TRSmoothed +DMSmoothed −DM+DI−DIDXADX
50.74000.06000.05008.116.769.09
60.74200.14800.040019.955.3957.45
70.73360.18840.032025.684.3670.96
80.75690.15070.075619.919.9933.19
90.83550.19060.060522.817.2451.8244.50
100.82840.22250.048426.855.8464.2748.46
110.82270.24800.038730.144.7073.0053.36
120.81820.19840.061024.257.4552.9853.29

The first directional indicators appear at session 5, after five changes. +DI (8.11) and −DI (6.76) are close, so DX is only 9.09: neither direction dominates. As the up moves of sessions 6 and 7 enter the averages, +DI rises to 25.68 and DX to 70.96. The first ADX, at session 9, averages the DX values of sessions 5 to 9: 44.50. The down move of session 12 cuts DX to 52.98, yet ADX barely moves, from 53.36 to 53.29, because it smooths DX once more.

With n = 5 the lines react faster and reach higher values than with the standard 14 sessions, so the readings here are not comparable with the 20 and 25 conventions below. Values are rounded for display; each step uses the unrounded figures.

ADX trend strength levels explained

Traders attach rough meanings to ADX levels. The bands below are conventions found across many references for the standard 14-session ADX; they are not thresholds that come out of the formula.

Common readings of ADX(14)
ADX(14)Common reading
Below 20Weak or no trend: directional movement is small relative to the range
20 to 25A trend may be developing
25 to 50A trend is present
Above 50Very strong directional movement

The slope often says more than the level. An ADX rising from 15 to 22 says directional movement is building; an ADX falling from 45 to 35 says a trend is losing dominance even though the reading is still high. Because ADX is smoothed twice, it can peak after price has already made its most directional move.

How to read the average directional index on a stock chart

ADX is usually drawn with +DI and −DI in one pane below price, all on the same 0 to 100 scale.

  1. Read direction from the DI lines. +DI above −DI means upward movement has dominated the smoothed window; −DI above +DI means downward movement has.
  2. Read strength from ADX: its level and, above all, its slope.
  3. Note DI crossovers. When +DI and −DI cross, the dominant direction changes, and DX is near 0 at that moment, which pulls ADX lower.
  4. Compare with price. ADX summarizes the swings you can see in the highs and lows; it adds no information that is not in the bars.

TradeClever’s Stock Charts show the daily candles that directional movement is computed from: a run of higher highs with shallow pullbacks is upward movement dominating, and the reverse is downward movement. For candle basics, see reading a stock chart.

Why ADX can rise while a stock price falls

ADX has no sign. It is built from the absolute difference between +DI and −DI, so a strong decline lifts it exactly as a strong advance would.

In the illustration on this page, ADX stays below 20 while price moves sideways, rises above 25 during the decline and peaks at 40.4. Throughout the decline −DI is above +DI, shown as bars below zero. A rising ADX in a falling stock describes a strengthening downtrend, not strength in the stock.

Always read ADX with +DI and −DI, or with the price chart, before calling a trend strong in either direction.

ADX versus Aroon for trend analysis

The Aroon indicator, introduced by Tushar Chande in 1995, also separates trending from non-trending markets, but it measures time rather than distance: how many sessions have passed since the highest high and the lowest low of the lookback.

Aroon Up = 100 × (n − sessions since the highest high) ÷ n
Aroon Down = 100 × (n − sessions since the lowest low) ÷ n
n
The lookback, often 25 sessions.
ADX and Aroon
AspectADXAroon
MeasuresHow dominant directional movement is relative to the rangeHow recently the highest high and lowest low occurred
InputsHighs, lows and closesHighs and lows
DirectionFrom +DI against −DIFrom Aroon Up against Aroon Down
SmoothingTwo layers of Wilder smoothingNone; values jump when an extreme enters or leaves the window
Common period1425

ADX changes slowly and steadily. Aroon reacts as soon as a new high or low is set and can change sharply when an old extreme drops out of its window. Neither says where a trend goes next; the Aroon indicator guide covers its calculation in full.

Limitations of the average directional index

ADX is a slow, non-directional summary of directional movement, and its main limits follow from that design.

  • It lags. Two layers of Wilder smoothing mean ADX often turns well after the price move that drove it.
  • It has no direction of its own.
  • Levels are conventions. The same reading can mean different things for a volatile stock and a quiet one.
  • The warm-up is long, about two periods, and early values depend on the starting point.
  • Wide swings inside a range can lift ADX for a while even though price ends where it started.
  • Some sessions leave it undefined: a smoothed range of 0, or no directional movement at all.

Sources

  • J. Welles Wilder Jr., New Concepts in Technical Trading Systems (1978)

Read our data and methodology notes for calculation context. This guide explains research tools and observations. It does not recommend a trade or investment.

Follow your curiosity

One good question leads to another.

All guides
Make room for better research

Put your curiosity to work.

Build a scan with filters or CleverScan rules. Explore the results. Find your next idea.

Open a stock chart