Pro RVI Signal Multi Filter Trend MT5 Zero Cross
- Indicatori
- Versione: 1.90
- Aggiornato: 26 ottobre 2026
- Attivazioni: 5
RVI Dual Mode with Universal Multi-Filter Framework for MetaTrader 5
Product Overview and Technical Scope
RVI Dual Mode with Universal Multi-Filter Framework is a modular technical analysis indicator engineered specifically for MetaTrader 5. Built upon the volatility-adjusted momentum mathematics of Donald Dorsey's Relative Volatility Index (RVI), this analytical tool provides systematic directional signal generation while addressing whipsaws during consolidating markets. Rather than relying on isolated momentum calculations, the indicator incorporates a modular 14-filter architectural framework directly embedded into its execution pipeline. Users can selectively engage multiple technical disciplines: moving average alignment, trend strength evaluation, Ichimoku cloud baselines, synthetic candlestick filtering, support/resistance detection, and algorithmic Fibonacci swing retracements. Every calculation is executed through a closed-bar architecture that ensures non-repainting graphical plots and alert triggers.
Core Execution Principles and Mathematical Architecture
The primary trigger engine relies on the Relative Volatility Index. While standard momentum oscillators evaluate the velocity of directional price changes through close-to-close differences, the Relative Volatility Index measures the standard deviation of extreme price movements over a specified window. By substituting directional closing variations with standard deviation metrics, the RVI provides a refined assessment of market conviction and volatility expansion.
Mathematical Calculation of the Primary RVI Engine
The indicator calculates standard deviation over the designated period (RVI_Length, defaulting to 10 bars):
1. For every bar where the close exceeds the previous close, standard deviation is assigned to the upward volatility vector; otherwise, it is zero.
2. For every bar where the close is lower than the previous close, standard deviation is assigned to the downward volatility vector; otherwise, it is zero.
3. Both upward and downward volatility series are smoothed using an exponential moving average over the specified length.
4. The RVI is computed via: RVI = 100 * (Smoothed Up Volatility) / (Smoothed Up Volatility + Smoothed Down Volatility).
5. A secondary signal line is derived by calculating an exponential moving average of the primary RVI line over a dedicated smoothing period.
Dual Entry Modes
The indicator provides two distinct entry methodologies accessible via InpEntryMode:
- Mode 1: RVI Line Crossover (ENTRY_RVI_CROSS_SIGNAL). Signals are generated through the interaction between the primary RVI line and its signal line. A bullish trigger occurs when RVI crosses above the signal line (RVI[1] > Signal[1] and RVI[2] <= Signal[2]). A bearish trigger occurs when RVI crosses below the signal line (RVI[1] < Signal[1] and RVI[2] >= Signal[2]). This mode is tailored for swing continuation and pullback entries where momentum aligns with short-term volatility.
- Mode 2: RVI Zero Level Crossover (ENTRY_RVI_CROSS_ZERO). Signals are identified based on the polarity shift across the baseline. A bullish trigger occurs when RVI crosses above baseline (RVI[1] > 0.0 and RVI[2] <= 0.0). A bearish trigger occurs when RVI crosses below baseline (RVI[1] < 0.0 and RVI[2] >= 0.0). This mode is suitable for structural regime changes, capturing sustained trend shifts.
Non-Repainting Execution Protocol
A critical operational principle of this software is strict historical integrity:
- Calculations are locked exclusively upon closed candles (shift index 1 through historical depth).
- The current fluctuating candle (shift index 0) is decoupled from signal plotting. Both BuyBuffer[0] and SellBuffer[0] are set to zero on every incoming tick.
- Once a candle closes and a signal arrow is painted, that arrow remains permanently fixed at its historical coordinate. It will never move, recalculate, or disappear during subsequent market movements.
- Alerts and notifications are dispatched strictly once per closed candle (evaluating bar shift 1 against the timestamp of the preceding bar), eliminating repetitive alerts caused by intra-bar price fluctuations.
The Universal 14-Filter Framework Architecture
The integrated 14-filter modular suite enables multi-indicator consensus filtering without attaching separate indicators:
1. RSI Cross Filter (Use_RSI_Cross_Filter): Monitors RSI momentum boundaries. A bullish signal requires RSI on the closed bar to cross above Oversold (RSI[1] > RSI_Oversold and RSI[2] <= RSI_Oversold). A bearish signal requires RSI to cross below Overbought (RSI[1] < RSI_Overbought and RSI[2] >= RSI_Overbought).
2. ADX Trend Filter (Use_ADX_Filter): Measures trend expansion using the Average Directional Index. Slower ranges are filtered out by requiring ADX on the closed bar to equal or exceed ADX_Min_Level (default: 20.0). Trades are suppressed when market movement lacks directional momentum.
3. Single Moving Average Filter (Use_MA_Filter): Provides baseline directional trend bias. Buy signals require candle close strictly above MA (Close[1] > MA[1]). Sell signals require candle close strictly below MA (Close[1] < MA[1]). Supports SMA, EMA, SMMA, and LWMA.
4. Ichimoku Senkou Span B Cloud Filter (Use_Ichimoku_Filter): Calculates the 52-period equilibrium midpoint from Ichimoku Kinko Hyo. Buy signals require candle close strictly above Senkou Span B. Sell signals require candle close strictly below Senkou Span B.
5. Macro RSI 75 Equilibrium Filter (Use_RSI75_Filter): Employs a 75-period RSI to establish macro market momentum. Bullish signals require RSI 75 above 50.0; bearish signals require RSI 75 below 50.0.
6. Double Moving Average Filter (Use_DoubleMA_Filter): Uses dual moving average crossover alignment. Buy signals require Fast MA (MA_A) strictly above Slow MA (MA_B). Sell signals require Fast MA strictly below Slow MA.
7. Awesome Oscillator Filter (Use_AO_Filter): Leverages 34/5 median price subtraction with three sub-filters: Volume Filter (AO >= AO_Buy_Min for Buy, AO <= AO_Sell_Max for Sell), Color Bar Filter (AO[1] > AO[2] for Buy, AO[1] < AO[2] for Sell), and Zero Level Filter (positive expansion above zero for Buy, negative expansion below zero for Sell).
8. Parabolic SAR Filter (Use_SAR_Filter): Validates price structure via SAR. Buy signals require close above SAR. Sell signals require close below SAR.
9. Heiken Ashi Candle Filter (Use_HeikenAshi_Filter): Calculates synthetic Heiken Ashi values. Bullish signals require a bullish synthetic candle (HA_Close[1] > HA_Open[1]); bearish signals require a bearish candle (HA_Close[1] < HA_Open[1]).
10. CCI Trend Filter (Use_CCI_Filter): Applies a 50-period CCI to detect statistical deviation from the mean. Buy signals require positive CCI (CCI[1] > 0.0); sell signals require negative CCI (CCI[1] < 0.0).
11. CCI Overbought and Oversold Filter (Use_CCI_OBOS_Filter): Focuses on short-term extremes with a 14-period CCI. Buy signals require CCI emerging from oversold (CCI[1] <= CCI_Overbought); sell signals require CCI emerging from overbought (CCI[1] >= CCI_Oversold).
12. Dual RVI Trend and Signal Line Filters (Use_RVI_Filter & Use_RVI_Signal_Filter): Trend filter verifies secondary RVI is above 0.0 for Buy or below 0.0 for Sell. Signal filter verifies secondary RVI main line is above signal line for Buy, or below for Sell.
13. MACD Histogram and Baseline Filters (Use_MACD_Filter & Use_MACD_Zero_Filter): Histogram filter requires MACD histogram (Main minus Signal) positive for Buy, negative for Sell. Zero filter requires MACD main line above zero for Buy, below zero for Sell.
14. Support / Resistance and Fibonacci Filters (Use_SR_Filter & Use_Fib_Filter): S/R engine detects historical price extrema over SR_Period. Buy signals require price interaction within support zone; sell signals require interaction within resistance. Fibonacci engine uses automated ZigZag swing detection, validating signals only when price touches the retracement band between Fib_Level_1 (0.382) and Fib_Level_2 (0.618).
Operational Setup Recommendations
- Asset Classes: Compatible with all MetaTrader 5 financial instruments, including major and minor currency pairs (EURUSD, GBPUSD, USDJPY, AUDUSD, EURGBP), spot commodities (XAUUSD, XAGUSD, WTI Crude), equity index CFDs (US500, USTEC, US30, DAX40), and liquid digital currency pairs (BTCUSD, ETHUSD).
- Timeframe Suitability:
* M1 - M5 (Intraday Scalping): Pair RVI Line Crossover with ADX Filter (threshold 22.0) and Single MA Filter (200 EMA) to filter out spread noise and false breakouts.
* M15 - M30 (Day Trading): Combine RVI Line Crossover with Double MA Filter (30 EMA and 140 EMA) and Support/Resistance zoning for structured intraday setups.
* H1 - H4 (Swing Trading): Utilize RVI Zero Crossover in tandem with Ichimoku Senkou Span B and MACD Histogram to capture macro trend shifts.
* D1 (Position Trading): Suitable for broader asset allocation and systematic multi-week swing tracking.
- Broker Account Environment:
* Supports both Hedging and Netting account modes.
* Low spread and ECN/Raw accounts are recommended for lower timeframe trading (M1 to M5) to preserve execution precision.
* Virtual Private Server (VPS) hosting is recommended when using push notifications for uninterrupted monitoring.
Comprehensive Input Parameters Directory
Primary Entry Logic Settings
- InpEntryMode (Default: ENTRY_RVI_CROSS_SIGNAL) -> Foundational signal logic mode: ENTRY_RVI_CROSS_SIGNAL (crossover of RVI main line versus signal line) or ENTRY_RVI_CROSS_ZERO (crossover of RVI main line across zero baseline).
- RVI_Length (Default: 10) -> Lookback bars for calculating standard deviation and volatility vectors for the primary RVI oscillator.
Alerts and Notifications Settings
- Arrow_Distance (Default: 30.0) -> Vertical offset in broker points from candle high/low for visual chart arrows.
- Enable_Alert (Default: true) -> Enables native on-screen pop-up alert dialog boxes in MetaTrader 5.
- Enable_Sound (Default: true) -> Enables audio alert playback upon signal confirmation.
- Sound_File (Default: "alert2.wav") -> Audio filename located in the terminal MT5/Sounds directory.
- Enable_Push (Default: true) -> Dispatches mobile push notifications to smartphone devices via MetaQuotes ID.
Filter 1 - RSI Cross Filter
- Use_RSI_Cross_Filter (Default: false) -> Enables RSI boundary level crossing filter.
- RSI_Length (Default: 14) -> Calculation period in bars for computing the RSI indicator.
- RSI_Price_Source (Default: PRICE_CLOSE) -> Applied price constant used for RSI calculation.
- RSI_Oversold (Default: 30.0) -> Lower boundary threshold for validating bullish momentum crossing.
- RSI_Overbought (Default: 70.0) -> Upper boundary threshold for validating bearish momentum crossing.
Filter 2 - ADX Trend Filter
- Use_ADX_Filter (Default: false) -> Enables Average Directional Index trend strength filter.
- ADX_Period (Default: 10) -> Lookback period in bars for computing ADX trend intensity.
- ADX_Min_Level (Default: 20.0) -> Minimum numerical ADX threshold value required to permit trade signals.
Filter 3 - Single Moving Average Filter
- Use_MA_Filter (Default: false) -> Enables single moving average price position filter.
- MA_Period (Default: 50) -> Calculation period in bars for the moving average line.
- MA_Method (Default: MODE_SMA) -> Smoothing method applied: Simple, Exponential, Smoothed, or Linear Weighted.
- MA_Shift (Default: 0) -> Horizontal bar shift offset for the moving average calculation.
Filter 4 - Ichimoku Senkou Span B Filter
- Use_Ichimoku_Filter (Default: false) -> Enables Ichimoku Senkou Span B baseline cloud filter.
- Ichimoku_Tenkan (Default: 9) -> Calculation period for Tenkan-sen conversion line.
- Ichimoku_Kijun (Default: 26) -> Calculation period for Kijun-sen baseline.
- Ichimoku_SenkouB (Default: 52) -> Calculation period for Senkou Span B cloud boundary.
Filter 5 - RSI 75 Filter
- Use_RSI75_Filter (Default: false) -> Enables long-term 75-period RSI baseline filter.
- RSI_Filter_Period (Default: 75) -> Lookback period in bars for calculating macro RSI trend momentum.
Filter 6 - Double Moving Average Filter
- Use_DoubleMA_Filter (Default: false) -> Enables dual moving average alignment filtering.
- MA_A_Period (Default: 30) -> Lookback period in bars for Fast Moving Average line.
- MA_A_Method (Default: MODE_EMA) -> Smoothing method applied to Fast Moving Average.
- MA_A_Applied (Default: PRICE_CLOSE) -> Applied price constant for Fast Moving Average.
- MA_A_Shift (Default: 0) -> Horizontal bar shift for Fast Moving Average.
- MA_B_Period (Default: 140) -> Lookback period in bars for Slow Moving Average line.
- MA_B_Method (Default: MODE_EMA) -> Smoothing method applied to Slow Moving Average.
- MA_B_Applied (Default: PRICE_CLOSE) -> Applied price constant for Slow Moving Average.
- MA_B_Shift (Default: 0) -> Horizontal bar shift for Slow Moving Average.
Filter 7 - Awesome Oscillator Filter
- Use_AO_Filter (Default: false) -> Primary switch activating Awesome Oscillator filtering framework.
- Use_AO_Volume_Filter (Default: false) -> Enables numerical threshold validation on AO histogram.
- AO_Buy_Min (Default: 4.0) -> Minimum numerical AO value required to confirm buy signals.
- AO_Sell_Max (Default: -4.0) -> Maximum numerical AO value required to confirm sell signals.
- Use_AO_Color_Filter (Default: false) -> Enables bar-to-bar histogram direction expansion filter.
- Use_AO_Zero_Filter (Default: false) -> Enables zero-line polarity and directional expansion filter.
Filter 8 - Parabolic SAR Filter
- Use_SAR_Filter (Default: false) -> Enables Parabolic Stop and Reverse price positioning filter.
- SAR_Step (Default: 0.02) -> Acceleration factor step increment for SAR calculation.
- SAR_Maximum (Default: 0.2) -> Maximum acceleration factor ceiling for SAR calculation.
Filter 9 - Heiken Ashi Filter
- Use_HeikenAshi_Filter (Default: false) -> Enables synthetic Heiken Ashi candle body color validation.
Filter 10 - CCI Trend Filter
- Use_CCI_Filter (Default: false) -> Enables 50-period Commodity Channel Index zero-line filter.
- CCI_Period (Default: 50) -> Calculation period in bars for macro CCI trend evaluation.
- CCI_Applied (Default: PRICE_CLOSE) -> Applied price constant used in CCI calculation.
Filter 11 - CCI Overbought & Oversold Filter
- Use_CCI_OBOS_Filter (Default: false) -> Enables short-term CCI boundary range filter.
- CCI_OBOS_Period (Default: 14) -> Calculation period in bars for short-term CCI momentum.
- CCI_OBOS_Applied (Default: PRICE_CLOSE) -> Applied price constant for short-term CCI.
- CCI_Overbought (Default: 100.0) -> Upper extreme threshold level for CCI overbought boundary.
- CCI_Oversold (Default: -100.0) -> Lower extreme threshold level for CCI oversold boundary.
Filter 12 - RVI Trend and Signal Filters
- Use_RVI_Filter (Default: false) -> Enables secondary RVI zero-line polarity filter.
- RVI_Period (Default: 75) -> Lookback period in bars for secondary RVI trend line.
- Use_RVI_Signal_Filter (Default: false) -> Enables secondary RVI main line versus signal line filter.
- RVI_Signal_Period (Default: 20) -> Lookback period in bars for secondary RVI signal line.
Filter 13 - MACD Filters
- Use_MACD_Filter (Default: false) -> Enables MACD histogram polarity filter (Main minus Signal).
- MACD_FastEMA (Default: 12) -> Calculation period in bars for fast exponential moving average.
- MACD_SlowEMA (Default: 26) -> Calculation period in bars for slow exponential moving average.
- MACD_SignalSMA (Default: 9) -> Calculation period in bars for signal simple moving average.
- MACD_Applied (Default: PRICE_CLOSE) -> Applied price constant used for MACD computation.
- Use_MACD_Zero_Filter (Default: false) -> Enables MACD main line zero-level polarity filter.
Filter 14 - Support / Resistance and Fibonacci Filters
- Use_SR_Filter (Default: false) -> Enables historical price extrema support and resistance zone filter.
- SR_Period (Default: 50) -> Historical lookback depth in bars for detecting peak highs and trough lows.
- SR_Zone_Points (Default: 80) -> Proximity boundary tolerance in broker points defining support and resistance bands.
- Use_Fib_Filter (Default: false) -> Enables algorithmic ZigZag Fibonacci retracement zone filter.
- Fib_Level_1 (Default: 0.382) -> Lower ratio boundary defining the Fibonacci retracement entry zone.
- Fib_Level_2 (Default: 0.618) -> Upper ratio boundary defining the Fibonacci retracement entry zone.
- ZigZag_Depth (Default: 12) -> Number of bars evaluated for swing extrema detection in the ZigZag engine.
- ZigZag_Deviation (Default: 5) -> Minimum point deviation required to establish swing pivots.
- ZigZag_Backstep (Default: 3) -> Minimum number of bars required between consecutive swing pivots.
Technical Efficiency and Computational Optimization
The indicator is engineered using modern MQL5 object-oriented design standards:
- Dedicated Indicator Handles: Built-in indicator handles (iRVI, iMA, iADX, iIchimoku, iSAR, iCCI, iMACD, iAO) are allocated once during OnInit() and safely deallocated via IndicatorRelease() within OnDeinit(), preventing memory leaks and terminal degradation.
- Incremental OnCalculate Processing: Historical buffers are calculated once on terminal initialization (prev_calculated == 0). On subsequent live ticks, calculation is restricted strictly to newly closed bars (rates_total - prev_calculated + 1), maintaining low CPU and RAM overhead during continuous operation.
- Series Data Indexing: All internal data arrays utilize ArraySetAsSeries configuration for uniform chronological referencing, ensuring deterministic alignment across multiple timeframe and asset environments.
Frequently Asked Questions
Q: Does this indicator repaint historical signals?
A: No. The indicator operates on a closed-candle architecture. Calculations are evaluated on completed bars (bar shift index 1 and deeper). The actively forming candle (bar shift index 0) is explicitly cleared and displays zero buffer value. Once a bar closes, the signal arrow is locked permanently.
Q: Can multiple filters be activated simultaneously?
A: Yes. All 14 filters can be combined simultaneously or engaged independently. When multiple filters are enabled, an arrow signal is printed only when all active filter conditions are concurrently satisfied on the exact same closed bar.
Q: Can I use this indicator with Expert Advisors or Automated Trade Copiers?
A: Yes. The indicator exposes two standard indicator buffers accessible via the iCustom MQL5 function:
- Buffer Index 0: Buy Signal Arrow values (wingdings arrow positioned below candle low; 0.0 when inactive).
- Buffer Index 1: Sell Signal Arrow values (wingdings arrow positioned above candle high; 0.0 when inactive).
EA developers can read these buffers at shift 1 to automate trade entries reliably.
Risk Disclaimer
Trading foreign exchange, indices, commodities, and digital assets carries a high level of risk and may not be suitable for all investors. The high degree of leverage available in financial trading can work against you as well as for you. Before deciding to trade financial products, you should carefully consider your investment objectives, level of experience, and risk appetite. Past performance, whether simulated through historical data or recorded on live accounts, is not indicative of future results. This software is an analytical and operational indicator designed to assist traders in objective technical evaluation; it does not provide financial advice or promise trading results. Always test software configurations thoroughly on a demo account before considering live deployment.
