Adx Signals Indicator: DI Crossovers Filtered by ADX Strength

Written by Dominic Walsh · Published · Last updated

The adx signals indicator reduces Wilder’s directional movement system to the part most traders act on. When +DI crosses -DI, direction has changed. That crossover means little when no trend exists to carry it. This build requires the ADX line itself to clear a threshold before it marks anything, so arrows appear only when the system says a trend is present.

This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.

Platforms MT4 (.ex4) + MT5 (.ex5)
Chart window Main price chart
Plots 2: Buy, Sell
Alerts popup, push notification, email, sound
Inputs 9

What the Adx Signals Indicator draws on the chart

Buy places a wide lime arrow beneath the bar where +DI crosses above -DI while the filter passes.

Sell places the red counterpart above the bar on the opposite cross.

Nothing else appears. The DI and ADX lines stay in their own indicator window if you want to watch them.

  • Buy: arrow, lime, width 4, arrow code 233
  • Sell: arrow, red, width 4, arrow code 234
Adx signals indicator on EURUSD H1 with DI crossover arrows filtered by ADX strength
Adx signals indicator on EURUSD H1 with DI crossover arrows filtered by ADX strength

How the Adx Signals Indicator calculates its values

Reading the directional lines

Six iADX calls per bar supply everything. MODE_PLUSDI and MODE_MINUSDI give p_now and m_now for the current bar, plus p_prev and m_prev for the one before. MODE_MAIN supplies adx_now and adx_prev. All six use `AdxPeriod` on the close.

Detecting the crossover

buy_cross turns true when p_prev sat at or below m_prev and p_now has moved above it. sell_cross mirrors that test. Comparing the previous bar against the current one makes this a crossing rather than a state, so a market where +DI has stayed above -DI for days produces no repeat signals.

Applying the strength filter

The variable flt holds adx_now > `TrendLevel`. Only when a crossover and that condition both hold does the code write an arrow, at low[i] minus off for a buy or high[i] plus off for a sell. off converts `ArrowOffsetPoints` to price. A crossover during a weak phase simply never reaches the chart.

How to read the signals

An arrow means two things coincided: direction changed and ADX already held above the threshold.

Long gaps without arrows usually mean ADX has sat under the level, not that the DI lines never crossed.

The arrow sits on the bar that completed the cross, well clear at the default 45 points.

Two arrows the same way in a row cannot happen, since a second cross that direction needs one the other way first.

Alert channels in this build: popup, push notification, email and sound, one message per closed bar.

Four channels appear in this build: popup, push notification, email and sound, each with its own switch beneath `EnableAlerts`. Popup ships enabled and the rest ship disabled. `SoundFile` names the clip at `”alert.wav”`. One message goes out per closed bar.

Every Adx Signals Indicator input

Core settings

Setting What it does Default
AdxPeriod Lookback for all six readings, default `14`, Wilder’s original figure. 14
TrendLevel The ADX threshold the filter tests, default `25`. Raising it to 30 or more cuts the signal count sharply. 25

Display settings

Setting What it does Default
ArrowOffsetPoints Distance between candle and arrow, default `45` points, set high because the arrows draw at width 4. 45

Alert settings

Setting What it does Default
EnableAlerts (see inputs panel) on
EnablePopup (see inputs panel) on
EnablePushNotify (see inputs panel) off
EnableEmail (see inputs panel) off
EnableSound (see inputs panel) off
SoundFile (see inputs panel) alert.wav
Adx signals indicator inputs panel showing AdxPeriod, TrendLevel and the alert switches
Adx signals indicator inputs panel showing AdxPeriod, TrendLevel and the alert switches

Settings that fit your chart

The screenshot note for this build names EURUSD H1, where DI crosses read clearly and ADX stays meaningful. Wilder designed the system for daily bars on trending markets, and it still works best where moves persist for many bars. On M5 and below, ADX clears 25 often enough that the filter stops doing much. Indices and metals suit it well on H1 and H4.

When the Adx Signals Indicator fails

ADX measures trend strength without direction, and it rises during strong moves either way, so a reading above 25 can accompany a move already close to finished.

Both the DI lines and ADX smooth over the period, so the cross and filter combination confirms late in a fast move.

A market that trends then ranges repeatedly leaves ADX hovering near the threshold, and signals then arrive in bursts around that boundary.

Copy the compiled Adx Signals Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.

Download the Adx Signals Indicator for MT4 and MT5

The zip holds the compiled Adx Signals Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.

Download this indicator free

Enter your email and the file is yours. You also get the full MT4 and MT5 library.

  • 1,380+ indicators
  • MT4 and MT5 files
  • No spam, unsubscribe any time

FAQ

What does TrendLevel at 25 filter out?

Every DI crossover that occurs while ADX sits at or below 25. Wilder read anything under 25 as no meaningful trend, so a direction change there usually amounts to the market shuffling. The code still detects the crossover internally, it just never draws an arrow. Raise the value when marginal signals still get through.

Why does AdxPeriod not draw the DI lines on my chart?

This build plots only the two arrow buffers. It reads +DI, -DI and ADX through iADX internally, but nothing displays them. Add MetaTrader’s own Average Directional Movement Index in a separate window when you want to watch the lines alongside the arrows.

Can two Buy arrows appear in a row?

No. A buy needs +DI to move from at or below -DI to above it. Once that happens, +DI sits above, and it cannot cross above again without first dropping back below, which would trigger the sell test instead. Runs of same-direction arrows are structurally impossible here.

Does AdxPeriod change the filter as well as the crossover?

Yes, since all six readings share it. Shortening `AdxPeriod` from `14` makes the DI lines cross more often and makes ADX itself more volatile, so it moves through `TrendLevel` more frequently too. Those two effects compound, and signal counts climb faster than you might expect.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Adx Signals Indicator as one input. Always backtest before trading live.

Category: this is part of our Signal and Forecast collection. Thus, browse more Signal and Forecast for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.

External references

Dominic Walsh - Forex trader and MT4/MT5 developer

About the author

Written by Dominic Walsh, a Forex trader and MT4/MT5 indicator, Expert Advisor and script developer. Every tool on forexmt4systems.com is tested on live charts before release and ships with ready-to-use compiled MT4 (.ex4) and MT5 (.ex5) files. Learn more about the trader and developer behind this site.

How we build, test and correct every tool: Editorial & Testing Policy. Trading carries risk; see the disclaimer.

Leave a Comment