Trend indicators

Directional Movement Index (DMI) and ADX: Wilder's Formula, How to Read +DI, −DI and ADX, and a Test on Real Prices

J. Welles Wilder's DMI from its documented formula: how +DI, −DI and the Average Directional Index are built, what 20 and 25 mean, and what the crossing rule gave with and without an ADX filter on daily Bitcoin and the S&P 500 ETF.

· Founder of PatternsWizard
Checked 10 min read
DMI(14), ADX(14)
On this page
  1. How +DI, −DI and ADX are calculated
  2. How to read the three lines
  3. Crossings with and without an ADX filter
  4. The crossings on the chart above
  5. Does it work?
  6. Frequently asked questions

The Directional Movement Index (DMI) is J. Welles Wilder's system of three lines: +DI measures how much of the recent range came from upward moves, −DI how much came from downward moves, and the Average Directional Index (ADX) measures how strong the trend is, whatever its direction. +DI above −DI points to an uptrend, −DI above +DI to a downtrend, and an ADX above 25 says the trend is strong enough to trade, below 20 that there is none. Wilder published it in his 1978 book New Concepts in Technical Trading Systems with a 14-period setting. Below we compute it on real daily prices and run the crossing rule with and without an ADX filter, on daily Bitcoin from August 23, 2025 and the S&P 500 ETF from February 10, 2025, both to October 28, 2026.

+DI, −DI and ADX on daily Bitcoin

87,39672,59857,8002520Feb 21, 2026Jun 25, 2026Oct 28, 2026
  • Price, daily candles (hollow up, filled down)
  • +DI(14) (solid line)
  • −DI(14) (solid line, second color)
  • ADX(14) (dashed line)
DMI(14), ADX(14) on Bitcoin, daily, February 21, 2026 to October 28, 2026. Illustration of how the indicator reads, not a backtest.

How +DI, −DI and ADX are calculated

Directional movement compares each bar with the one before. If today's high minus yesterday's high is larger than yesterday's low minus today's low, and positive, the bar has plus directional movement (+DM) equal to that difference and no minus movement; in the opposite case it has minus directional movement (−DM). An inside bar has neither.

Plus and minus directional movement between two bars

Up move larger:+DM counts, −DM is zeroYesterdayToday+DMSmallerDown move larger:−DM counts, +DM is zeroYesterdayTodaySmaller−DM
+DM
today's high minus yesterday's high, when it is the larger move and positive
−DM
yesterday's low minus today's low, when it is the larger move and positive
Schematic, not market data.

Only the larger of the two moves counts, even when both are positive, as in the first case above: an outside bar that reaches far above yesterday's high and a little below its low counts as pure upward movement. Wilder then smooths +DM, −DM and the true range over 14 bars with his own running sum, and divides: +DI is the share of the true range made of upward movement, −DI the share made of downward movement.

How to read the three lines

What you seeWhat it means
+DI above −DIUpward movement dominates: an uptrend over the period
−DI above +DIDownward movement dominates: a downtrend
ADX above 25A strong trend, in Wilder's reading as StockCharts reports it
ADX below 20No trend
ADX risingThe trend, up or down, is strengthening
ADX falling from a high levelThe trend is losing strength, not necessarily reversing

The ADX has no direction: a strong downtrend lifts it as much as a strong uptrend. That is why it is read together with the two DI lines and never alone. Between 20 and 25 is a gray zone, and StockCharts notes that many analysts use 20 as the key level. Over our test periods the ADX was below 25 on 64% of the days on the S&P 500 ETF (275 of 432) against 42% on Bitcoin (183 of 432), which is one reason the filter removed a larger share of the ETF's crossings.

+DI, −DI and ADX on the daily S&P 500 ETF

781.6703.9626.12520Oct 30, 2025Apr 30, 2026Oct 28, 2026
  • Price, daily candles (hollow up, filled down)
  • +DI(14) (solid line)
  • −DI(14) (solid line, second color)
  • ADX(14) (dashed line)
