ADX Signal Arrows Multi Filter DI DI Index Level
- Indicadores
- Versão: 1.26
- Atualizado: 1 outubro 2026
- Ativações: 5
Overview:
ADX Signal MultiFilter is an advanced technical analysis indicator for MetaTrader 5 designed to identify directional breakout momentum and trend acceleration phases. Built around the mathematical framework of J. Welles Wilder's Directional Movement system (ADX, +DI, and -DI), the tool monitors dynamic momentum shifts where directional movement lines break through user-defined threshold levels. To resolve the common challenge of false breakout signals during ranging or choppy market conditions, the indicator incorporates a modular multi-filter confirmation architecture featuring sixteen distinct technical evaluation engines. These engines encompass momentum oscillators, moving average structures, dynamic equilibrium clouds, volatility bands, synthetic Heiken Ashi candlesticks, classical support and resistance boundaries, and algorithmic Fibonacci swing retracement zones. Traders and quantitative analysts can toggle each confirmation layer independently or combine multiple layers simultaneously, establishing an objective, rules-based multi-layered analytical framework on the chart canvas. The indicator plots standardized visual arrow markers on valid entry points and dispatches alerts via terminal popups, auditory signals, mobile push notifications, and electronic mail without requiring external libraries.
Operating Principle and Technical Logic:
1. Directional Movement Algorithm:
The core signal engine is founded on the Average Directional Movement Index calculated through the native MQL5 iADX technical handle. The system continuously tracks positive directional movement (+DM) and negative directional movement (-DM) on successive bars by comparing current high and low thresholds with previous bar metrics. When the current high exceeds the previous high by an amount greater than the previous low exceeds the current low, positive movement is registered; conversely, negative movement is recorded when downward movement dominates. True Range (TR) captures the greatest distance between the current high, current low, and previous close. Smoothed exponential averages of +DM, -DM, and TR over the lookback window (InpPeriod) yield the normalized Positive Directional Indicator (+DI) and Negative Directional Indicator (-DI), bounded between 0.0 and 100.0. The primary ADX line tracks trend intensity via the smoothed directional difference ratio.
2. Signal Entry and Trigger Logic:
Primary directional entry signals trigger when directional momentum demonstrates an authentic boundary breakout above the specified threshold level (InpLevel, default 25.0):
- Bullish Buy Signal: Generated when the Positive Directional Indicator crosses strictly above the threshold level from an equal or lower value on the prior bar (+DIBuffer[idx] > InpLevel and +DIBuffer[idx + 1] <= InpLevel), indicating expanding upside velocity.
- Bearish Sell Signal: Generated when the Negative Directional Indicator crosses strictly above the threshold level from an equal or lower value on the prior bar (-DIBuffer[idx] > InpLevel and -DIBuffer[idx + 1] <= InpLevel), indicating expanding downside pressure.
3. Non-Repainting Calculation Model:
Signal integrity is maintained through a strictly closed-bar execution architecture:
- Active Bar Neutralization: During every calculation cycle in OnCalculate, buffer values for the currently forming candle (bar index 0) are explicitly initialized to EMPTY_VALUE. This programmatic measure ensures that unconfirmed, fluctuating price ticks do not draw transient arrow markers on the live bar.
- Closed Bar Finalization: Visual arrow buffers and notification routines process historical bar sequences starting strictly from closed bar index 1 (chronological index rates_total - 2). When a candle closes with both the primary directional breakout and all active filter criteria satisfied, the signal arrow is plotted permanently. Plotted arrows never recalculate, shift, or disappear on subsequent bars.
- Alert Timing: Audio cues, desktop popups, push notifications, and emails are evaluated on closed bars. With Alert_On_NewBarOnly enabled, signals fire exactly once per bar event.
Modular Filter Confirmation Architecture:
Sixteen technical confirmation filters operate via logical AND operations alongside the primary ADX breakout trigger:
- RSI Cross Filter: Evaluates standard Relative Strength Index (iRSI). Bullish validation requires RSI crossing upward from the oversold line (rsi > Oversold and rsi_prev <= Oversold). Bearish validation requires RSI crossing downward from the overbought line (rsi < Overbought and rsi_prev >= Overbought).
- Secondary ADX Filter: Employs a separate secondary ADX instance. Validates signals only when market trend strength equals or exceeds the baseline parameter (adx_f >= ADX_Min_Level), filtering sluggish market conditions.
- Single Moving Average Filter: Uses an independent moving average (iMA). Demands price closing strictly above the average line for Buy setups (close > ma), or strictly below for Sell setups (close < ma).
- Ichimoku Senkou Span B Filter: Computes the 52-period equilibrium cloud line shifted by 26 bars. Validates Buy signals when price closes above Senkou Span B, and Sell signals when price closes below Senkou Span B.
- RSI 75 Filter: Evaluates an extended 75-period RSI against the 50.0 neutral midpoint. Requires rsi75 > 50 for Buy setups and rsi75 < 50 for Sell setups, ensuring macro directional alignment.
- Double Moving Average Filter: Compares two moving averages (MA A and MA B). Validates Buy setups when the fast line trades above the slow line (ma_a > ma_b), and Sell setups when the fast line trades below the slow line (ma_a < ma_b).
- Awesome Oscillator (AO) Filter: Measures momentum divergence between 5-period and 34-period midpoint simple moving averages. Offers volume threshold verification (AO_Volume_Filter), bar color acceleration (AO_Color_Filter), and zero-line directional confirmation (AO_Zero_Filter).
- Parabolic SAR Filter: Evaluates trailing Stop and Reverse points (iSAR). Requires candle close above the SAR dot for Buy signals, and candle close below the SAR dot for Sell signals.
- Heiken Ashi Filter: Computes synthetic Heiken Ashi candles internally. Mandates bullish candle color (HA_Close > HA_Open) for Buy signals, and bearish candle color (HA_Close < HA_Open) for Sell signals.
- CCI Trend Filter: Measures Commodity Channel Index deviation relative to zero. Requires cci > 0 for Buy setups and cci < 0 for Sell setups.
- CCI Overbought and Oversold Filter: Validates statistical breakout extremes. Requires cci_obos > CCI_Overbought (+100.0) for Buy, and cci_obos < CCI_Oversold (-100.0) for Sell.
- RVI Trend Filter: Evaluates the 75-period Relative Vigor Index zero baseline. Requires rvi > 0 for Buy and rvi < 0 for Sell.
- RVI Signal Filter: Compares the RVI main line with its symmetrically weighted signal line. Demands rvi_main > rvi_sig for Buy and rvi_main < rvi_sig for Sell.
- MACD Signal Filter: Analyzes the MACD histogram delta (MACD_Main - MACD_Signal). Requires histogram values greater than zero for Buy and less than zero for Sell.
- MACD Zero Line Filter: Evaluates MACD main line position relative to the zero axis. Demands MACD_Main > 0 for Buy and MACD_Main < 0 for Sell.
- Dynamic Support and Resistance Filter: Scans historical swing highs and lows across SR_Period bars. Evaluates whether bar price action interacts with the calculated support band for Buy, or resistance band for Sell.
- Algorithmic Fibonacci Retracement Filter: Uses automated ZigZag peak-trough identification to detect recent validated swing points, projecting dynamic Fibonacci retracement zones (Fib_Level_1 and Fib_Level_2). Requires current price action to touch the retracement band.
Key Technical Features:
- Native Chart Buffers: Utilizes standard MQL5 plot buffers (Buffer 0 for Buy arrows, Buffer 1 for Sell arrows) and calculation buffers (Buffers 2 to 4). Fully compatible with Expert Advisors and automated trading utilities via iCustom.
- Standardized Wingdings Markers: Renders clear graphical arrows using Wingdings code 233 (up arrow, Lime) and 234 (down arrow, Red) with configurable size and point offset.
- Multi-Channel Notification Suite: Integrated desktop popups, custom sound execution (.wav), mobile push notifications via MetaQuotes ID, and email alerts via terminal SMTP.
- Optimized Resource Consumption: Modular indicator handle initialization ensures inactive filter indicators consume zero calculation cycles.
Operational and Setup Recommendations:
- Supported Financial Instruments: Universally applicable across liquid financial markets including FX major and minor pairs (EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD), precious metals (XAUUSD, XAGUSD), equity index contracts (US500, USTEC, US30, GER40), and cryptocurrency CFDs.
- Suggested Timeframes: Adaptable to all trading styles. For short-term scalping, M1 and M5 charts paired with fast momentum filters (SAR, Single MA, Heiken Ashi) are suitable. For intraday day trading, M15, M30, and H1 charts paired with Double MA, MACD, or AO are effective. For swing trading, H4 and D1 charts paired with Ichimoku Senkou Span B, Long RSI, or Fibonacci retracements provide robust macro trend alignment.
- Account Environment: Fully operational on both Hedging and Netting MetaTrader 5 accounts. ECN or raw spread account types are suggested for lower timeframe execution to reduce transaction overhead.
Input Parameters Documentation:
The indicator features forty-nine parameters in the Inputs window. Each setting is detailed below:
Group 1: ADX Signal Settings
- InpPeriod (Default: 5, Type: int): Lookback period for primary ADX, +DI, and -DI calculations.
- InpLevel (Default: 25.0, Type: double): Directional movement trigger threshold. Bullish signal occurs on +DI crossing above; Bearish signal occurs on -DI crossing above.
- InpArrowDistance (Default: 30, Type: int): Vertical distance in points between candle price extremes and plotted arrow symbols.
- InpArrowSize (Default: 2, Type: int): Graphical line thickness of chart arrows (values 1 to 5).
Group 2: Filter Mode - RSI Cross
- Use_RSI_Cross_Filter (Default: false, Type: bool): Enables Relative Strength Index boundary crossing filter.
- RSI_Length (Default: 14, Type: int): Calculation period for the standard RSI engine.
- RSI_Price_Source (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Applied price dataset for RSI calculations.
- Oversold (Default: 30.0, Type: double): Lower boundary threshold for oversold bullish crossover.
- Overbought (Default: 70.0, Type: double): Upper boundary threshold for overbought bearish crossover.
Group 3: ADX Filter
- Use_ADX_Filter (Default: false, Type: bool): Enables secondary ADX trend strength filtering.
- ADX_Period (Default: 10, Type: int): Averaging period for the secondary ADX filter instance.
- ADX_Min_Level (Default: 20.0, Type: double): Minimum required numeric level of secondary ADX to permit signals.
Group 4: Single MA Filter
- Use_MA_Filter (Default: false, Type: bool): Enables single moving average trend filter.
- MA_Period (Default: 50, Type: int): Calculation lookback period for moving average.
- MA_Method (Default: MODE_SMA, Type: ENUM_MA_METHOD): Averaging method (SMA, EMA, SMMA, LWMA).
- MA_Shift (Default: 0, Type: int): Horizontal bar displacement along time axis.
Group 5: Ichimoku Senkou Span B Filter
- Use_Ichimoku_Filter (Default: false, Type: bool): Enables Ichimoku equilibrium cloud filtering.
- Ichimoku_SenkouB (Default: 52, Type: int): Averaging period for Senkou Span B calculation.
- Ichimoku_Kijun (Default: 26, Type: int): Temporal shift parameter for Senkou Span B projection.
Group 6: RSI 75 Filter
- Use_RSI75_Filter (Default: false, Type: bool): Enables long-period RSI baseline trend filtering.
- RSI_Filter_Period (Default: 75, Type: int): Lookback averaging period for macro RSI momentum evaluation.
Group 7: Double MA Filter
- Use_DoubleMA_Filter (Default: false, Type: bool): Enables dual moving average alignment verification.
- MA_A_Period (Default: 30, Type: int): Lookback period for fast moving average (MA A).
- MA_A_Method (Default: MODE_EMA, Type: ENUM_MA_METHOD): Averaging method for MA A.
- MA_A_Applied (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Applied price structure for MA A.
- MA_A_Shift (Default: 0, Type: int): Bar displacement offset for MA A.
- MA_B_Period (Default: 140, Type: int): Lookback period for slow moving average (MA B).
- MA_B_Method (Default: MODE_EMA, Type: ENUM_MA_METHOD): Averaging method for MA B.
- MA_B_Applied (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Applied price structure for MA B.
- MA_B_Shift (Default: 0, Type: int): Bar displacement offset for MA B.
Group 8: Awesome Oscillator Filter
- Use_AO_Filter (Default: false, Type: bool): Primary toggle for Awesome Oscillator confirmation module.
- Use_AO_Volume_Filter (Default: false, Type: bool): Enables histogram magnitude threshold verification.
- AO_Buy_Min (Default: 4.0, Type: double): Minimum positive histogram level required for Buy validation.
- AO_Sell_Max (Default: -4.0, Type: double): Maximum negative histogram level required for Sell validation.
- Use_AO_Color_Filter (Default: false, Type: bool): Enables histogram bar color acceleration verification.
- Use_AO_Zero_Filter (Default: false, Type: bool): Enables histogram zero-axis directional filtering.
Group 9: Parabolic SAR Filter
- Use_SAR_Filter (Default: false, Type: bool): Enables Parabolic Stop and Reverse price trailing validation.
- SAR_Step (Default: 0.02, Type: double): Incremental step factor for SAR calculation.
- SAR_Maximum (Default: 0.2, Type: double): Maximum ceiling for acceleration factor.
Group 10: Heiken Ashi Filter
- Use_HeikenAshi_Filter (Default: false, Type: bool): Enables synthetic Heiken Ashi candlestick color validation.
Group 11: CCI Trend Filter
- Use_CCI_Filter (Default: false, Type: bool): Enables Commodity Channel Index zero-line trend alignment.
- CCI_Period (Default: 50, Type: int): Averaging period for CCI calculation.
- CCI_Applied (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Applied price dataset for CCI calculation.
Group 12: CCI OB & OS Filter
- Use_CCI_OBOS_Filter (Default: false, Type: bool): Enables fast CCI extreme breakout filtering.
- CCI_OBOS_Period (Default: 14, Type: int): Calculation period for extreme deviation detection.
- CCI_OBOS_Applied (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Applied price dataset for OB/OS evaluation.
- CCI_Overbought (Default: 100.0, Type: double): Upper numeric threshold representing overbought zone.
- CCI_Oversold (Default: -100.0, Type: double): Lower numeric threshold representing oversold zone.
Group 13: RVI Trend Filter
- Use_RVI_Filter (Default: false, Type: bool): Enables long-term Relative Vigor Index zero-line alignment.
- RVI_Period (Default: 75, Type: int): Lookback period for baseline RVI trend calculation.
Group 14: RVI Signal Filter
- Use_RVI_Signal_Filter (Default: false, Type: bool): Enables dual-line RVI crossover relationship filtering.
- RVI_Signal_Period (Default: 20, Type: int): Lookback period for RVI signal crossover engine.
Group 15: MACD Signal Filter
- Use_MACD_Filter (Default: false, Type: bool): Enables MACD histogram delta confirmation.
- MACD_FastEMA (Default: 12, Type: int): Fast exponential moving average period.
- MACD_SlowEMA (Default: 26, Type: int): Slow exponential moving average period.
- MACD_SignalSMA (Default: 9, Type: int): Signal smoothing line period.
- MACD_Applied (Default: PRICE_CLOSE, Type: ENUM_APPLIED_PRICE): Price dataset applied to MACD calculations.
Group 16: MACD Lev 0 Filter
- Use_MACD_Zero_Filter (Default: false, Type: bool): Enables MACD main line zero-level position filtering.
Group 17: Support & Resistance Filter
- Use_SR_Filter (Default: false, Type: bool): Enables dynamic horizontal support and resistance zone detection.
- SR_Period (Default: 50, Type: int): Historical lookback bars used to determine highest high and lowest low levels.
- SR_Zone_Points (Default: 80.0, Type: double): Tolerance zone width in chart points around support/resistance levels.
Group 18: Fibonacci Filter
- Use_Fib_Filter (Default: false, Type: bool): Enables algorithmic Fibonacci swing retracement zone filtering.
- Fib_Level_1 (Default: 0.382, Type: double): Primary Fibonacci retracement ratio boundary.
- Fib_Level_2 (Default: 0.618, Type: double): Secondary Fibonacci retracement ratio boundary.
- ZigZag_Depth (Default: 12, Type: int): Minimum bar interval without a new extreme for swing pivot qualification.
- ZigZag_Deviation (Default: 5, Type: int): Point deviation required to confirm swing pivot.
- ZigZag_Backstep (Default: 3, Type: int): Minimum consecutive bars between divergent swing highs and swing lows.
Group 19: Alert & Notification Settings
- Use_Popup_Alert (Default: true, Type: bool): Displays visual alert dialogue box on the MetaTrader 5 terminal window upon signal confirmation.
- Use_Sound_Alert (Default: true, Type: bool): Enables audio alert execution upon signal confirmation.
- Sound_Buy_File (Default: "alert.wav", Type: string): Sound file path for Buy signal alert located in Sounds folder.
- Sound_Sell_File (Default: "alert2.wav", Type: string): Sound file path for Sell signal alert located in Sounds folder.
- Use_Push_Notify (Default: true, Type: bool): Sends push notification to mobile devices via MetaQuotes ID.
- Use_Email_Alert (Default: false, Type: bool): Transmits email notification through terminal SMTP settings.
- Alert_On_NewBarOnly (Default: true, Type: bool): Restricts alert dispatches exclusively to freshly closed bars.
Integration Guide for Expert Advisors (iCustom Access):
Algorithmic developers can integrate ADX Signal MultiFilter into automated trading systems via the MQL5 iCustom function. The indicator assigns visual signals to the first two index buffers:
- Buffer 0 (Buy Arrow Buffer): Contains the execution price coordinate (Low - Arrow Offset) when a Buy signal is confirmed on a closed bar, and EMPTY_VALUE when no signal exists.
- Buffer 1 (Sell Arrow Buffer): Contains the execution price coordinate (High + Arrow Offset) when a Sell signal is confirmed on a closed bar, and EMPTY_VALUE when no signal exists.
- Buffer 2 (ADX Buffer): Intermediate calculation buffer containing the raw ADX line values.
- Buffer 3 (+DI Buffer): Intermediate calculation buffer containing raw Positive Directional Indicator values.
- Buffer 4 (-DI Buffer): Intermediate calculation buffer containing raw Negative Directional Indicator values.
To read signals within an EA OnTick function, declare an indicator handle using iCustom referencing the indicator name and desired parameter set. In the trading logic, copy index 1 (the last completed candle) using CopyBuffer into a local double array. If Buffer 0 at index 1 is not equal to EMPTY_VALUE, a valid Buy setup has completed. If Buffer 1 at index 1 is not equal to EMPTY_VALUE, a valid Sell setup has completed. Because calculations on bar 0 are cleared, signals retrieved at bar index 1 are permanent and will not repaint.
Risk Disclaimer:
Trading foreign exchange, commodities, indices, and financial derivatives carries a substantial level of risk and may not be suitable for all investors. High leverage can work against you as well as for you. Past market performance and historical simulation results do not ensure identical future outcomes. This indicator is a technical analysis utility designed to assist traders in objective market observation; it does not constitute financial or investment advice. Always evaluate and verify the software thoroughly on a demo simulation account before considering deployment in live market environments.
