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.
On this page
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
- Price, daily candles (hollow up, filled down)
- +DI(14) (solid line)
- −DI(14) (solid line, second color)
- ADX(14) (dashed line)
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
- +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
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 see | What it means |
|---|---|
| +DI above −DI | Upward movement dominates: an uptrend over the period |
| −DI above +DI | Downward movement dominates: a downtrend |
| ADX above 25 | A strong trend, in Wilder's reading as StockCharts reports it |
| ADX below 20 | No trend |
| ADX rising | The trend, up or down, is strengthening |
| ADX falling from a high level | The 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
- Price, daily candles (hollow up, filled down)
- +DI(14) (solid line)
- −DI(14) (solid line, second color)
- ADX(14) (dashed line)
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 filter | Trades | Winning trades | Result | Bars in a position |
|---|---|---|---|---|
| Bitcoin, no filter | 25 | 10 of 24 | +52.63% | 430 of 432 |
| Bitcoin, ADX ≥ 20 | 14 | 5 of 14 | +20.69% | 243 |
| Bitcoin, ADX ≥ 25 | 8 | 2 of 8 | −0.71% | 88 |
| Bitcoin, ADX ≥ 30 | 5 | 1 of 5 | +2.61% | 77 |
| S&P 500 ETF, no filter | 39 | 9 of 38 | −3.49% | 429 of 432 |
| S&P 500 ETF, ADX ≥ 20 | 12 | 4 of 12 | +2.89% | 160 |
| S&P 500 ETF, ADX ≥ 25 | 6 | 2 of 6 | +2.99% | 77 |
| S&P 500 ETF, ADX ≥ 30 | 2 | 1 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
- Bitcoin, from Aug. 23, 2025
- S&P 500 ETF, from Feb. 10, 2025
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 day | Trades and results, entry at the next open | Taken with the 25 filter |
|---|---|---|---|
| January 20 short, open on February 21 | 31.1 | +17.82%, closed March 5 | Yes |
| Six, March 4 to March 26 | 43.7 falling to 16.6 | Six losing or flat trades, −0.05% to −6.27% | The first three (43.7, 38.7, 31.5) |
| April 6 long | 13.7 | +11.83%, to May 19 | No |
| May 18 short, May 20 long | 25.7, 22.5 | −0.71%, −2.60% | May 18 only |
| May 22 short | 20.4 | +8.21%, to August 20 | No |
| August 19 long | 19.1 | +19.95%, to October 14, the August and September rally | No |
| Five, October 13 to 22 | 29.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
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.
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.