DMI(14), ADX(14) on S&P 500 ETF, dividend-adjusted prices, daily, October 30, 2025 to October 28, 2026. Illustration of how the indicator reads, not a backtest.

Crossings with and without an ADX filter

StockCharts describes Wilder's signals as +DI crossing above −DI for a buy and −DI crossing above +DI for a sell, with the ADX above 25 to confirm a trend, and the signal day's low or high as the initial stop. We tested the crossing part on our two daily series: enter at the next open after a crossing, exit at the next open after the opposite crossing, before costs, with Wilder's 14-bar settings. Without a filter the position is reversed at each crossing; with a filter a crossing is taken only if the ADX is at or above the threshold on the signal day, and the trade is still closed at the next opposite crossing. The test starts once the smoothing has settled, on August 23, 2025 for Bitcoin and February 10, 2025 for the S&P 500 ETF (dividend-adjusted prices), and runs to October 28, 2026.

Market and filterTradesWinning tradesResultBars in a position
Bitcoin, no filter2510 of 24+52.63%430 of 432
Bitcoin, ADX ≥ 20145 of 14+20.69%243
Bitcoin, ADX ≥ 2582 of 8−0.71%88
Bitcoin, ADX ≥ 3051 of 5+2.61%77
S&P 500 ETF, no filter399 of 38−3.49%429 of 432
S&P 500 ETF, ADX ≥ 20124 of 12+2.89%160
S&P 500 ETF, ADX ≥ 2562 of 6+2.99%77
S&P 500 ETF, ADX ≥ 3021 of 2+0.73%21

Over the same periods, from the close of the first day to the close of October 28, 2026, holding Bitcoin lost 29.53% and holding the ETF gained 30.19%. The unfiltered results include a short still open on October 28, 2026 on each market. The filter cut the number of trades, as it should, but the two markets did not agree on the rest. On Bitcoin the share of winners fell as the threshold rose, from 10 of 24 to 1 of 5, and the result fell from +52.63% to a loss of 0.71% at 25. On the ETF it rose, from 9 of 38 to 2 of 6 at 25, and a small loss became a small gain, on very few trades. Part of the reason is visible on the chart: the ADX is a smoothed average of a smoothed ratio, so at the start of a new trend it is still low.

DI crossing rule, total result by ADX filter

No filter+52.63%−3.49%ADX at or above 20+20.69%+2.89%ADX at or above 25−0.71%+2.99%ADX at or above 30+2.61%+0.73%
  • Bitcoin, from Aug. 23, 2025
  • S&P 500 ETF, from Feb. 10, 2025
Our computation; the inputs and the method are in the text.Daily bars to October 28, 2026, Wilder's 14-bar settings, entry and exit at the next open, before costs. Holding Bitcoin lost 29.53% and holding the ETF gained 30.19% over the same periods.

The crossings on the chart above

The chart shows daily Bitcoin from February 21 to October 28, 2026. On February 21 the unfiltered system was short, from a crossing on January 20; that short was closed on March 5 with a gain of 17.82%. Every crossing that traded in the window, unfiltered and with the 25 filter:

Crossings (signal day)ADX on the signal dayTrades and results, entry at the next openTaken with the 25 filter
January 20 short, open on February 2131.1+17.82%, closed March 5Yes
Six, March 4 to March 2643.7 falling to 16.6Six losing or flat trades, −0.05% to −6.27%The first three (43.7, 38.7, 31.5)
April 6 long13.7+11.83%, to May 19No
May 18 short, May 20 long25.7, 22.5−0.71%, −2.60%May 18 only
May 22 short20.4+8.21%, to August 20No
August 19 long19.1+19.95%, to October 14, the August and September rallyNo
Five, October 13 to 2229.6 to 18.3+1.48%, +1.33%, −1.28%, −3.18%, and a short still open on October 28, up 0.09%October 13 only

