Pipsgrowth EX12074 MultiIndicatorConfluence
MT5 Expert Advisor (Open Source) · XAUUSD, XAGUSD · M5, H1
Pipsgrowth.com EX12074 MultiSymbolPortfolioEA — Multi-symbol portfolio with Hull MA confluence, full 12-layer stack.
Overview
EX12074 is the only EA in the EX12 family that does not pin itself to a single symbol. It opens the chart, then spreads its attention across eight market instruments at once — XAUUSDm, XAGUSDm, USDJPYm, EURUSDm, GBPUSDm, AUDUSDm, EURJPYm and GBPJPYm — and picks the best opportunity per scan. The trading logic itself is built around a four-band Hull Moving Average consensus: at every new bar the EA computes Hull MA values for four different periods (periods are set per symbol preset — gold uses 14/21/34/55, silver and JPY pairs use 21/34/55/89, EUR/GBP pairs use 34/55/89/144, and any BTC/ETH symbol uses 10/16/26/42) using the formula WMA(2·WMA(price, period/2) − WMA(price, period), sqrt(period)). Each Hull's slope direction is checked against a five-point threshold to filter noise, and a direction is locked only when at least InpMinHullAgreement (default 2 of 4) point the same way AND the close sits on the correct side of the Hull. That agreement count is one of seven weighted pillars that combine into a single confidence score on a 100-point scale. The pillars are Direction (25 points — Hull agreement, higher-timeframe alignment, ADX strength, divergence-clean assumption), Timing (15 points — signal age under 20 bars, momentum consistency over 5 bars, optimal-session check), Asset Condition (10 points — ATR in 0.5x–1.5x of its 50-bar average, current spread within spreadMaxPips, regime classifier returns TRENDING), Filters (20 points — currently a flat 20/20 because InpRequireSRBreakout defaults to false), Entry Setup (15 points — 7 points assumed-confluence plus 8 from Hull-agreement count) and Exit Plan (15 points — valid SL/TP computable plus trailing plan armed). When CalculateConfidenceForSymbol() returns at least InpMinConfidenceScore (70 by default, 5–100 range), the symbol joins the candidate list. ScanAllSymbols() then sorts the list by confidence, takes the single best opportunity, and routes it to ExecuteTradeOnSymbol().
The market regime classifier behind the Asset pillar uses the symbol's ADX handle (iADX(sym, PERIOD_CURRENT, InpRegimeADXPeriod=14)) and ATR handle (per-symbol period from preset — gold 10, silver 12, JPY 14, EUR/GBP 14, BTC/ETH 8). Trending fires when ADX ≥ InpRegimeTrendADX (30 by default, with symbol-class overrides: gold 30, silver 28, JPY 25, EUR/GBP 25, BTC/ETH 35). Volatile fires when current ATR is at least InpRegimeVolatileATR (1.5× the 50-bar average). Quiet fires when ATR drops below InpRegimeRangeATR (0.5× the average). Anything else is RANGING. Although InpOnlyTrendingRegime exists in the input group, the scoring path no longer hard-blocks the non-trending regimes — the regime merely adds 0, 1 or 3 points toward the asset pillar.
The auto-calibration pipeline is the structural innovation. On OnInit, after symbol specs are read, CalibrateSymbol() runs once per enabled symbol. Step 3 calls MeasureSpreadStats() which samples the live spread for up to 5 seconds (or 100 samples at 50 ms intervals — whichever comes first) and records avg/min/max into SpreadStats. Step 4 calls CalculateATRStats() to capture the current ATR and a 50-period running average. Step 5 calls CalculateOptimalParameters() which derives symbol-specific distances in price units: SL distance = avgATR × InpStopLossATRMult (2.0) but floored at (stopLevel + avgSpread) × point × 1.5 so the broker's minimum stop is always respected, TP distance = SL × InpTakeProfitRR (2.0), breakeven distance = max(avgATR × InpBreakevenATRMult=0.5, SL × 0.3), trail start = max(avgATR × InpTrailStartATRMult=1.0, SL × 0.5), trail step = avgATR × InpTrailStepATRMult=0.5, and spreadMaxPoints = avgSpread × InpSpreadMaxMultiplier (2.5). Step 6 validates that SL ≥ stopLevel × point and that the breakeven distance is non-negative and within the SL range. When InpExportCalibration=true (the default), ExportCalibrationData() writes five CSV/log files to MQL5/Files: symbol specs, spread samples, ATR samples, optimal parameters, and a per-symbol validation log. The pipeline is one-shot at init; InpRecalibrateDaily is defined but the timer that would drive daily recalibration is commented out and all scanning runs from OnTick on new-bar events — the source comment explicitly states this was done so optimization and live trading use identical scan paths.
Dynamic risk scaling sits on top of the position sizer. The risk manager tracks consecutiveWins, consecutiveLosses, protectedBalance, peakBalance, currentDrawdown, safeModeActive and a daily P&L block. Base risk is InpStartRisk (25%), bumped by InpRiskIncrement (8%) per consecutive win, capped at InpMaxRisk (75%). When consecutive losses reach InpMaxConsecutiveLosses (3), the working risk is multiplied by InpLossReduction (0.5). When balance crosses 80% of InpTargetBalance (default $1,000), risk is multiplied by 0.5 even mid-trade. When balance actually hits the target, g_riskManager.safeModeActive flips true and risk drops to InpSafeModeRisk (3%) for the rest of the run. CalculateDynamicLotSize() then subtracts the protected capital (initial balance + 30% of any unrealized profit) before sizing the lot, so the tradable slice shrinks as the cushion builds. The result is fed into the standard risk formula: lotSize = riskAmount / (slDistance/tickSize × tickValue), then NormalizeLot() clamps to the broker's lotMin / lotMax / lotStep.
Capital-protection and correlation filtering are the final two layers. The CheckProtectionLimits() guard returns false (and the EA stops scanning for entries) when peak-to-current drawdown ≥ InpMaxDrawdown (25%) or when intraday loss ≥ InpMaxDailyLoss (15% of the day's starting balance). CheckSymbolProtections() short-circuits a single symbol after 3 consecutive losses on that symbol or when the live spread exceeds the calibrated spreadMaxPoints. IsCorrelatedWithOpenPositions() walks all open positions whose magic matches InpMagicNumber=22212074, looks up the pair in g_correlationMatrix, and blocks the new opportunity when the absolute correlation exceeds InpMaxCorrelation (0.70). The correlation matrix is built once at init by BuildCorrelationMatrix() using EstimateCorrelation() — a hardcoded lookup: any two symbols containing "EUR" return 0.8; EURUSD vs GBPUSD return 0.85; any two USD-pairs return −0.5; any two JPY pairs return 0.7; XAU vs XAG return 0.6; everything else returns 0.3. This is a deliberate approximation, not a rolling correlation computation, and is noted in the source.
Exit management runs every tick on every position. ProcessAllExits() walks the EA's positions in reverse, then for each one calls MoveToBreakeven(), PartialClosePosition() and TrailStop() in that order. MoveToBreakeven() uses the calibrated beDistancePrice — once price moves that far in profit and the current SL is still on the wrong side of entry, SL is moved to entry+point for buys or entry−point for sells via TryModify_EX12074(). PartialClosePosition() checks a per-ticket global variable (PartialClosed_<ticket>) so it fires only once, then closes InpPartialClosePercent (50%) at the broker minimum lot when priceDiff ≥ slDiff (i.e. profit has reached 1:1 R:R). TrailStop() activates once price has moved trailStartPrice in profit, then ratchets the SL to currentPrice ± trailStepPrice, but only when the new SL is meaningfully tighter than the current one (newSL > sl + trailStep × 0.5, or current SL is zero). All three exit modifications route through the TryModify_EX12074() retry wrapper, which retries on REQUOTE/TIMEOUT/PRICE_OFF/PRICE_CHANGED with 100 ms backoff.
What the EA does NOT do: it does not run a timer (the OnTimer function is a stub that returns immediately), it does not apply a global hard equity-stop inside the trade functions (the only stops are the per-position SL/TP plus the per-symbol/drawdown gates in CheckProtectionLimits), it does not grid or martingale (no order layering, no lot multiplier on loss), and it does not persist a running correlation coefficient — the matrix is static after init. The dashboard (InpEnableDashboard=true by default) writes a banner via Comment() showing balance, equity, target, peak, drawdown, mode (AGGRESSIVE/SAFE), win streak, win rate, top 5 symbol stats, and last-scan time, and is suppressed during MQL5 optimization passes so it does not pollute the optimizer log.
Strategy Deep Dive
EX12074 is a multi-symbol portfolio EA: it loads up to eight instruments (XAUUSDm, XAGUSDm, USDJPYm, EURUSDm, GBPUSDm, AUDUSDm, EURJPYm, GBPJPYm — each toggled via boolean inputs) and runs a per-bar scan across all of them. The signal core is hand-rolled Hull MA — WMA(2·WMA(price, period/2) − WMA(price, period), sqrt(period)) — calculated from raw close prices for four symbol-specific periods (Gold 14/21/34/55, Silver & JPY 21/34/55/89, EUR/GBP 34/55/89/144, BTC/ETH 10/16/26/42), then folded into a 7-pillar weighted confidence score on a 100-point scale (Direction 25, Timing 15, Asset 10, Filters 20, Entry Setup 15, Exit Plan 15). Only the best-scoring opportunity per scan is executed, after passing the no-trade gates (peak-DD 25%, daily loss 15%, 3-consecutive-losses, calibrated spread cap, correlation 0.7, regime classifier returning TRENDING adds 3 to the asset pillar). On OnInit, CalibrateSymbol() measures 5 seconds of live spread samples + a 50-bar ATR for each symbol and derives symbol-specific SL/TP/breakeven/trail distances in price units, then exports five CSV/log files to MQL5/Files. The dynamic risk manager scales base risk 25% by +8% per consecutive win (cap 75%), halves it after 3 losses, halves it again at 80% of the $1,000 target, and flips to 3% safe-mode risk once the target is reached. Exit management runs every tick: breakeven shift at beDistance, 50% partial close at 1:1 R:R, then a per-bar trailing stop ratcheting at trailStep. The OnTradeTransaction callback updates per-symbol performance stats and feeds the consecutive-win/loss counters that drive the risk scaler.
Buy when at least InpMinHullAgreement (default 2 of 4) Hull MAs agree on direction AND price sits on the correct side of the Hull, ADX ≥ symbol-class threshold (gold 30, silver 28, JPY 25, EUR/GBP 25, BTC/ETH 35), and the seven-pillar weighted confidence score ≥ InpMinConfidenceScore (70 by default, 5–100 range). Sell is the mirror. Per scan, only the single highest-confidence opportunity is executed via g_trade.Buy/Sell with auto-calibrated lot size from the dynamic risk manager.
Three layers, all in ProcessAllExits(): MoveToBreakeven() shifts SL to entry±point once price has moved beDistancePrice (calibrated, max(ATR×0.5, SL×0.3)) in profit; PartialClosePosition() closes InpPartialClosePercent (50%) at the broker lot min once priceDiff ≥ slDiff (1:1 R:R reached), tracked via a per-ticket global variable so it fires only once; TrailStop() ratchets SL to currentPrice ± trailStepPrice (calibrated, ATR×0.5) once price has moved trailStartPrice (ATR×1.0) in profit, only when the new SL is meaningfully tighter. All modifications retry on REQUOTE/TIMEOUT/PRICE_OFF/PRICE_CHANGED via TryModify_EX12074().
Per-trade SL = entry ± slDistancePrice, where slDistancePrice = avgATR(50) × InpStopLossATRMult (default 2.0) and floored at (stopLevel + avgSpread) × point × 1.5 to respect the broker's minimum-stop rule. TP = entry ± slDistancePrice × InpTakeProfitRR (default 2.0), enforcing a 1:2 risk-reward at entry. Account-level hard stop is 25% peak-to-current drawdown in CheckProtectionLimits() plus 15% intraday loss from the day's starting balance.
Take-profit = entry ± slDistancePrice × InpTakeProfitRR (default 2.0), giving a 1:2 risk-reward ratio at entry. Both SL and TP distances are derived in OnInit by CalibrateSymbol() from a 5-second live spread sample and the symbol's 50-bar ATR average, not from hardcoded pips. Once price moves 1:1 R:R, PartialClosePosition() closes half the position at the broker lot min and the trailing stop takes over the remainder.
Built for multi-symbol portfolio traders running gold (XAUUSDm), silver (XAGUSDm), and seven FX majors (USDJPYm, EURUSDm, GBPUSDm, AUDUSDm, EURJPYm, GBPJPYm) on M5 or H1 with a $100 minimum account. ECN/RAW-spread broker strongly recommended — the 5-second on-init spread sample is what calibrates the trade-entry cap, and gold/silver spreads above the symbol-class maximum (Gold 30 pips, Silver 20 pips, JPY 15 pips, EUR/GBP 12 pips) will block entries on their own. M5 is the suggested timeframe; H1 works for slower rotation. Risk level MEDIUM, with a dynamic risk scaler (25% base, +8% per win, cap 75%, 3% safe-mode after the $1,000 target) that traders should understand before going live. The 0.7 correlation filter means running only one side of correlated groups (one EUR pair, one JPY pair, or XAU+XAG) yields more trades than running both sides of any group.
Strategy Logic
Pipsgrowth EX12074 MultiIndicatorConfluence — Strategy Logic Analysis (from .mq5 source)
Family: MultiIndicatorConfluence
Magic: 22212074
Version: 2.00
BRIEF:
Multi-symbol portfolio EA trading Gold, Silver and FX majors with dynamic risk scaling, Hull MA confluence entry, market regime detection and auto-calibration. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
OnTimer()OnTradeTransaction()InitializeRiskManager()InitializeAllSymbols()InitializeSymbol()ApplySymbolPreset()InitializeSymbolIndicators()CalibrateSymbol()ReadSymbolSpecs()CalculatePipMetrics()MeasureSpreadStats()CalculateATRStats()- ...and 65 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (63 total across 12 groups):
- [=== Symbol Selection ===]
InpTradeXAUUSDm=true// TradeXAUUSDm(Gold) - [=== Symbol Selection ===]
InpTradeXAGUSDm=true// TradeXAGUSDm(Silver) - [=== Symbol Selection ===]
InpTradeUSDJPYm=true// Trade USDJPYm - [=== Symbol Selection ===]
InpTradeEURUSDm=true// Trade EURUSDm - [=== Symbol Selection ===]
InpTradeGBPUSDm=true// Trade GBPUSDm - [=== Symbol Selection ===]
InpTradeAUDUSDm=true// Trade AUDUSDm - [=== Symbol Selection ===]
InpTradeEURJPYm=true// Trade EURJPYm - [=== Symbol Selection ===]
InpTradeGBPJPYm=true// Trade GBPJPYm - [=== Portfolio Settings ===]
InpScanIntervalSec= 15 // ScanInterval(seconds) -AGGRESSIVE - [=== Portfolio Settings ===]
InpMaxConcurrentTrades= 3 // Max Concurrent Trades -AGGRESSIVE - [=== Portfolio Settings ===]
InpAvoidCorrelation=true// Avoid Correlated Pairs - [=== Portfolio Settings ===]
InpMaxCorrelation=0.70// Max Correlation Threshold - [=== Dynamic Risk Scaling ===]
InpStartRisk=25.0// Starting Risk % (15.0,5.0,50.0) - [=== Dynamic Risk Scaling ===]
InpMaxRisk=75.0// Maximum Risk % (50.0,10.0,100.0) - [=== Dynamic Risk Scaling ===]
InpRiskIncrement=8.0// Risk Increase perWin(5.0,5.0,20.0) - [=== Dynamic Risk Scaling ===]
InpProtectedProfit=30.0// Keep % ProfitProtected(10.0,5.0,50.0) - [=== Dynamic Risk Scaling ===]
InpTargetBalance=1000.0// Target Balance to Reach - [=== Dynamic Risk Scaling ===]
InpAutoReduceNearGoal=true// Reduce Risk Near Target - [=== Dynamic Risk Scaling ===]
InpSafeModeRisk=3.0// Safe Mode Risk % (after target) - [=== Perfect Entry Scoring ===]
InpMinConfidenceScore= 70 // Min ConfidenceScore(70,5,100) -AGGRESSIVE - [=== Perfect Entry Scoring ===]
InpRequireAllPillars=false// All 7 Pillars Must Pass - [=== Perfect Entry Scoring ===]
InpMinHullAgreement= 2 // Min HullAgreement(2,1,4) -AGGRESSIVE - [=== Hull Indicators ===]
InpHull1Period= 21 // Hull 1Period(auto-adjusted) - [=== Hull Indicators ===]
InpHull2Period= 34 // Hull 2Period(auto-adjusted) - [=== Hull Indicators ===]
InpHull3Period= 55 // Hull 3Period(auto-adjusted) - [=== Hull Indicators ===]
InpHull4Period= 89 // Hull 4Period(auto-adjusted) - [=== Hull Indicators ===]
InpHullDivisor=1.6// Hull Divisor - [=== Hull Indicators ===]
InpHullPrice= 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) - [=== Hull Indicators ===]
InpSignalShift= 0 // Signal Bar Shift - [=== S/R Breakout Filter ===]
InpRequireSRBreakout=false// Require S/R Breakout -DISABLEDFOR MORETRADES - [=== S/R Breakout Filter ===]
InpSRBreakoutATR=0.5// Min BreakoutATRMult(0.2,0.1,2.0) - [=== S/R Breakout Filter ===]
InpSRHigherTFConfirm=false// Higher TF Confirmation -DISABLED - [=== S/R Breakout Filter ===]
InpSRHigherTF= 9 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher Timeframe - [=== S/R Breakout Filter ===]
InpSRLookbackBars= 50 // S/R LookbackBars(20,5,200) - [=== S/R Breakout Filter ===]
InpSRSwingBars= 5 // Swing PointBars(3,1,20) - [=== Market Regime ===]
InpRegimeDetection=true// Enable Regime Detection - [=== Market Regime ===]
InpRegimeTrendADX=30.0// Trending MinADX(20.0,5.0,50.0) - [=== Market Regime ===]
InpRegimeRangeATR=0.5// Ranging MaxATRMult - [=== Market Regime ===]
InpRegimeVolatileATR=1.5// Volatile MinATRMult - [=== Market Regime ===]
InpRegimeADXPeriod= 14 // RegimeADXPeriod(7,1,30) - [=== Market Regime ===]
InpRegimeATRPeriod= 14 // RegimeATRPeriod(7,1,30) - [=== Market Regime ===]
InpRegimeATRAvgPeriod= 50 //ATRAveragePeriod(20,1,100) - [=== Market Regime ===]
InpOnlyTrendingRegime=false// Only Trade in Trending - [=== Auto-Calibration ===]
InpAutoCalibrate=true// Auto-Calibrate Parameters - [=== Auto-Calibration ===]
InpExportCalibration=true// Export Calibration to Files - [=== Auto-Calibration ===]
InpRecalibrateDaily=false// Recalibrate Every 24 Hours - [===
ATRMultipliers ===]InpStopLossATRMult=2.0// SL =ATR× this (1.5,0.5,5.0) - [===
ATRMultipliers ===]InpTakeProfitRR=2.0// TP = SL × this (1.0,0.5,5.0) - [===
ATRMultipliers ===]InpBreakevenATRMult=0.5// BE =ATR× this (0.3,0.1,2.0) - [===
ATRMultipliers ===]InpTrailStartATRMult=1.0// Trail Start =ATR× this (0.5,0.1,3.0) - [===
ATRMultipliers ===]InpTrailStepATRMult=0.5// Trail Step =ATR× this (0.2,0.1,2.0) - [===
ATRMultipliers ===]InpSpreadMaxMultiplier=2.5// Max Spread = Avg × this (1.5,0.5,5.0) - [=== Exit Management ===]
InpPartialClose=true// Partial Close at 1:1 - [=== Exit Management ===]
InpPartialClosePercent=50.0// Partial Close % (30.0,10.0,80.0) - [=== Exit Management ===]
InpTrailingStop=true// Enable Trailing Stop - [=== Account Protection ===]
InpMaxDailyLoss=15.0// Max Daily Loss % (10.0,5.0,30.0) - [=== Account Protection ===]
InpMaxDrawdown=25.0// Max Drawdown % (15.0,5.0,40.0) - [=== Account Protection ===]
InpMaxConsecutiveLosses= 3 // Max Consecutive Losses - [=== Account Protection ===]
InpLossReduction=0.5// Lot Reduction After Losses - [=== General Settings ===]
InpMagicNumber=22212074// Magic Number - [=== General Settings ===]
InpTradeComment= "Psgrowth.com Expert_12074" // TradeComment - [=== General Settings ===]
InpEnableDashboard=true// Enable Dashboard - [=== General Settings ===]
InpDebugMode=false// DebugMode(verbose logging)
// Pipsgrowth EX12074 MultiIndicatorConfluence — Execution Flow (from source analysis)
// Family: MultiIndicatorConfluence
// Multi-symbol portfolio EA trading Gold, Silver and FX majors with dynamic risk scaling, Hull MA confluence entry, market regime detection and auto-calibration. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
ON_INIT:
Create indicator handles: standard set
Initialize state variables
Detect broker GMT offset
ON_TICK:
1. Refresh indicator buffers (closed-bar shift=1)
2. Manage existing positions:
- Break-even check
- ATR trailing stop
- Profit lock ratchet
- Time-based exit
- Opposite-signal exit
3. If new bar:
a. ClassifyRegime() — ADX/ATR/BB regime detection
b. NoTradeGate() checks:
- Market open + session filter
- Spread limit
- Cooldown after loss
- Consecutive loss limit
- Kill switch
- Max drawdown
- Max concurrent positions
- Daily/weekly loss limits
c. GenerateSignal() — strategy-specific entry logic
d. CheckConfirm() — HTF alignment + R:R + ADX minimum
e. Calculate position size from risk %
f. Execute with retry logic
g. Mark bar to prevent duplicates
ON_TESTER:
Custom fitness = weighted(RecoveryFactor, ROI, ProfitFactor, TradeCount, Sharpe, Drawdown)Optimization Profile
How to Install This EA on MT5
- 1Download the .mq5 file using the button above
- 2Open MetaTrader 5 on your computer
- 3Click File → Open Data Folder in the top menu
- 4Navigate to MQL5 → Experts and paste the .mq5 file there
- 5In MT5, right-click Expert Advisors in the Navigator panel → Refresh
- 6Drag the EA onto a chart matching the recommended timeframe
- 7Configure parameters according to the table on this page
- 8Enable Allow Algo Trading and click OK
EA Parameters
| Parameter | Default | Description |
|---|---|---|
| InpTradeXAUUSDm | true | Trade XAUUSDm (Gold) |
| InpTradeXAGUSDm | true | Trade XAGUSDm (Silver) |
| InpTradeUSDJPYm | true | Trade USDJPYm |
| InpTradeEURUSDm | true | Trade EURUSDm |
| InpTradeGBPUSDm | true | Trade GBPUSDm |
| InpTradeAUDUSDm | true | Trade AUDUSDm |
| InpTradeEURJPYm | true | Trade EURJPYm |
| InpTradeGBPJPYm | true | Trade GBPJPYm |
| InpScanIntervalSec | 15 | Scan Interval (seconds) - AGGRESSIVE |
| InpMaxConcurrentTrades | 3 | Max Concurrent Trades - AGGRESSIVE |
| InpAvoidCorrelation | true | Avoid Correlated Pairs |
| InpMaxCorrelation | 0.70 | Max Correlation Threshold |
| InpStartRisk | 25.0 | Starting Risk % (15.0,5.0,50.0) |
| InpMaxRisk | 75.0 | Maximum Risk % (50.0,10.0,100.0) |
| InpRiskIncrement | 8.0 | Risk Increase per Win (5.0,5.0,20.0) |
| InpProtectedProfit | 30.0 | Keep % Profit Protected (10.0,5.0,50.0) |
| InpTargetBalance | 1000.0 | Target Balance to Reach |
| InpAutoReduceNearGoal | true | Reduce Risk Near Target |
| InpSafeModeRisk | 3.0 | Safe Mode Risk % (after target) |
| InpMinConfidenceScore | 70 | Min Confidence Score (70,5,100) - AGGRESSIVE |
| InpRequireAllPillars | false | All 7 Pillars Must Pass |
| InpMinHullAgreement | 2 | Min Hull Agreement (2,1,4) - AGGRESSIVE |
| InpHull1Period | 21 | Hull 1 Period (auto-adjusted) |
| InpHull2Period | 34 | Hull 2 Period (auto-adjusted) |
| InpHull3Period | 55 | Hull 3 Period (auto-adjusted) |
| InpHull4Period | 89 | Hull 4 Period (auto-adjusted) |
| InpHullDivisor | 1.6 | Hull Divisor |
| InpHullPrice | 1 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) |
| InpSignalShift | 0 | Signal Bar Shift |
| InpRequireSRBreakout | false | Require S/R Breakout - DISABLED FOR MORE TRADES |
| InpSRBreakoutATR | 0.5 | Min Breakout ATR Mult (0.2,0.1,2.0) |
| InpSRHigherTFConfirm | false | Higher TF Confirmation - DISABLED |
| InpSRHigherTF | 9 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher Timeframe |
| InpSRLookbackBars | 50 | S/R Lookback Bars (20,5,200) |
| InpSRSwingBars | 5 | Swing Point Bars (3,1,20) |
| InpRegimeDetection | true | Enable Regime Detection |
| InpRegimeTrendADX | 30.0 | Trending Min ADX (20.0,5.0,50.0) |
| InpRegimeRangeATR | 0.5 | Ranging Max ATR Mult |
| InpRegimeVolatileATR | 1.5 | Volatile Min ATR Mult |
| InpRegimeADXPeriod | 14 | Regime ADX Period (7,1,30) |
| InpRegimeATRPeriod | 14 | Regime ATR Period (7,1,30) |
| InpRegimeATRAvgPeriod | 50 | ATR Average Period (20,1,100) |
| InpOnlyTrendingRegime | false | Only Trade in Trending |
| InpAutoCalibrate | true | Auto-Calibrate Parameters |
| InpExportCalibration | true | Export Calibration to Files |
| InpRecalibrateDaily | false | Recalibrate Every 24 Hours |
| InpStopLossATRMult | 2.0 | SL = ATR × this (1.5,0.5,5.0) |
| InpTakeProfitRR | 2.0 | TP = SL × this (1.0,0.5,5.0) |
| InpBreakevenATRMult | 0.5 | BE = ATR × this (0.3,0.1,2.0) |
| InpTrailStartATRMult | 1.0 | Trail Start = ATR × this (0.5,0.1,3.0) |
| InpTrailStepATRMult | 0.5 | Trail Step = ATR × this (0.2,0.1,2.0) |
| InpSpreadMaxMultiplier | 2.5 | Max Spread = Avg × this (1.5,0.5,5.0) |
| InpPartialClose | true | Partial Close at 1:1 |
| InpPartialClosePercent | 50.0 | Partial Close % (30.0,10.0,80.0) |
| InpTrailingStop | true | Enable Trailing Stop |
| InpMaxDailyLoss | 15.0 | Max Daily Loss % (10.0,5.0,30.0) |
| InpMaxDrawdown | 25.0 | Max Drawdown % (15.0,5.0,40.0) |
| InpMaxConsecutiveLosses | 3 | Max Consecutive Losses |
| InpLossReduction | 0.5 | Lot Reduction After Losses |
| InpMagicNumber | 22212074 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_12074" | Trade Comment |
| InpEnableDashboard | true | Enable Dashboard |
| InpDebugMode | false | Debug Mode (verbose logging) |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX12074 MultiSymbolPortfolioEA — Multi-symbol portfolio with Hull MA confluence, full 12-layer stack."
//--- Includes
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| INPUT PARAMETERS |
//+------------------------------------------------------------------+
//--- Multi-Symbol Portfolio
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(tf)
{
case 1: return PERIOD_M1;
case 2: return PERIOD_M5;
case 3: return PERIOD_M15;
case 4: return PERIOD_M30;
case 5: return PERIOD_H1;
case 6: return PERIOD_H4;
case 7: return PERIOD_D1;
default: return PERIOD_H1;
}
}
ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
switch(ap)
{
case 1: return PRICE_CLOSE;
case 2: return PRICE_OPEN;
case 3: return PRICE_HIGH;
case 4: return PRICE_LOW;
case 5: return PRICE_MEDIAN;
case 6: return PRICE_TYPICAL;
case 7: return PRICE_WEIGHTED;
default: return PRICE_CLOSE;
}
}
ENUM_TIMEFRAMES g_InpSRHigherTF = PERIOD_H1;
ENUM_APPLIED_PRICE g_InpHullPrice = PRICE_CLOSE;
input group "=== Symbol Selection ==="
input bool InpTradeXAUUSDm = true; // Trade XAUUSDm (Gold)
input bool InpTradeXAGUSDm = true; // Trade XAGUSDm (Silver)
input bool InpTradeUSDJPYm = true; // Trade USDJPYm
input bool InpTradeEURUSDm = true; // Trade EURUSDm
input bool InpTradeGBPUSDm = true; // Trade GBPUSDm
input bool InpTradeAUDUSDm = true; // Trade AUDUSDm
input bool InpTradeEURJPYm = true; // Trade EURJPYm
input bool InpTradeGBPJPYm = true; // Trade GBPJPYm
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{Full source code available on download
Educational purposes only. Do NOT use with real money. Test on demo accounts only.
Clear Warning: Educational Purposes Only
Clear Warning: This Expert Advisor is for educational and testing purposes only. Do NOT use it with real money. Test only on demo accounts. Trading with real money involves substantial risk of capital loss. This does not constitute investment advice.
Recommended Brokers for This EA
These EAs run on MT5 — use a regulated broker with fast execution and tight spreads
Markets.com
Exness
IC Markets
Similar Expert Advisors
View All Expert AdvisorsMore Other strategy EAs from our library
Pipsgrowth EX01007 Adaptive
Pipsgrowth.com EX01007 Adaptive XAUUSD 5M — multi-indicator signal scorer with regime filter, full 12-layer stack, configurable timeframe, trailing/BE/profit-lock toggles, pyramid gate, spread filter, new-bar gate, filling mode detection.
Pipsgrowth EX01019 Adaptive
Pipsgrowth.com EX01019 Self-Adaptive Market EA Fixed — multi-regime adaptive EA, full 12-layer stack.
Pipsgrowth EX15029 SMC-OrderBlock
Pipsgrowth.com EX15029 SMCBreakoutEA — SMC breakout CHOCH/liquidity sweep EA, full 12-layer stack.
Community
Educational purposes only. Do NOT use with real money. Test on demo accounts only.