EA CCI MultiFilter Overbought Oversold Signal Pro
- Experts
- Versione: 1.3
- Attivazioni: 5
CCI OBOS Multi Filters EA - Technical Operation Manual & Documentation[cite: 1, 2]
1. SYSTEM OVERVIEW[cite: 1]
CCI OBOS Multi Filters EA is an automated trading solution engineered for MetaTrader 5, developed by FAZA A N[cite: 2]. The program operates on cyclical momentum extremes and statistical boundary reversals calculated by the Commodity Channel Index (CCI)[cite: 1, 2]. The architecture is completely transparent and rule-based, omitting black-box routines, hidden calculations, or unverified claims[cite: 1]. Core trade evaluation is executed strictly on the close of Bar 1, ensuring zero recalculation or repainting on active price bars[cite: 1, 2]. The system does not utilize Martingale multiplier sequences, unhedged grid structures, averaging into losing positions, or latency arbitrage[cite: 1, 2]. Every position operates with physical broker-side Stop Loss and Take Profit protection, complemented by dynamic volatility adjustments via Average True Range (ATR), automated Break-Even logic, trailing stop modules, account free-margin verifications, and broker StopLevel distance validation[cite: 1, 2]. Traders can activate up to 14 independent technical confirmation filters to tailor the execution profile to specific market conditions[cite: 2].
2. OPERATING PRINCIPLE & TECHNICAL LOGIC[cite: 1, 2]
The primary directional trigger is governed by the Commodity Channel Index (CCI), which quantifies deviations from historical statistical mean prices[cite: 1, 2].
Mathematical Formulas:
Typical Price (TP) = (High + Low + Close) / 3[cite: 1]
Simple Moving Average of TP (SMA_TP) = Sum(TP, N) / N[cite: 1]
Mean Deviation (MD) = Sum(|TP - SMA_TP|, N) / N[cite: 1]
CCI Value = (TP - SMA_TP) / (0.015 * MD)[cite: 1]
Signal Logic & Execution:
- Buy Signal: Occurs when CCI on Bar 1 crosses above OversoldLevel while Bar 2 was below or equal to OversoldLevel (cci_buf[1] > OversoldLevel && cci_buf[2] <= OversoldLevel)[cite: 2].
- Sell Signal: Occurs when CCI on Bar 1 crosses below OverboughtLevel while Bar 2 was above or equal to OverboughtLevel (cci_buf[1] < OverboughtLevel && cci_buf[2] >= OverboughtLevel)[cite: 2].
- Non-Repaint Guarantee: Buffers are sampled on Bar 1 (closed candle); confirmed entries never disappear, recalculate, or shift retrospectively[cite: 1, 2].
- Filter Confluence: When an entry signal is detected, the ApplyFilters routine tests all enabled filters simultaneously using logical AND operations; any failed filter immediately cancels execution[cite: 2].
3. INTEGRATED CONFIRMATION FILTERS[cite: 2]
- RSI Cross Filter: Evaluates localized reversal momentum; Buy requires RSI crossing above Oversold level; Sell requires RSI crossing below Overbought level[cite: 2].
- ADX Trend Filter: Enforces minimum directional momentum by requiring Main ADX value >= ADX_Min_Level[cite: 2].
- Single MA Filter: Aligns trades with the prevailing baseline trend; Buy requires Close[1] > MA[1]; Sell requires Close[1] < MA[1][cite: 2].
- Ichimoku Senkou Span B Filter: Verifies cloud equilibrium; Buy requires Close[1] > Senkou Span B[1]; Sell requires Close[1] < Senkou Span B[1][cite: 2].
- RSI 75 Filter: Separates macro bullish from bearish regimes; Buy requires RSI(75)[1] > 50; Sell requires RSI(75)[1] < 50[cite: 2].
- Double MA Filter: Confirms fast and slow trend alignment; Buy requires Fast MA_A > Slow MA_B; Sell requires Fast MA_A < Slow MA_B[cite: 2].
- Awesome Oscillator Filter: Offers three selectable validation criteria: Volume minimum magnitude (AO_Buy_Min/AO_Sell_Max), color/slope continuation, and zero-line threshold alignment[cite: 2].
- Parabolic SAR Filter: Enforces trailing price action alignment; Buy requires Close[1] > SAR[1]; Sell requires Close[1] < SAR[1][cite: 2].
- CCI Trend Filter: Employs an independent higher-period CCI; Buy requires Trend CCI > 0; Sell requires Trend CCI < 0[cite: 2].
- Secondary CCI OB/OS Filter: Requires secondary CCI to reach extreme confirmation levels (CCI > Overbought for Buy; CCI < Oversold for Sell)[cite: 2].
- RVI Trend Filter: Confirms vigor expansion; Buy requires RVI Main > 0; Sell requires RVI Main < 0[cite: 2].
- RVI Signal Filter: Directional crossover confirmation; Buy requires RVI Main > RVI Signal; Sell requires RVI Main < RVI Signal[cite: 2].
- MACD Signal & Zero Filters: Buy requires MACD Histogram > 0 and/or Main Line > 0; Sell requires MACD Histogram < 0 and/or Main Line < 0[cite: 2].
- Support & Resistance Filter: Evaluates dynamic swing high/low bands across SR_Period; entries must interact directly within SR_Zone_Points of the boundary[cite: 2].
- Fibonacci Retracement Filter: Uses ZigZag swing analysis (Depth, Deviation, Backstep) to calculate retracement bands between Fib_Level_1 and Fib_Level_2; orders require candle range intersection within the zone[cite: 2].
- Heiken Ashi Filter: Constructs smoothed synthetic candle values; Buy requires Bullish HA bar (HA_Close > HA_Open); Sell requires Bearish HA bar (HA_Close < HA_Open)[cite: 2].
4. RISK MANAGEMENT & EXECUTION SAFEGUARDS[cite: 1, 2]
- StopLevel Verification: Automatically queries broker SYMBOL_TRADE_STOPS_LEVEL and SYMBOL_SPREAD; enforces a minimum protective buffer of (StopLevel + Spread + 10 points) on all SL, TP, Break-Even, and Trailing distances to prevent rejection errors[cite: 2].
- Margin Capital Protection: Uses OrderCalcMargin before dispatching orders; blocks orders if margin exceeds free margin and restricts lot size to utilize a maximum of 70% free margin[cite: 2].
- Volume Normalization: Calibrates lot sizes against broker SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX, and SYMBOL_VOLUME_STEP[cite: 2].
- Money Management Modes: Supports static fixed lots (InpFixLot) or dynamic scaling based on balance step formulas (InpBaseBalance and InpBaseLot)[cite: 2].
- Dynamic ATR Target Adjustments: Allows setting Stop Loss, Take Profit, Break-Even trigger, and Trailing step distances based on real-time ATR volatility multipliers[cite: 2].
- Position Management: Runs an independent tick routine inside OnTick() for precision Break-Even modifications and minimum-step trailing stop adjustments[cite: 2].
- Order Control: InpCloseOnOpposite enables auto-closing contrary open positions on reverse signals, and InpUseMaxOrders enforces exposure ceilings[cite: 2].
5. SETUP & OPERATIONAL RECOMMENDATIONS[cite: 1]
- Recommended Assets: Liquid Forex pairs (EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, EURJPY, GBPJPY) and Metals (XAUUSD)[cite: 1].
- Recommended Timeframes: M5, M15 for intraday scalping; M30, H1 for day trading; H4 for swing positioning[cite: 1].
- Account Type: Compatible with Hedging and Netting accounts on MetaTrader 5[cite: 1, 2].
- Execution Environment: Low-spread ECN/STP broker with execution latency under 20ms; a low-latency VPS is recommended for continuous trailing stop maintenance[cite: 1].
- Minimum Deposit: Recommended minimum balance is 200 - 500 USD for fixed 0.01 lot sizing, or 600 USD per 0.01 lot under dynamic balance scaling[cite: 1, 2].
6. COMPLETE INPUT PARAMETERS LIST[cite: 1, 2]
General Settings:[cite: 2]
- InpGroupGeneral (Default: "=== GENERAL SETTINGS ===") -> Parameter header grouping general operational parameters[cite: 2].
- InpMagicNumber (Default: 123456) -> Unique numerical identifier for orders placed by this EA[cite: 2].
- InpTradeComment (Default: "CCI_EA") -> Text identifier tagged to trade orders for logging and auditing[cite: 2].
- InpCloseOnOpposite (Default: false) -> Automatically closes opposing open trades upon new valid signals (true/false)[cite: 2].
- InpUseMaxOrders (Default: true) -> Enables restriction on maximum simultaneous open orders (true/false)[cite: 2].
- InpMaxOrders (Default: 20) -> Maximum allowed open positions per symbol and magic number (order count)[cite: 2].
Money Management:[cite: 2]
- InpGroupMM (Default: "=== MONEY MANAGEMENT ===") -> Parameter header grouping volume sizing settings[cite: 2].
- InpUseAutoLot (Default: false) -> Toggles dynamic balance-based lot calculation (true/false)[cite: 2].
- InpFixLot (Default: 0.01) -> Fixed order volume used when AutoLot is disabled (lots)[cite: 2].
- InpBaseBalance (Default: 600.0) -> Balance step required to increment volume under auto lot sizing (currency)[cite: 2].
- InpBaseLot (Default: 0.01) -> Volume increment applied per InpBaseBalance step (lots)[cite: 2].
Risk Management & ATR:[cite: 2]
- InpGroupRisk (Default: "=== RISK MANAGEMENT & ATR ===") -> Parameter header grouping risk protection variables[cite: 2].
- InpATR_Period (Default: 10) -> Lookback period used to calculate Average True Range volatility (bars)[cite: 2].
- InpUseTP (Default: true) -> Activates Take Profit placement on new market orders (true/false)[cite: 2].
- InpUseTP_ATR (Default: false) -> Calculates Take Profit distance dynamically using ATR multiplier (true/false)[cite: 2].
- InpTP_Value (Default: 1000.0) -> Take Profit target magnitude in fixed points or ATR multiplier (points / ratio)[cite: 2].
- InpUseSL (Default: true) -> Activates Stop Loss placement on new market orders (true/false)[cite: 2].
- InpUseSL_ATR (Default: false) -> Calculates Stop Loss distance dynamically using ATR multiplier (true/false)[cite: 2].
- InpSL_Value (Default: 500.0) -> Stop Loss distance magnitude in fixed points or ATR multiplier (points / ratio)[cite: 2].
- InpUseBE (Default: false) -> Activates automated Break-Even stop modification (true/false)[cite: 2].
- InpUseBE_ATR (Default: false) -> Uses ATR multiplier to determine Break-Even profit trigger threshold (true/false)[cite: 2].
- InpBE_Value (Default: 200.0) -> Profit required to adjust Stop Loss to entry price (points / ATR multiplier)[cite: 2].
- InpUseTrailing (Default: false) -> Activates trailing stop management on profitable trades (true/false)[cite: 2].
- InpUseTS_ATR (Default: false) -> Calculates trailing distance dynamically using ATR multiplier (true/false)[cite: 2].
- InpTS_Start (Default: 300.0) -> Minimum unrealized profit before trailing stop begins tracking (points)[cite: 2].
- InpTS_Step (Default: 500.0) -> Trailing stop offset distance behind market price (points / ATR multiplier)[cite: 2].
CCI Settings (Primary Trigger):[cite: 2]
- InpGroupCCI (Default: "=== CCI SETTINGS ===") -> Parameter header grouping primary signal generator inputs[cite: 2].
- CCI_Period (Default: 8) -> Calculation averaging period for the primary Commodity Channel Index (bars)[cite: 2].
- CCI_Source (Default: PRICE_CLOSE) -> Applied price type used for primary CCI calculation[cite: 2].
- OverboughtLevel (Default: 100.0) -> Upper threshold; crossing downward generates Sell signal (index points)[cite: 2].
- OversoldLevel (Default: -100.0) -> Lower threshold; crossing upward generates Buy signal (index points)[cite: 2].
RSI Cross Filter:[cite: 2]
- RSI_Group (Default: "=== RSI CROSS FILTER ===") -> Parameter header grouping RSI cross filter settings[cite: 2].
- Use_RSI_Cross_Filter (Default: false) -> Enables secondary RSI cross confirmation filter (true/false)[cite: 2].
- RSI_Length (Default: 14) -> Calculation period for secondary RSI filter (bars)[cite: 2].
- RSI_Price_Source (Default: PRICE_CLOSE) -> Applied price data used for RSI calculation[cite: 2].
- Oversold (Default: 30.0) -> Bullish boundary threshold for RSI hook (index points)[cite: 2].
- Overbought (Default: 70.0) -> Bearish boundary threshold for RSI hook (index points)[cite: 2].
ADX Filter:[cite: 2]
- ADX_Group (Default: "=== ADX FILTER ===") -> Parameter header grouping ADX filter settings[cite: 2].
- Use_ADX_Filter (Default: false) -> Enables directional movement index filter (true/false)[cite: 2].
- ADX_Period (Default: 10) -> Lookback period for ADX calculation (bars)[cite: 2].
- ADX_Min_Level (Default: 20.0) -> Minimum ADX line threshold required to permit trade entries (index points)[cite: 2].
Single MA Filter:[cite: 2]
- MA_Group (Default: "=== SINGLE MA FILTER ===") -> Parameter header grouping single baseline moving average inputs[cite: 2].
- Use_MA_Filter (Default: false) -> Enables single moving average trend direction filter (true/false)[cite: 2].
- MA_Period (Default: 50) -> Calculation period for baseline moving average (bars)[cite: 2].
- MA_Method (Default: MODE_SMA) -> Smoothing method applied to moving average calculation[cite: 2].
- MA_Shift (Default: 0) -> Horizontal bar displacement offset for moving average (bars)[cite: 2].
Ichimoku Filter:[cite: 2]
- Ichimoku_Group (Default: "=== ICHIMOKU SENKOU SPAN B FILTER ===") -> Parameter header grouping Ichimoku filter inputs[cite: 2].
- Use_Ichimoku_Filter (Default: false) -> Enables Ichimoku Senkou Span B baseline filter (true/false)[cite: 2].
- Ichimoku_SenkouB (Default: 52) -> Averaging period for Senkou Span B cloud line (bars)[cite: 2].
- Ichimoku_Kijun (Default: 26) -> Averaging period for Kijun-sen reference line (bars)[cite: 2].
RSI 75 Filter:[cite: 2]
- RSI75_Group (Default: "=== RSI 75 FILTER ===") -> Parameter header grouping long-term RSI trend inputs[cite: 2].
- Use_RSI75_Filter (Default: false) -> Enables extended period RSI 50-level regime filter (true/false)[cite: 2].
- RSI_Filter_Period (Default: 75) -> Lookback calculation period for long-term RSI (bars)[cite: 2].
Double MA Filter:[cite: 2]
- DoubleMA_Group (Default: "=== DOUBLE MA FILTER ===") -> Parameter header grouping dual MA crossover inputs[cite: 2].
- Use_DoubleMA_Filter (Default: false) -> Enables dual moving average alignment filter (true/false)[cite: 2].
- MA_A_Period (Default: 30) -> Averaging period for Fast Moving Average A (bars)[cite: 2].
- MA_A_Method (Default: MODE_EMA) -> Calculation smoothing type for Fast MA A[cite: 2].
- MA_A_Applied (Default: PRICE_CLOSE) -> Applied price data for Fast MA A[cite: 2].
- MA_A_Shift (Default: 0) -> Horizontal displacement for Fast MA A (bars)[cite: 2].
- MA_B_Period (Default: 140) -> Averaging period for Slow Moving Average B (bars)[cite: 2].
- MA_B_Method (Default: MODE_EMA) -> Calculation smoothing type for Slow MA B[cite: 2].
- MA_B_Applied (Default: PRICE_CLOSE) -> Applied price data for Slow MA B[cite: 2].
- MA_B_Shift (Default: 0) -> Horizontal displacement for Slow MA B (bars)[cite: 2].
Awesome Oscillator (AO) Filter:[cite: 2]
- AO_Group (Default: "=== AWESOME OSCILLATOR FILTER ===") -> Parameter header grouping Awesome Oscillator inputs[cite: 2].
- Use_AO_Filter (Default: false) -> Enables Awesome Oscillator momentum filter (true/false)[cite: 2].
- Use_AO_Volume_Filter (Default: false) -> Restricts trades based on minimum AO numerical values (true/false)[cite: 2].
- AO_Buy_Min (Default: 4.0) -> Minimum positive AO value required to allow Buy orders (points)[cite: 2].
- AO_Sell_Max (Default: -4.0) -> Maximum negative AO value required to allow Sell orders (points)[cite: 2].
- Use_AO_Color_Filter (Default: false) -> Requires AO bar slope/color to match entry direction (true/false)[cite: 2].
- Use_AO_Zero_Filter (Default: false) -> Requires AO to reside on the active side of zero line (true/false)[cite: 2].
Parabolic SAR Filter:[cite: 2]
- SAR_Group (Default: "=== PARABOLIC SAR FILTER ===") -> Parameter header grouping Parabolic SAR inputs[cite: 2].
- Use_SAR_Filter (Default: false) -> Enables Parabolic SAR trailing boundary filter (true/false)[cite: 2].
- SAR_Step (Default: 0.02) -> Acceleration factor incremental step value (ratio)[cite: 2].
- SAR_Maximum (Default: 0.2) -> Maximum acceleration factor ceiling value (ratio)[cite: 2].
Heiken Ashi Filter:[cite: 2]
- HA_Group (Default: "=== HEIKEN ASHI FILTER ===") -> Parameter header grouping Heiken Ashi inputs[cite: 2].
- Use_HeikenAshi_Filter (Default: false) -> Enables synthetic Heiken Ashi directional bar filter (true/false)[cite: 2].
CCI Trend Filter:[cite: 2]
- CCI_Group (Default: "=== CCI TREND FILTER ===") -> Parameter header grouping macro CCI trend inputs[cite: 2].
- Use_CCI_Filter (Default: false) -> Enables secondary higher-period CCI zero-line trend filter (true/false)[cite: 2].
- CCI_Trend_Period (Default: 50) -> Calculation averaging period for trend CCI (bars)[cite: 2].
- CCI_Trend_Applied (Default: PRICE_CLOSE) -> Applied price type for trend CCI[cite: 2].
Secondary CCI OB/OS Filter:[cite: 2]
- CCI_OBOS_Group (Default: "=== CCI OB AND OS FILTER ===") -> Parameter header grouping secondary CCI OB/OS inputs[cite: 2].
- Use_CCI_OBOS_Filter (Default: false) -> Enables secondary multi-period CCI extreme filter (true/false)[cite: 2].
- CCI_OBOS_Period (Default: 14) -> Calculation period for secondary OB/OS CCI (bars)[cite: 2].
- CCI_OBOS_Applied (Default: PRICE_CLOSE) -> Applied price type for secondary OB/OS CCI[cite: 2].
- CCI_Overbought (Default: 100.0) -> Upper extreme threshold for secondary CCI filter (index points)[cite: 2].
- CCI_Oversold (Default: -100.0) -> Lower extreme threshold for secondary CCI filter (index points)[cite: 2].
RVI Trend Filter:[cite: 2]
- RVI_Group (Default: "=== RVI TREND FILTER ===") -> Parameter header grouping RVI trend inputs[cite: 2].
- Use_RVI_Filter (Default: false) -> Enables Relative Vigor Index zero-line trend filter (true/false)[cite: 2].
- RVI_Period (Default: 75) -> Lookback period for RVI trend baseline calculation (bars)[cite: 2].
RVI Signal Filter:[cite: 2]
- RVI_Signal_Group (Default: "=== RVI SIGNAL FILTER ===") -> Parameter header grouping RVI signal line inputs[cite: 2].
- Use_RVI_Signal_Filter (Default: false) -> Enables RVI main vs signal line crossover confirmation (true/false)[cite: 2].
- RVI_Signal_Period (Default: 20) -> Calculation period for RVI signal interaction (bars)[cite: 2].
MACD Filters:[cite: 2]
- MACD_Group (Default: "=== MACD SIGNAL FILTER ===") -> Parameter header grouping MACD signal filter inputs[cite: 2].
- Use_MACD_Filter (Default: false) -> Enables MACD histogram momentum confirmation (true/false)[cite: 2].
- MACD_FastEMA (Default: 12) -> Fast exponential moving average period for MACD (bars)[cite: 2].
- MACD_SlowEMA (Default: 26) -> Slow exponential moving average period for MACD (bars)[cite: 2].
- MACD_SignalSMA (Default: 9) -> Signal line simple moving average period for MACD (bars)[cite: 2].
- MACD_Applied (Default: PRICE_CLOSE) -> Applied price data for MACD calculation[cite: 2].
- MACD_Zero_Group (Default: "=== MACD LEV 0 FILTER ===") -> Parameter header grouping MACD zero-level inputs[cite: 2].
- Use_MACD_Zero_Filter (Default: false) -> Enables MACD main line zero-level alignment filter (true/false)[cite: 2].
Support & Resistance Filter:[cite: 2]
- SR_Group (Default: "=== SUPPORT AND RESISTANCE FILTER ===") -> Parameter header grouping S/R price action inputs[cite: 2].
- Use_SR_Filter (Default: false) -> Enables structural support and resistance touch filter (true/false)[cite: 2].
- SR_Period (Default: 50) -> Calculation lookback window for identifying swing price extremes (bars)[cite: 2].
- SR_Zone_Points (Default: 80) -> S/R boundary zone width tolerance (points)[cite: 2].
Fibonacci Filter:[cite: 2]
- Fib_Group (Default: "=== FIBONACCI FILTER ===") -> Parameter header grouping Fibonacci retracement inputs[cite: 2].
- Use_Fib_Filter (Default: false) -> Enables ZigZag-based Fibonacci retracement confluence filter (true/false)[cite: 2].
- Fib_Level_1 (Default: 0.382) -> First boundary ratio for Fibonacci zone evaluation (decimal ratio)[cite: 2].
- Fib_Level_2 (Default: 0.618) -> Second boundary ratio for Fibonacci zone evaluation (decimal ratio)[cite: 2].
- ZigZag_Depth (Default: 12) -> Lookback bar count for ZigZag swing point calculation (bars)[cite: 2].
- ZigZag_Deviation (Default: 5) -> Minimum price deviation threshold for ZigZag extremes (points)[cite: 2].
- ZigZag_Backstep (Default: 3) -> Minimum bar spacing interval between consecutive ZigZag swing pivots (bars)[cite: 2].
7. RISK DISCLAIMER[cite: 1]
Trading foreign exchange, indices, commodities, and related financial derivatives involves substantial risk of loss and is not appropriate for all investors[cite: 1]. Past performance or backtesting results do not guarantee or predict future operational outcomes[cite: 1]. This Expert Advisor is a technical execution utility designed to automate objective analytical rules and does not guarantee investment returns or profits[cite: 1]. Always evaluate operational behavior and test default or custom set configurations thoroughly on a demo account before considering deployment on live trading accounts[cite: 1].
