Pro Access

ADX Trend Strength is part of the expanded Pro strategy library. The guide stays public, but running it in backtest, compare, paper tracking, and source-code view is a Pro capability. Pro currently unlocks 8 additional pre-built strategies.

The Intuition

ADX was designed by J. Welles Wilder to answer a different question from most indicators: not "which way is price moving?" but "is the move strong enough to trust?" That distinction matters because many trend rules fail not on direction, but on entering when the market is still choppy.

This version combines ADX with directional movement. +DI above -DI says buyers currently dominate the directional range expansion. -DI above +DI says sellers dominate. ADX above a threshold says that dominance is no longer trivial noise. The strategy only takes exposure when both conditions line up.

The core assumption is that strong trends persist longer than weak ones. ADX is useful because it filters out many low-conviction crossover signals that appear inside sideways markets. In practice, traders often use the 20-25 region as the boundary between "possible drift" and "meaningful trend."

The main failure mode is late entry. ADX rises after the move has already started, so the filter improves signal quality by sacrificing reactivity. It also struggles in sudden reversals, where the market flips direction faster than the smoothed strength estimate can adjust.

The Math

Read this as a compact model summary: what the signal sees, what it ignores, and where fragility can creep in.

+DM(t) = max(High(t) - High(t-1), 0) if it dominates -DM
-DM(t) = max(Low(t-1) - Low(t), 0)  if it dominates +DM
TR(t)  = max(High-Low, |High-Prev_Close|, |Low-Prev_Close|)

+DI(t) = 100 × WilderMean(+DM, n) / WilderMean(TR, n)
-DI(t) = 100 × WilderMean(-DM, n) / WilderMean(TR, n)
DX(t)  = 100 × |+DI(t) - -DI(t)| / (+DI(t) + -DI(t))
ADX(t) = WilderMean(DX, n)

Signal(t) = +1  if ADX(t) ≥ threshold AND +DI(t) > -DI(t)
          = -1  if ADX(t) ≥ threshold AND -DI(t) > +DI(t)
          =  0  otherwise

Parameters

ParameterTypeDefaultDescription
window int 14 ADX lookback window
adx_threshold float 25.0 Minimum ADX needed to activate a trend trade

Source Code

Source access for this built-in strategy is included with Pro.

Further Reading

  • Wilder, J.W. (1978). New Concepts in Technical Trading Systems. Trend Research.
  • Kaufman, P. (2013). Trading Systems and Methods, 5th ed. Wiley.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies. Wiley.

When It Works / When It Fails

Works
  • Strong established trends with high ADX readings
  • Clear +DI/-DI separation confirming directional conviction
  • Multi-week directional moves in broad indices or commodities
Fails
  • Choppy sideways markets where ADX stays below threshold
  • Early-stage trends before ADX has time to rise
  • Frequent whipsaw when ADX is at borderline readings

Regime Fit

Bull / Bear Trend (any vol)
Best conditions. ADX threshold acts as an internal strength filter, reducing false signals vs raw trend followers.
Bull / Stressed vol
Strong fit. Volatility often accompanies strong trends; ADX still rises on genuine directional moves.
Transition (any vol)
Weakest fit. ADX tends to stay low; both +DI and -DI are ambiguous, keeping the signal flat.
No overlay defined
Qualitative fit matches MA Crossover family: Bull/Bear Trend best, Transition worst by design.

Compared to Alternatives

vs MA Crossover
MA Crossover signals when fast SMA > slow SMA; ADX requires additional trend strength confirmation via ADX ≥ threshold. ADX is more selective.
vs Donchian
Donchian fires on N-day price extremes; ADX filters by trend strength. ADX can confirm whether a Donchian breakout has sufficient directional momentum.
vs Supertrend
Supertrend uses ATR for a stop-and-reverse position rule; ADX measures trend strength as a filter. ADX can be flat; Supertrend is always long or short.
Unlock This Strategy →