Pipsgrowth EX12057 MultiIndicatorConfluence
MT5 Expert Advisor (Open Source) · EURUSD, GBPUSD, XAUUSD · M1
Pipsgrowth.com EX12057 Multi_Symbol_GaussDonchTrap — Gaussian+Donchian+Liquidity Trap multi-symbol, full 12-layer stack.
Overview
Pipsgrowth EX12057 is a multi-symbol portfolio EA that runs three independent signal engines — a true Gaussian-smoothed trend filter, a Donchian breakout, and a liquidity-trap detector — and only fires when at least K of a small set of confirmations agree. The header lists EURUSD, GBPUSD, and XAUUSD as the suggested pair set, and the InpSymbolsCSV input accepts up to 20 comma-separated tickers, each of which gets its own state struct (last-bar-traded, last-buy/sell timestamps, loss-streak counters, spread ring buffer, indicator handles). The default signal timeframe is M1 but is mapped from a 1..7 integer that translates to M1/M5/M15/M30/H1/H4/D1 inside OnInit. Capital caps are global: MaxOpenTradesPerSymbol defaults to 3 and MaxTotalOpenTrades defaults to 8, so the EA behaves like a small portfolio of three pairs with a soft cap of twenty-four tickets that the defaults pull down to eight.
The Gaussian engine is implemented as an actual kernel smoother, not a single EMA. BuildGaussianKernel() builds a normalized Gaussian of radius ceil(3*InpGaussianSigma) and length 2r+1 using the closed-form exp(-k²/(2σ²)) weights, and GaussianSmoothed() walks the last r+shift…shift-r closes on the signal timeframe, weights them, and returns the smoothed value. TryEntriesSymbol() reads the smoothed value at shift and shift+1 and takes the difference as a slope: slope>0 is the long regime, slope<0 the short regime. The radius caps at 50 to keep the static-weight buffer at 121 cells. Sigma defaults to 2.0; with the default radius of ceil(3σ)=6, the kernel is 13 cells wide.
The Donchian engine is a 20-period channel on the high/low series (iHighest/iLowest) measured at shift+1, so the breakout test reads close > donHi (long) or close < donLo (short) on the last closed bar. InpDonchianPeriod defaults to 20. The liquidity-trap engine is the most distinctive piece: DetectLiquidityTrapLong() finds the lowest low over the last InpTrapLookbackBars=30 bars (shift+1 onwards) and asks two questions about the current bar at shift — did its low sweep under that range low by at least InpTrapSweepPts=12 points, and did its close re-enter back above the range low by at least InpTrapReentryPts=8 points? A symmetrical DetectLiquidityTrapShort() mirrors the logic against the highest high. Both detectors also call CandleWickCheck(), which verifies the rejection wick is at least InpTrapWickRatio=0.30 of the bar's range, and BarQualityOK(), which enforces a minimum body/range of InpMinBodyToRange=0.18. The three engines are OR'd: long requires slope>0 AND (Donchian up breakout OR liquidity-trap-long), and short is the mirror.
Once a base direction is locked in, the EA runs the confirmation count. CountConfirmations() tallies up to four independent slots: RSI(14) recapture across the 50-line, Bollinger Bands(20, 2.0) re-entry (close back inside from outside the lower/upper band), volume spike ≥1.3× the 20-bar simple average of tick volume, and a higher-timeframe EMA alignment (M30 EMA-200 by default) requiring the close to sit on the right side of the EMA and the EMA slope to point the same way. InpNeedConfirmationsK defaults to 2 and is clamped to [0, ActiveConfirmationSlots()], which is 4 with MTF enabled and 3 without. If both buy and sell base signals fire on the same bar — a real possibility on a doji at the boundary — the EA picks the side with the higher confirmation count; a tie returns no trade, which is a deliberate chop filter.
Risk is sized two ways. InpUseAutoMinLot=true makes every entry use the symbol's SYMBOL_VOLUME_MIN, snapped to SYMBOL_VOLUME_STEP and floored at min and ceiling at max; toggled off, the lot is the InpFixedLot=0.10 default. The send path is the standard 3-fill-mode / 5-retry flow: DetermineAllowedFillings() builds a preference list of IOC > RETURN > FOK from SYMBOL_FILLING_MODE, and SendOrder_AllFillings() walks up to five outer tries, walking the three inner filling modes each time and increasing deviation by 3 points per attempt up to InpMaxAdaptiveDeviation=20. If the broker returns INVALID_STOPS or REQUOTE, the same wrapper retries the entry once with sl=0/tp=0 and then calls ModifyPositionSLTP() to attach the stops on the just-opened ticket.
SL/TP defaults are ATR-based: InpUseATRforSLTP=true, InpATRPeriod=14, InpATR_SL_Mult=3.0, InpATR_TP_Mult=6.0, giving a 1:2 risk-to-reward once you set both multipliers and the per-side CalcSLTP() reads ATR(14) on the signal timeframe at bar 1. Toggle the ATR off and the static fallback is InpSL_Points=250 / InpTP_Points=500. The dynamic lock-profit ratchet, ApplyDynamicLockProfitToPosition(), runs every tick: when bid (or ask) is at least InpLockProfitEveryXPoints=120 points past entry in the favourable direction, the EA floors the moved points, subtracts InpLockMinusYPointsBuffer=18 as a cushion, and tightens the stop to entry + (steps*120 − 18). It never widens — the function returns early if newSL<=curSL — and it respects SYMBOL_TRADE_FREEZE_LEVEL by refusing to push a stop inside the freeze distance of the current bid/ask.
Scaling is a 1-N pyramid, not a grid. The first ticket in a direction is tagged "Initial" in the comment, and every additional ticket in the same direction is tagged "Add#1", "Add#2", etc. with separate per-direction counters g_addCountBuy and g_addCountSell. Adds are gated by AllowOnlyProfitableAdditions=true and MinProfitPerTradeToAdd=4.0, which calls IsAllSameDirProfitableAtLeast() to verify that every existing same-direction ticket on that symbol is at least 4 points in the money before another is allowed. Cooldown adds a per-direction 20-second debounce, InpCooldownSecondsDir=20. The pause-guard pair (PauseOnConsecutiveLosses and PauseOnLossAmount) is OFF by default; when on, the OnTradeTransaction handler listens for DEAL_ENTRY_OUT deals belonging to this magic, sums the deal's profit+swap+commission, increments lossStreakCount on losses, and stacks tradePauseUntil forward using MathMax so a fresh trigger can never shorten an existing pause.
The micro filters worth flagging on a backtest: InpUseDynamicSpreadCap=true builds a 200-tick ring buffer per symbol (MAX_SPREAD_BUF=256) and accepts the trade only if the current spread is at most median + InpSpreadMADMult=3.0 × MAD — an absolute InpSpreadCapAbsPoints ceiling of 0 disables the cap and the median-only path; InpUseBarQualityFilter=true rejects bars where the body is <18% of the range, which kills the worst dojis; InpOneEntryPerBar=true prevents re-entries on the same bar from the timer. Combined, these filters are what make an M1 multi-symbol portfolio tractable — without them, the same Gaussian+Donchian+Trap core would over-fire on noisy ticks.
What to expect in practice. EX12057 is built to spread risk across two or three correlated pairs and let the math of independent signals smooth the equity curve, so a backtest on a single symbol under-represents the design intent. Default config needs an account that allows M1 trading on at least EURUSD and GBPUSD simultaneously with the broker's minimum lot (typically 0.01 on both), so the practical floor is closer to $300-500 than the $100 minDeposit metadata — the metadata reflects the EA's ability to trade a single micro lot, not the recommended multi-symbol starting balance. For a quieter profile, disable the MTF EMA slot by setting InpUseMTFEMA=false (drops the active slots from 4 to 3 and InpNeedConfirmationsK=2 then becomes a stricter 2-of-3 test) and consider widening the Donchian period to 30 or 40 on slower pairs. The Gaussian-Donchian-Trap triplet is the EA's signature; turning any one off (Sigma=0 effectively neutralizes the kernel slope test, InpDonchianPeriod pushed past the bar window disables breakout) materially changes the trade shape.
Strategy Deep Dive
EX12057 runs three independent signal engines per symbol and OR's them under a Gaussian slope filter. BuildGaussianKernel() + GaussianSmoothed() compute a kernel-smoothed close with a normalized Gaussian of radius ceil(3σ) and length 2r+1, and the slope between shift and shift+1 is the regime gate. On top of that gate, the EA fires a long when either Donchian(20) breaks above its upper channel OR DetectLiquidityTrapLong() confirms a sweep+reentry of the 30-bar swing low with a rejection wick ≥0.30 and bar body ≥0.18; the short side mirrors with Donchian lower-band break or liquidity-trap-short. The four-slot confirmation count (RSI-50 recapture, Bollinger(20,2.0) re-entry, 1.3× volume spike, optional MTF EMA-200 alignment with same-direction slope) must clear InpNeedConfirmationsK before a base direction becomes a real entry. A 200-tick median+MAD spread cap, a body/range bar-quality filter, a 20-second directional cooldown, an InpOneEntryPerBar guard, and the tradePauseUntil pause-guard pair all gate the actual send. Entries go through SendOrder_AllFillings()'s 5×3 IOC>RETURN>FOK retry grid, with INVALID_STOPS/REQUOTE triggering a SL/TP-less resend followed by ModifyPositionSLTP() to attach the stops. Per-ticket SL/TP is set from ATR(14) at 3×/6×, and the DLP ratchet runs on every tick to tighten the stop by 120-step minus 18-buffer increments without ever widening it.
Entries are evaluated on the last closed bar of the signal timeframe (M1 default). A base direction requires Gaussian-slope agreement — kernel-smoothed close at shift minus kernel-smoothed close at shift+1 > 0 for long or < 0 for short — combined with either a Donchian 20-period breakout beyond the channel, or a confirmed liquidity-trap sweep-and-reentry candle with rejection wick ≥0.30 of range and bar body ≥0.18 of range. The base signal is then promoted to a trade only when CountConfirmations() ≥ InpNeedConfirmationsK (default 2) across the active slots: RSI(14) recapture of 50, Bollinger(20, 2.0) re-entry, 1.3× volume spike, and optional H1/M30 EMA-200 alignment with same-direction slope.
Exits are bracket-driven: each entry gets an SL and TP at send time (ATR-based by default at 3.0× and 6.0× ATR(14), 1:2 risk:reward, or static 250/500 if ATR is disabled). ApplyDynamicLockProfitToPosition() runs on every tick and ratchets the stop to entry + (steps*120 − 18) points whenever bid/ask has moved 120, 240, 360 … points in the favourable direction, never widening and never crossing SYMBOL_TRADE_FREEZE_LEVEL. There is no signal-based exit — the EA holds until SL or TP is hit, and the pause-guard layer can stack tradePauseUntil forward after consecutive losses or aggregate loss amount when those toggles are on.
Stop loss defaults to 3.0× ATR(14) on the signal timeframe, snap-rounded to SYMBOL_TRADE_TICK_SIZE and set in points via CalcSLTP(); the static fallback is 250 points. The DLP ratchet (every 120 points of favorable move minus an 18-point buffer) tightens the stop monotonically but never widens it.
Take profit defaults to 6.0× ATR(14), giving a 1:2 risk-to-reward against the 3.0× ATR SL; static fallback is 500 points. TP is set in the same CalcSLTP() call as the SL and is not adjusted by the DLP ratchet — only the stop is moved.
Best deployed on a multi-symbol ECN account running M1 charts on at least two of the suggested tickers (EURUSD, GBPUSD, XAUUSD) with $300-500 starting balance to support the default 3-per-symbol, 8-total ticket budget. The M1 default with InpNeedConfirmationsK=2 and the 200-tick median+MAD spread cap makes it a London + New York overlap EA — the active session on M1 forex comes from raw tick density, not a time window, so brokers with sub-50ms quote latency on EURUSD/GBPUSD are required. XAUUSD works but should be traded as a third symbol only after verifying the broker's gold spread at the 1.3× volume-spike threshold, because the gold M1 ATR is large and a fixed 0.10 lot will be aggressive on that volatility.
Strategy Logic
Pipsgrowth EX12057 MultiIndicatorConfluence — Strategy Logic Analysis (from .mq5 source)
Family: MultiIndicatorConfluence
Magic: 22212057
Version: 2.00
BRIEF:
Multi-symbol EA combining True Gaussian trend filter, Donchian breakout, and Liquidity Trap (sweep & re-entry). Dynamic lock profit ratchet, ATR-based SL/TP, multi-confirmation gating, dynamic spread cap, and bar-quality filters. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
Trim()SplitCSV()FindSymIndex()SymPoint()SymTickSize()NormalizePriceToTick()SymBid()SymAsk()SymbolMinVolume()SymbolVolumeStep()NormalizeVol()TotalOpenPositionsAll()- ...and 42 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (46 total across 8 groups):
- [===
CORE===]MagicNumber=22212057// Magic number - [===
CORE===]InpTradeComment= "Psgrowth.com Expert_12057" // Trade comment - [===
CORE===]SymbolsCSV= "EURUSD,GBPUSD" // Symbols list (CSV) - [===
CORE===]InpSignalsTF= 1 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Signal timeframe - [===
DYNAMICLOCKPROFIT===]InpEnableDynamicLockProfit=true// Enable dynamic lock profit ratchet - [===
DYNAMICLOCKPROFIT===]InpLockProfitEveryXPoints= 120 // Lock step size (points) - [===
DYNAMICLOCKPROFIT===]InpLockMinusYPointsBuffer= 18 // Lock buffer subtract (points) - [===
INITIALvsADDITIONAL===]MaxOpenTradesPerSymbol= 3 // Max positions per symbol - [===
INITIALvsADDITIONAL===]MaxTotalOpenTrades= 8 // Global max positions - [===
INITIALvsADDITIONAL===]AllowOnlyProfitableAdditions=true// Add only if direction profitable - [===
INITIALvsADDITIONAL===]MinProfitPerTradeToAdd=4.0// Min unrealized pts per position to add - [===
PAUSEGUARDS===]PauseOnConsecutiveLosses=false// Enable pause after X losses - [===
PAUSEGUARDS===]PauseConsecutiveLossesCount= 3 // Loss streak threshold - [===
PAUSEGUARDS===]PauseConsecutiveLossesMinutes= 60 // Pause duration (minutes) - [===
PAUSEGUARDS===]PauseOnLossAmount=false// Enable pause after loss amount - [===
PAUSEGUARDS===]PauseLossAmount=100.0// Loss amount threshold (currency) - [===
PAUSEGUARDS===]PauseLossAmountMinutes= 60 // Pause duration after loss amount - [===
TRADE&RISK===]InpUseAutoMinLot=true// Use symbol min lot automatically - [===
TRADE&RISK===]InpFixedLot=0.10// Fixed lot if auto-min disabled - [===
TRADE&RISK===]InpUseATRforSLTP=true// UseATR-based SL/TP - [===
TRADE&RISK===]InpATRPeriod= 14 //ATRperiod - [===
TRADE&RISK===]InpATR_SL_Mult=3.0//ATRSL multiplier - [===
TRADE&RISK===]InpATR_TP_Mult=6.0//ATRTP multiplier - [===
TRADE&RISK===]InpSL_Points= 250 // Static SL ifATRdisabled (points) - [===
TRADE&RISK===]InpTP_Points= 500 // Static TP ifATRdisabled (points) - [===
TRADE&RISK===]InpSlippagePoints= 5 // Initial allowed slippage - [===
TRADE&RISK===]InpMaxAdaptiveDeviation= 20 // Max adaptive deviation (points) - [===
TRADE&RISK===]InpOneEntryPerBar=true// Restrict one entry per bar - [===
TRADE&RISK===]InpCooldownSecondsDir= 20 // Directional cooldown seconds - [===
SIGNALLOGIC(FEWKNOBS) ===]InpGaussianSigma=2.0// Gaussian sigma - [===
SIGNALLOGIC(FEWKNOBS) ===]InpGaussianRadius= 0 // Gaussian radius (0=auto ceil(3σ)) - [===
SIGNALLOGIC(FEWKNOBS) ===]InpDonchianPeriod= 20 // Donchian breakout period - [===
SIGNALLOGIC(FEWKNOBS) ===]InpTrapLookbackBars= 30 // Liquidity trap lookback bars - [===
SIGNALLOGIC(FEWKNOBS) ===]InpTrapSweepPts= 12 // Trap sweep buffer (points) - [===
SIGNALLOGIC(FEWKNOBS) ===]InpTrapReentryPts= 8 // Trap re-entry buffer (points) - [===
SIGNALLOGIC(FEWKNOBS) ===]InpTrapWickRatio=0.30// Min wick ratio for trap candle - [===
SIGNALLOGIC(FEWKNOBS) ===]InpNeedConfirmationsK= 2 // Required confirmations K - [===
CONFIRM/MTF(minimal) ===]InpUseMTFEMA=true// Use higher timeframeEMAalignment - [===
CONFIRM/MTF(minimal) ===]InpMTF_TF= 4 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe forEMA - [===
CONFIRM/MTF(minimal) ===]InpMTF_EMAPeriod= 200 // Higher timeframeEMAperiod - [===
AUTOFILTERS===]InpUseDynamicSpreadCap=true// Enable dynamic spread cap - [===
AUTOFILTERS===]InpSpreadLookbackTicks= 200 // Spread sampling window (ticks) - [===
AUTOFILTERS===]InpSpreadMADMult=3.0// Spread cap multiplier (median+k*MAD) - [===
AUTOFILTERS===]InpSpreadCapAbsPoints= 0 // Absolute spread cap (0=off) - [===
AUTOFILTERS===]InpUseBarQualityFilter=true// Use bar quality filter - [===
AUTOFILTERS===]InpMinBodyToRange=0.18// Min body/range ratio
// Pipsgrowth EX12057 MultiIndicatorConfluence — Execution Flow (from source analysis)
// Family: MultiIndicatorConfluence
// Multi-symbol EA combining True Gaussian trend filter, Donchian breakout, and Liquidity Trap (sweep & re-entry). Dynamic lock profit ratchet, ATR-based SL/TP, multi-confirmation gating, dynamic spread cap, and bar-quality filters. 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 |
|---|---|---|
| MagicNumber | 22212057 | Magic number |
| InpTradeComment | "Psgrowth.com Expert_12057" | Trade comment |
| SymbolsCSV | "EURUSD,GBPUSD" | Symbols list (CSV) |
| InpSignalsTF | 1 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Signal timeframe |
| InpEnableDynamicLockProfit | true | Enable dynamic lock profit ratchet |
| InpLockProfitEveryXPoints | 120 | Lock step size (points) |
| InpLockMinusYPointsBuffer | 18 | Lock buffer subtract (points) |
| MaxOpenTradesPerSymbol | 3 | Max positions per symbol |
| MaxTotalOpenTrades | 8 | Global max positions |
| AllowOnlyProfitableAdditions | true | Add only if direction profitable |
| MinProfitPerTradeToAdd | 4.0 | Min unrealized pts per position to add |
| PauseOnConsecutiveLosses | false | Enable pause after X losses |
| PauseConsecutiveLossesCount | 3 | Loss streak threshold |
| PauseConsecutiveLossesMinutes | 60 | Pause duration (minutes) |
| PauseOnLossAmount | false | Enable pause after loss amount |
| PauseLossAmount | 100.0 | Loss amount threshold (currency) |
| PauseLossAmountMinutes | 60 | Pause duration after loss amount |
| InpUseAutoMinLot | true | Use symbol min lot automatically |
| InpFixedLot | 0.10 | Fixed lot if auto-min disabled |
| InpUseATRforSLTP | true | Use ATR-based SL/TP |
| InpATRPeriod | 14 | ATR period |
| InpATR_SL_Mult | 3.0 | ATR SL multiplier |
| InpATR_TP_Mult | 6.0 | ATR TP multiplier |
| InpSL_Points | 250 | Static SL if ATR disabled (points) |
| InpTP_Points | 500 | Static TP if ATR disabled (points) |
| InpSlippagePoints | 5 | Initial allowed slippage |
| InpMaxAdaptiveDeviation | 20 | Max adaptive deviation (points) |
| InpOneEntryPerBar | true | Restrict one entry per bar |
| InpCooldownSecondsDir | 20 | Directional cooldown seconds |
| InpGaussianSigma | 2.0 | Gaussian sigma |
| InpGaussianRadius | 0 | Gaussian radius (0=auto ceil(3σ)) |
| InpDonchianPeriod | 20 | Donchian breakout period |
| InpTrapLookbackBars | 30 | Liquidity trap lookback bars |
| InpTrapSweepPts | 12 | Trap sweep buffer (points) |
| InpTrapReentryPts | 8 | Trap re-entry buffer (points) |
| InpTrapWickRatio | 0.30 | Min wick ratio for trap candle |
| InpNeedConfirmationsK | 2 | Required confirmations K |
| InpUseMTFEMA | true | Use higher timeframe EMA alignment |
| InpMTF_TF | 4 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe for EMA |
| InpMTF_EMAPeriod | 200 | Higher timeframe EMA period |
| InpUseDynamicSpreadCap | true | Enable dynamic spread cap |
| InpSpreadLookbackTicks | 200 | Spread sampling window (ticks) |
| InpSpreadMADMult | 3.0 | Spread cap multiplier (median+k*MAD) |
| InpSpreadCapAbsPoints | 0 | Absolute spread cap (0=off) |
| InpUseBarQualityFilter | true | Use bar quality filter |
| InpMinBodyToRange | 0.18 | Min body/range ratio |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX12057 Multi_Symbol_GaussDonchTrap — Gaussian+Donchian+Liquidity Trap multi-symbol, full 12-layer stack."
#include <Trade\Trade.mqh>
//==================================================================//
// INPUTS //
//==================================================================//
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_InpSignalsTF = PERIOD_H1;
ENUM_TIMEFRAMES g_InpMTF_TF = PERIOD_H1;
input group "=== CORE ==="
input long MagicNumber = 22212057; // Magic number
input string InpTradeComment = "Psgrowth.com Expert_12057"; // Trade comment
input string SymbolsCSV = "EURUSD,GBPUSD"; // Symbols list (CSV)
input int InpSignalsTF = 1; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Signal timeframe
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;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.