ADX (Average Directional Index) tells you how strong the current trend is — not which direction it is going. It solves the most common problem in technical analysis: entering a trend-following indicator signal in a market that is actually ranging.

Trend-Following / Filter
Category
Intermediate
Difficulty
0 to 100 (typically 10–60 in practice)
Output Range
14
Default Period
None
Repaint Risk
Simple — uses high, low, and close
Data Need
TREND · FILTER · LAGGING · BEGINNER_FRIENDLY · REAL_TIME
Tags

Section 1: Core Mechanics

ADX is part of the Directional Movement System developed by J. Welles Wilder in 1978. It always moves between 0 and 100. Rising ADX = trend getting stronger. Falling ADX = trend weakening. ADX does not tell you if the trend is up or down — only how strong it is.

The system comes with two companion lines: +DI (Positive Directional Indicator) and -DI (Negative Directional Indicator) that show direction. ADX shows strength.

Formula

Directional Movement:

True Range and Directional Indicators:

Directional Index and ADX:

Where Wilder smoothing uses (heavier than standard EMA) and requires a seed of N bars before producing valid values.

Inputs

  • High: Bar high price
  • Low: Bar low price
  • Close: Previous close for True Range calculation
  • Period (N): Smoothing period for all Wilder calculations. Default: 14.

Parameters

Parameter Default Range Impact
Period (N) 14 7–30 Lower = more sensitive, noisier ADX. Higher = slower to confirm trend.

Output

Three series: ADX (0-100), +DI (0-100), -DI (0-100). All plotted in a separate sub-panel below price. ADX is typically the thicker line; +DI and -DI are thinner.

Visual Behavior

  • ADX rising from below 20 toward 25 = trend building
  • ADX above 25 and rising = strong trend — trend-following strategies are valid
  • ADX above 40 = very strong trend (less common, often near exhaustion)
  • ADX falling from above 25 = trend weakening, watch for reversal or consolidation
  • +DI above -DI = upward directional movement dominant
  • -DI above +DI = downward directional movement dominant

Section 2: Interpretation & Signals

ADX Strength Levels

ADX Reading Interpretation Strategy Implication
Below 20 No trend / ranging Avoid trend-following strategies; use mean-reversion
20 to 25 Weak trend / possible breakout Use cautiously — wait for ADX to confirm above 25
25 to 40 Trending — valid trend-following zone Trade trend signals: EMA crossovers, MACD, Supertrend
40 to 50 Strong trend Trail stops wider — trend has momentum
Above 50 Very strong trend — rare Caution: extreme readings often precede consolidation

DI Crossover Signal

The +DI/-DI crossover gives direction alongside ADX's strength reading:

  • +DI crosses above -DI AND ADX > 25 → bullish entry signal
  • -DI crosses above +DI AND ADX > 25 → bearish entry signal
  • Crossover when ADX < 20 → ignore — no trend behind it

ADX Filter — DI Cross with ADX Above 25

ADX as a Filter for Other Indicators

The primary use of ADX is not to generate signals itself — it is to validate signals from other indicators:

  • Before acting on an EMA crossover → check ADX > 25
  • Before acting on a MACD bullish cross → check ADX > 20
  • Before entering any Supertrend or Ichimoku signal → confirm ADX is rising
💡 TIP
ADX rising through 25 from below is a regime change signal. The market is transitioning from ranging to trending. This is the optimal entry point for trend-following strategies — early in the trend, before it becomes obvious to everyone.

Extreme ADX Readings

When ADX peaks above 50 and begins to fall, it signals that the trend is exhausting itself. Price may continue moving in the same direction (momentum carries it), but the rate of change is declining. This is a warning to tighten stops, not necessarily to reverse.

⚠️ WARNING
A falling ADX does NOT mean the trend reversed — it means trend strength is declining. Price can continue to drift in the same direction for many more bars while ADX falls. Do not short a falling ADX in isolation.

Section 3: Pass vs. Live — Real-Time Reliability

None — ADX and DI lines lock on bar close
Repaint Risk
Double-smoothed — ADX smooths DX which smooths DM — significant lag
Lag
Wilder smoothing uses k=1/N which is slower than EMA — plan for delayed signals
Confirmation Timing
Regime filter (trend vs range) before entering any trend strategy
Best Use
Entry timing — ADX confirms trends that are already in progress
Avoid

ADX uses Wilder smoothing, which converges more slowly than standard EMA. A 14-period ADX typically needs 28+ bars before the reading is stable. Always use at least 2× the period in warmup bars. On bar close, ADX locks — no repaint.


Section 4: Practical Use Cases

Setup: ADX(14) on 15m chart as regime filter; trade only when ADX > 20 Signal: +DI crosses above -DI AND ADX rising above 20 Entry: Next candle after +DI/-DI cross confirms above 20 ADX threshold Exit: ADX peaks and starts declining, or -DI crosses back above +DI Key rule: On 15m, ADX moves fast — re-check ADX every 30 minutes during a trade

Real example: Any sustained market trend — when ADX(14) daily rises through 25, it signals the start of a tradeable trend. During SPY's 2023 bull run, ADX cleared 25 in January 2023 and remained elevated throughout the year. Markets where ADX stayed below 20 for weeks (like late 2022 consolidation) crushed trend-following strategies with repeated whipsaws.


Section 5: Pseudo Code

INPUT: high[], low[], close[], period=14

