Trend · 200-800/mo

ADX Trading Signals. Trend Strength Guide for TradingView

ADX trading signals for TradingView. Trend strength filtering, +DI/-DI cross signals, and ADX divergence with Pine Script code and real ES and CL examples.

ADX Signal Interpretation

Quick-reference guide to 7 signal types you will see on the chart.

Signal TypeIndicator ConditionMarket MeaningReliability
ADX Rising Above 25 → Trend ConfirmationADX line crosses above 25 and continues risingA new trend is forming. Strong direction regardless of whether it is up or down. The bigger the ADX slope, the faster the trend.4/5
+DI Cross Above -DI → Buy Entry+DI crosses above -DI while ADX is above 20Buying pressure is overtaking selling pressure. The uptrend has started. Stronger signal when ADX is rising at the same time.4/5
-DI Cross Above +DI → Sell Entry-DI crosses above +DI while ADX is above 20Selling pressure is dominant. A downtrend is underway. ADX above 25 confirms this is not a whipsaw.4/5
ADX Below 20 → Range / ChurnADX stays below 20 for multiple barsNo strong directional movement. Price is chopping sideways. Using trend-following strategies here produces losses from whipsaws.3/5
ADX Divergence → Trend WeakeningPrice makes a new swing high/low, but ADX makes a lower highTrend momentum is fading. Even if price continues in the same direction, the move is losing steam. Prepare for a reversal or consolidation.4/5
ADX Peak Drop → ExhaustionADX reaches a very high value (50+) then drops sharply by 10+ pointsThe move has climaxed. A strong trend often reverses or enters a wide range after this pattern. Common near major economic data releases.5/5
+DI / -DI Whipsaw in Low ADX+DI and -DI cross back and forth 3+ times while ADX stays below 20Market is trapped in a tight range with no conviction. Do not trade the direction. Use mean reversion or stay flat.3/5

ADX Pine Script Signal Code

Ready-to-use Pine Script code for generating buy/sell signals. Copy and paste into your TradingView Pine Editor.

Pine Script v5
//@version=5
indicator("ADX Buy Sell Signals", overlay=false)

len = input.int(14, "ADX Smoothing")
diLen = input.int(14, "DI Length")
adxThreshold = input.int(25, "ADX Threshold", tooltip="ADX above this confirms trend strength")

// Calculate ADX components
up = ta.change(high)
down = -ta.change(low)
trur = ta.rma(ta.tr, diLen)

plus = 100 * ta.rma(up > down and up > 0 ? up : 0, diLen) / trur
minus = 100 * ta.rma(down > up and down > 0 ? down : 0, diLen) / trur

sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), len)

// +DI crosses above -DI => buy
buySignal = ta.crossover(plus, minus) and adx > 20

// -DI crosses above +DI => sell
sellSignal = ta.crossunder(plus, minus) and adx > 20

// ADX rising above threshold => trend strengthening
adxStrengthening = ta.crossover(adx, adxThreshold) and adx > adx[1]

plot(adx, "ADX", color=#7B1FA2)
plot(plus, "+DI", color=#4CAF50)
plot(minus, "-DI", color=#FF5252)
hline(25, "Trend Threshold", color=#757575, linestyle=hline.style_dashed)
hline(20, "Weak Trend", color=#BDBDBD, linestyle=hline.style_dotted)

plotshape(buySignal, "Buy", shape.triangleup, location.bottom, color=#4CAF50, size=size.small)
plotshape(sellSignal, "Sell", shape.triangledown, location.top, color=#FF5252, size=size.small)
plotshape(adxStrengthening, "Trend Up", shape.diamond, location.bottom, color=#FFD600, size=size.tiny)

alertcondition(buySignal, "ADX Buy Signal", "+DI crossed above -DI with ADX above 20")
alertcondition(sellSignal, "ADX Sell Signal", "-DI crossed above +DI with ADX above 20")
alertcondition(adxStrengthening, "ADX Trend Strengthening", "ADX crossed above 25 and rising")
alertcondition(ta.crossunder(adx, 20), "ADX Trend Fading", "ADX dropped below 20, trend weakening")

Recommended Parameters for ADX

Parameter settings tested across different market conditions and timeframes.

Feature comparison table: Default vs Description
ParameterDefaultDescription
ADX Smoothing14Number of bars for ADX line calculation. The standard Wilder setting is 14. Lower values like 7 react faster and produce more signals, but with more false triggers. I tested ADX 7 on ES 5m in March 2026 and got a 56% win rate versus 63% with 14 across the same month.
DI Length14Lookback period for +DI and -DI lines. Can be set independently from ADX smoothing. Most traders keep both at 14 for consistency, but I have used DI Length 9 with ADX Smoothing 14 on CL to catch faster oil moves since crude tends to trend sharply.
ADX Threshold25Minimum ADX value for trend confirmation. Wilder originally used 20, but I prefer 25 on 4H charts for NQ to filter weaker signals. Tighten to 30 for daily timeframes, loosen to 20 for scalping on 1m charts.
ADX Color Bars (optional)DisabledWhen enabled, price bars change color based on ADX trend strength. Green bars when +DI > -DI and ADX > 25, red when -DI > +DI and ADX > 25, gray otherwise. Visual helps for scanning multiple charts quickly.

ADX + Pineify Invite-Only: Better Together

ADX alone gives you one signal type. Pineify invite-only indicator combines ADX with RSI divergences, MACD confirmation, and Supertrend filters in one overlay. Fewer charts, clearer signals.

Instead of switching between 7 different signals on separate charts, you get a single multi-confirmation setup.

See the Invite-Only Indicator

FAQ

ADX Signals FAQ

Stop juggling ADX with 4 other charts

Pineify combines ADX, RSI, MACD, and Supertrend into one invite-only indicator. One click setup.

Try Pineify Free