With the 25 filter, the system also held the January 20 short (ADX 31.1) at the start of the window and closed it on March 5 at +17.82%, the best filtered trade of the period, entered on January 21 at 88,427.66 and exited at 72,666.77, after a low close of 62,909.86 in between. It then took the three March crossings at ADX readings of 43.7, 38.7 and 31.5, the late moves of the decline, and lost on all three; it took the May 18 short (ADX 25.7, −0.71%) and the October 13 short (ADX 29.6, +1.48%). It skipped the April 6, May 22 and August 19 crossings, the three largest gains among the trades opened in the window, because the ADX was below 25 on their signal days. In this window the filter kept one strong trend, three late entries and two small trades, and missed the three trends that started from a low ADX.

Bitcoin crossings in the chart window: taken or skipped by the 25 filter

Jan. 20 short, ADX 31.1, taken+17.82%Mar. 4 long, ADX 43.7, taken−6.27%Mar. 6 short, ADX 38.7, taken−2.69%Mar. 10 long, ADX 31.5, taken−2.99%Apr. 6 long, ADX 13.7, skipped+11.83%May 18 short, ADX 25.7, taken−0.71%May 22 short, ADX 20.4, skipped+8.21%Aug. 19 long, ADX 19.1, skipped+19.95%Oct. 13 short, ADX 29.6, taken+1.48%
Our computation; the inputs and the method are in the text.Signal days of 2026; each trade enters at the next open and exits at the next open after the opposite crossing. Highlighted: the trades the filter skipped.

Does it work?

We have no long-run measurement of the DMI: our bench tests chart patterns detected by rule against random entries, not indicators (see our methodology). The tables above cover two markets, about 14 months of Bitcoin and 20 months of the ETF, before costs, without Wilder's stop on the signal bar; they show how the rules behave, not that they work. For other trend strength tools see the Aroon indicator and the Choppiness Index, or the full list of trend indicators.

Every pattern's results on one sheet

The only pattern cheat sheet with tested stats: 152 patterns, what the textbook says and what really happened on 6 markets. Free PDF, sent to your inbox.

One email with the PDF, then a note when a result changes. Unsubscribe anytime. Privacy.

Frequently asked questions

What is the difference between DMI and ADX?

The DMI is the whole system; the ADX is one of its three lines. +DI and −DI give the direction, the ADX the strength of the trend. The ADX is computed from the two DI lines.

How do you read the DMI indicator?

Check which DI line is on top for the direction, then the ADX for the strength: above 25 a strong trend, below 20 none, in Wilder's reading. A crossing of the DI lines is the classic signal; a rising ADX says the move has force behind it.

What are the best DMI settings?

Wilder's 14 periods are the standard. Shorter periods make the lines cross more often; longer ones make the ADX even slower to react. We have no evidence that another setting is better.

Is an ADX of 25 a good filter?

It is the threshold Wilder is reported to use. On our two daily series it removed most crossing trades; it lowered the share of winners on Bitcoin and raised it on the S&P 500 ETF, on only six trades. On the 2026 Bitcoin chart it kept a January short that gained 17.82%, but skipped the three largest gains among trades opened in the window, because the ADX was still low when those trends started.

Can the ADX tell whether the trend is up or down?

No. The ADX only measures strength; a strong fall raises it as much as a strong rise. The direction comes from +DI and −DI.

What is DX in the DMI?

The directional index, the raw daily value 100 × |+DI − −DI| / (+DI + −DI). The ADX is its 14-period Wilder average, which is the line charts show.

Sources

  1. StockCharts ChartSchool, Average Directional Index (ADX)
  2. StockCharts ChartSchool, Average True Range (ATR)
, Founder of PatternsWizard

Passionate about finance, quantitative trading and data analysis. Amaury built the PatternsWizard test bench, which detects each pattern on full price history and measures what happened next against random entries.

PatternsWizard tests chart and candlestick patterns on full market history, against random entries. How we test patterns.

179 patterns testedRandom-walk self-test passed

All trend indicators articles