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

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 |

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.
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
- For background on this concept, see Breadth of market on Wikipedia.
- For broader market context, see Momentum at Investopedia.
