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 Type | Indicator Condition | Market Meaning | Reliability |
|---|---|---|---|
| ADX Rising Above 25 → Trend Confirmation | ADX line crosses above 25 and continues rising | A 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 20 | Buying 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 20 | Selling pressure is dominant. A downtrend is underway. ADX above 25 confirms this is not a whipsaw. | 4/5 |
| ADX Below 20 → Range / Churn | ADX stays below 20 for multiple bars | No strong directional movement. Price is chopping sideways. Using trend-following strategies here produces losses from whipsaws. | 3/5 |
| ADX Divergence → Trend Weakening | Price makes a new swing high/low, but ADX makes a lower high | Trend 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 → Exhaustion | ADX reaches a very high value (50+) then drops sharply by 10+ points | The 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 20 | Market 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.
//@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.
| Parameter | Default | Description |
|---|---|---|
| ADX Smoothing | 14 | Number 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 Length | 14 | Lookback 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 Threshold | 25 | Minimum 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) | Disabled | When 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 IndicatorRelated Resources
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