PROCESS:
  Step 1: Compute True Range for each bar i:
            tr[i] = max(high[i]-low[i], abs(high[i]-close[i-1]), abs(low[i]-close[i-1]))

  Step 2: Compute raw DM:
            plus_dm[i]  = high[i]-high[i-1] if high[i]-high[i-1] > low[i-1]-low[i] and > 0 else 0
            minus_dm[i] = low[i-1]-low[i]   if low[i-1]-low[i] > high[i]-high[i-1] and > 0 else 0

  Step 3: Wilder smooth TR, +DM, -DM using period N:
            Seed: wilder_tr[N]   = sum(tr[1:N+1])
            For i > N: wilder_tr[i] = wilder_tr[i-1] - (wilder_tr[i-1]/N) + tr[i]
            (same formula for wilder_plus_dm and wilder_minus_dm)

  Step 4: Compute DI lines:
            plus_di[i]  = 100 * wilder_plus_dm[i]  / wilder_tr[i]
            minus_di[i] = 100 * wilder_minus_dm[i] / wilder_tr[i]

  Step 5: Compute DX:
            dx[i] = 100 * abs(plus_di[i] - minus_di[i]) / (plus_di[i] + minus_di[i])

  Step 6: Wilder smooth DX to get ADX:
            Seed: adx[2*N] = average of dx[N : 2*N]
            For i > 2*N: adx[i] = (adx[i-1] * (N-1) + dx[i]) / N

OUTPUT: adx[], plus_di[], minus_di[]
EDGE CASES:
  - Need at least 2*N bars for valid ADX: 28 bars minimum for period=14
  - If plus_di[i] + minus_di[i] = 0: set dx[i] = 0 to avoid division by zero
  - NaN in high/low/close: propagate NaN through entire chain

Section 6: Parameters & Optimization

Standard ADX Conventions

Period Common Use Notes
7 Very fast, intraday Noisy — only for high-frequency scalping analysis
14 Standard default Works across all timeframes — Wilder's original setting
21 Slower, more stable Better for weekly charts and position trading
30 Very slow Signals major trend regimes only

Parameter Impact

Change Effect When to Apply
Decrease period Faster ADX response, more spikes Fast markets, intraday scalping
Increase period Slower, smoother ADX curve Weekly charts, long-term position sizing
What is Wilder smoothing and why does ADX use it?

Wilder smoothing uses k = 1/N instead of the EMA standard k = 2/(N+1). For N=14, Wilder uses k ≈ 0.0714 vs EMA's k ≈ 0.1333. This makes Wilder smoothing significantly heavier — it responds more slowly to new data. Wilder designed ADX, ATR, and RSI to be slow, stable indicators that do not whipsaw. The tradeoff is more lag. All three indicators use this same slower smoothing by design.

Why does ADX peak before the trend ends?

ADX measures the RATE OF CHANGE in directional movement — not the level. When trend strength hits its maximum rate of acceleration, ADX peaks. The trend continues but decelerates. This is similar to a car reaching top speed: it stops accelerating but keeps moving. ADX peak = deceleration, not reversal.

Market-Specific Adjustments

  • Crypto: ADX(14) on daily works well. On 4H, use ADX(10) for faster regime detection
  • Equities earnings: ADX spikes hard around earnings — ignore ADX for 2 days before and after reports
  • Forex: Standard ADX(14) daily — pairs like USDJPY tend to trend strongly; ADX stays elevated longer

Section 7: Synergies & Conflicts

Works Well WithAvoid Combining With
EMA crossoversUse ADX > 25 as mandatory filter before acting on any EMA cross signal
MACDMACD zero-line cross + ADX > 25 = high-confidence trend entry
SupertrendADX confirms Supertrend flip signals in genuine trending environments
IchimokuADX above 25 validates Ichimoku cloud breakout signals
RSI overbought/oversoldRSI mean-reversion signals conflict with ADX trend-following — opposing philosophies
Bollinger Band bounceBollinger mean-reversion + ADX trending signal are contradictory — pick one approach
Multiple ADX periodsADX(7) and ADX(21) on same chart give contradictory readings — use one period

Section 8: Common Mistakes

Mistake Root Cause Solution
Using ADX to predict direction ADX shows strength, not direction — confused with DI lines Always read +DI vs -DI for direction; read ADX for strength only
Entering as ADX peaks High ADX often appears near trend exhaustion Enter when ADX rises through 25 from below — not when it is already at 40+
Ignoring DI crossover direction Trading ADX > 25 without checking which DI is dominant Always confirm +DI > -DI for long trades, -DI > +DI for short trades
Applying ADX to very short bars ADX on 1m chart is extremely noisy Use ADX on 15m minimum — below that, noise overwhelms the signal
Expecting ADX to work in ranges ADX below 20 does not mean reversal — it means no trend Use a range-specific strategy (Bollinger, RSI extremes) when ADX is below 20

Section 9: Cheat Sheet

ℹ️ INFO
**ADX (Average Directional Index)**

USE WHEN: Checking if a market is trending before entering any trend-following signal
AVOID WHEN: Trying to get direction — use +DI/-DI for direction, not ADX itself

ENTRY SIGNAL: ADX rises above 25 from below + +DI crosses above -DI
EXIT SIGNAL: ADX peaks and turns down + -DI crosses back above +DI

PARAMETERS: Standard: ADX(14) | Fast: ADX(10) | Slow: ADX(21)
CONFLUENCE: EMA(21/50) for direction + MACD for momentum + ADX for regime confirmation

RISK: Signals appear late — ADX confirms trends already underway, not at their start
BEST TIMEFRAME: Daily for swing trading — most stable and widely used at this timeframe