Pipsgrowth EX15016 SMC-OrderBlock
MT5 Expert Advisor (Open Source) · XAUUSD · M5
Pipsgrowth.com EX15016 XAUUSD Liquidity Trap EA v3.5.1 — liquidity-zone scalper with dynamic profit management, full 12-layer stack.
Overview
EX15016 is an XAUUSD scalper built around one design decision: instead of holding positions to a fixed take-profit and hoping, the EA actively ratchets the stop-loss upward as a trade moves into profit, using a dynamic profit-lock system that becomes more aggressive the further price travels in your favor. The version-numbered file ships as v3.5.1, but the source contains three different version strings — #property version 2.00, the description line that says v3.5.1, the OnInit print that says v3.5.1, and the dashboard title that says v3.0 — so treat the build as v3.5.1 (the most recent of the labels) and ignore the dashboard string.
The trading idea starts with swing liquidity zones. On every new bar the EA scans the last Max(20, SwingBarCount*2+5) bars for 3-bar fractals — FindSwingHigh walks the high array and returns the first index where high[i] > high[i-1] AND high[i] > high[i+1] for SwingBarCount=1 bar on each side; FindSwingLow does the mirror. Every fresh swing high becomes an upper liquidity zone, every fresh swing low becomes a lower zone, each one drawn on the chart as a clrCrimson or clrDodgerBlue OBJ_HLINE with STYLE_DASH and a tooltip. The AddLiquidityZone helper de-duplicates new candidates against existing zones at a 0.3% price tolerance, so the chart accumulates a sparse map of recent swing pivots rather than a wall of overlapping lines. Zones auto-deactivate after MaxZoneAge=24 hours, and CleanupInactiveZones runs every four hours to compact the arrays.
Once a zone is on the chart, the entry check is a 5-condition AND gate. For buys, the EA looks at every active lower zone and asks whether the current Ask is inside that zone's 1% band — zoneLower <= currentPrice <= zoneLower * 1.01. If price is in the band, five conditions are evaluated: (1) CheckPriceSurge returns true when the MathMax of the open-to-current percentage over the last 10 bars AND the 5-bar high-low range percentage exceeds PriceSurgePercent*100 = 0.1%; (2) IsVolumeSurge returns true when current tick volume is at least VolumeSurgeMultiplier=1.5x the 20-bar average — but the function short-circuits to true because RequireVolumeSurge=false by default, so volume is currently a dormant gate; (3) IsZoneConfirmedByHigherTimeframe calls DetermineTrend(ConfirmationTimeframe) to read the MA(20) vs MA(50) cross on H4 by default — but this also short-circuits to true because UseHigherTimeframeConfirmation=false, so the higher-timeframe filter is dormant; (4) the price-surge condition is the only always-on filter beyond zone containment; (5) IsBullishEngulfingPattern walks back EngulfingLookback=3 bars looking for a current bullish candle whose body completely engulfs a prior bearish body's range — currentOpen <= previousClose AND currentClose >= previousOpen — and is on by default. The mirror sell path checks upper zones with the inverted band [zoneUpper*0.99, zoneUpper] and a bearish engulfing. In practice the EA is running as a price-surge + engulfing + zone-proximity strategy with two dormant confirmation toggles available if you want to tighten it.
The stop-loss and take-profit geometry is fixed by the zone, not by the indicator state. For a buy, the SL is zoneLower * 0.995 — half a percent below the lower band — and the TP is computed as a clean 1:2 reward-to-risk: takeProfit = currentPrice + (currentPrice - stopLoss) * RewardToRiskRatio. With RewardToRiskRatio=2.0 default, a 1% zone SL gives a 2% target. Sells mirror the geometry on the upper zone. Lot sizing is the simplest part of the system: CalculatePositionSize ignores the stop-loss-points argument entirely and returns FixedLotSize=0.01 after NormalizeLotSize clamps it to the broker's min/max and lot-step. This is a fixed-lot EA — not a risk-percent one — so position sizing scales only by changing the input, not by equity.
The dynamic profit-lock system is the reason this EA exists as a separate file from the rest of the EX15 family. On every tick ManageOpenPositions walks every open position with this EA's magic and calls ApplyDynamicProfitLock(ticket). The function first reads the entry price, current SL/TP, and current Bid (for buys) or Ask (for sells), then calculates profitPoints = (currentPrice - entryPrice) / point. It then derives currentLockLevel = floor(profitPoints / LockProfitEvery_X_Points), which is floor(profitPoints / 30) with the default. Whenever the detected level exceeds the stored lockLevelCount[posIndex], the EA computes a new stop-loss that locks in profit: newSL = entryPrice + (currentLockLevel * 30 - buffer) * point for buys (mirror for sells). The buffer is LockMinusBuffer=15 points by default, but if EnableProgressiveBuffer=true, CalculateProgressiveBuffer multiplies the buffer by ProgressiveBufferRatio=0.8 once per lock level — so level 1 sees a 15-point buffer, level 2 sees 12, level 3 sees ~9.6, level 4 sees ~7.7, and so on, with a hard floor of 1 point. The ratchet is one-directional: a buy only updates SL when newSL > currentSL (or current SL is 0); a sell only updates when newSL < currentSL. If the new SL is too close to the current price relative to the broker's SYMBOL_TRADE_STOPS_LEVEL, the modify is skipped. The actual PositionModify call goes through a fresh local CTrade tradeMod with SetDeviationInPoints(10) — it does not go through the main Trade object and does not use the TryModify_EX15016 retry helper. Every successful lock event increments totalLockEvents and adds the locked points to totalProfitLocked; both numbers are reported in the OnDeinit print.
The partial-close path is a separate, opt-in layer wired into the same lock-step. When EnablePartialClose=true and the position has not yet had a partial close, the EA computes partialCloseDone[posIndex] = true and tries to close PartialClosePercent=50% of the position via a fresh CTrade tradePartial with the same magic and 10-point deviation. With the default config the partial close is disabled and never fires; turning it on lets the EA book half the position at the first lock level and then continue managing the remainder with the ratchet. The standard trailing stop is a third, parallel management path: when EnableTrailingStop=true the ApplyTrailingStop function fires from ManageOpenPositions and uses the TryModify_EX15016 retry helper (3 attempts, progressive 100ms/200ms/300ms backoff on REQUOTE/TIMEOUT/PRICE_CHANGED) to move the SL to entryPrice + profitPoints * TrailingStopPercent/100 — by default 50% of the unlocked profit. This is a separate code path from the dynamic lock: if you enable the trailing stop and the dynamic lock at the same time, both will try to push the SL, and whichever fires last with a higher SL wins.
Risk controls are short. A per-tick spread filter rejects any tick where SymbolInfo.Spread() * point > MaxSpreadPoints * point (3 pips default). On every close, UpdateTradeStatistics increments consecutiveLosses on a loss and resets it to zero on a win; once consecutiveLosses >= MaxConsecutiveLosses=3, pauseUntilTime = TimeCurrent() + PauseMinutes * 60 blocks all new entries for an hour. MaxPositions=5 caps concurrent exposure. EnableTimeFilter=false by default — set to true to gate entries between TradingHoursStart='08:00' and TradingHoursEnd='20:00' broker time. The two inputs AvoidHighImpactNews=true and the news-buffer minutes are decorative: there is no IsHighImpactNewsTime function in the source, no news feed integration, and the filter is functionally dormant.
Code-quality notes worth knowing about: the MapTimeframeInt helper is declared six separate times in the source (lines 35, 58, 82, 106, 133, 163), each with the same switch on tf 1-7 — the duplicate declarations compile because of how MQL5 handles identical signatures, but they are dead-weight clutter. The header advertises a 12-layer architecture (REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester) but the source actually only implements roughly seven of those layers — there is no formal regime classifier, no capital-cap engine, and no OnTester fitness function. The UpdateLiquidityZones call is gated to new bars; the position-management call runs every tick. The dashboard is a 7-line label panel (title / status / lot+RR / zone counts / trade stats / profit factor / current signal) with a separate UpdateProfitLockDashboard section that shows locked levels per ticket — ShowProfitDashboard=true by default.
For backtests expect: 1-4 trades per session depending on how often price tags the recent swing zones, a 1:2 reward-to-risk on the static TP leg, and a ratcheting SL on the dynamic leg that turns roughly half of all trades into breakeven-or-better exits. The fixed 0.01 lot keeps the dollar risk identical regardless of stop distance — if you want the EA to scale position size to account, multiply FixedLotSize manually when changing symbols. This EA is for traders who specifically want a level-ratcheting profit-lock on a swing-zone reversal framework and are willing to accept the two dormant confirmation gates as configured.
Strategy Deep Dive
Every new bar the EA scans price with FindSwingHigh / FindSwingLow (3-bar fractals, SwingBarCount=1) and registers each fresh swing pivot as a liquidity zone drawn on the chart as a clrCrimson / clrDodgerBlue OBJ_HLINE with STYLE_DASH. AddLiquidityZone de-duplicates at a 0.3% tolerance; zones auto-deactivate after MaxZoneAge=24h and CleanupInactiveZones compacts the arrays every 4h. CheckBuySignals walks active lower zones and asks if Ask sits in the 1% band [zoneLower, zoneLower*1.01] — when it does, the EA evaluates a price surge (MathMax of 10-bar open-to-current move and 5-bar high-low range, threshold 0.1%) plus a bullish engulfing within 3 bars; sells mirror on upper zones with the inverted band and bearish engulfing. SL sits 0.5% past the zone, TP runs 1:2 RR, and CalculatePositionSize returns the fixed 0.01 lot regardless of stop distance. ApplyDynamicProfitLock fires on every tick, derives currentLockLevel = floor(profitPoints / 30), and whenever the detected level exceeds the stored count it ratchets SL with a progressive buffer (15 points at level 1, then multiplied by 0.8 per level down to a 1-point floor). The modify goes through a local CTrade tradeMod with 10-point deviation; the function only moves the SL in the trade-favorable direction. ManageOpenPositions also calls ApplyTrailingStop when EnableTrailingStop=true (uses TryModify_EX15016 retry helper) and increments consecutiveLosses on every losing close — three in a row triggers a 60-minute pause via pauseUntilTime.
Triggers a long when price enters a 1% band above a lower liquidity zone (3-bar fractal swing low) AND a price surge exceeds 0.1% (MathMax of 10-bar open-to-current move and 5-bar high-low range) AND a bullish engulfing pattern appears within the last 3 bars. Sells mirror on upper zones. Two confirmation gates (volume surge, higher-timeframe MA-trend) are dormant by default.
Static 1:2 RR take-profit is the primary exit. The ApplyDynamicProfitLock function also ratchets the stop-loss in 30-point steps (3 pips) on every tick as profit grows, using a progressive buffer that shrinks 20% per lock level from 15 points to a 1-point floor. An optional 50% partial close fires at the first lock level when EnablePartialClose=true.
Static initial SL sits 0.5% past the active liquidity zone (zoneLower0.995 for buys, zoneUpper1.005 for sells). Once price moves 30+ points in profit, the EA ratchets the SL toward entry in 30-point steps with a 15-point buffer that shrinks per level. There is no portfolio-level drawdown cap; the only global safety is the 60-minute pause after 3 consecutive losses.
Fixed 1:2 reward-to-risk target computed from the entry price minus the zone-anchored SL: takeProfit = currentPrice + (currentPrice - stopLoss) * RewardToRiskRatio. With the default 0.5% zone SL and RewardToRiskRatio=2.0, this produces a 2% static target. The TP is placed at the broker; the dynamic lock can also close trades earlier by ratcheting the SL to a level that gets tagged.
Minimum recommended balance: $100 at the default 0.01 fixed lot. Pair: XAUUSD on the trading timeframe set by the Timeframe input (default integer 4 maps to M30; database tags M5 — confirm the input matches the chart before going live). Broker: ECN / RAW-spread with sub-3-pip spreads — the 30-point spread filter plus the 0.5%-past-zone SL gives tight entries that get eaten by wide spreads. Session: London and New York overlap, when XAUUSD regularly sweeps the prior session's swing pivots and the engulfing pattern has volume. Best for traders who want a level-ratcheting profit-lock on a swing-zone reversal and are willing to manage the dormant volume/HTF toggles manually.
Strategy Logic
Pipsgrowth EX15016 SMC-OrderBlock — Strategy Logic Analysis (from .mq5 source)
Family: SMC-OrderBlock
Magic: 22215016
Version: 2.00
BRIEF:
Liquidity-trap scalper with enhanced dynamic profit management — detects swing liquidity zones, price surges and volume spikes, enters on engulfing confirmation with dynamic profit-locking, progressive buffers and partial close. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
LogMessage()LogDynamicProfitMessage()GetPositionIndex()RemovePositionFromProfitLock()ApplyDynamicProfitLock()ApplyTrailingStop()InitializeProfitLockArrays()ErrorDescription()ExecutePartialClose()CalculateProgressiveBuffer()UpdateProfitLockDashboard()CalculateProfitLockMetrics()- ...and 32 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (39 total across 6 groups):
- [=== General Settings ===]
MagicNumber=22215016// Magic Number - [=== General Settings ===]
InpTradeComment= "Psgrowth.com Expert_15016" // TradeComment - [=== General Settings ===]
EnableDebug=true// Enable Debug Messages - [=== General Settings ===] Timeframe = 4 //
Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Trading Timeframe - [=== Liquidity Trap Settings ===]
SwingBarCount= 1 // Number of bars for swing detection (smaller value = more swings) - [=== Liquidity Trap Settings ===]
MaxZoneAge= 24 // Maximum zone age in hours - [=== Liquidity Trap Settings ===]
PriceSurgePercent=0.001// Percent of price movement to consider as surge (0.001-0.2recommended) - [=== Liquidity Trap Settings ===]
RequireVolumeSurge=false// Require volume surge with price movement - [=== Liquidity Trap Settings ===]
VolumeSurgeMultiplier=1.5// Volume threshold as multiplier of average - [=== Entry Confirmation ===]
UseHigherTimeframeConfirmation=false// Use higherg_Timeframefor trend confirmation - [=== Entry Confirmation ===]
ConfirmationTimeframe= 6 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe for confirmation - [=== Entry Confirmation ===]
RequireVolumeConfirmation=false// Require volume confirmation for entry - [=== Entry Confirmation ===]
UseEngulfingPattern=true// Use engulfing pattern as confirmation - [=== Entry Confirmation ===]
EngulfingLookback= 3 // Number of bars to look back for engulfing pattern - [=== Risk Management ===]
FixedLotSize=0.01// Fixed lot size for all trades - [=== Risk Management ===]
RewardToRiskRatio=2.0// Reward to risk ratio - [=== Risk Management ===]
EnableTrailingStop=false// Enable trailing stop - [=== Risk Management ===]
TrailingStopPercent=50.0// Trailing stop as percentage of profit - [=== Risk Management ===]
MaxSpreadPoints= 30 // Maximum spread in points - [=== Risk Management ===]
MaxConsecutiveLosses= 3 // Max consecutive losses before pausing - [=== Risk Management ===]
PauseMinutes= 60 // Minutes to pause after max losses - [=== Risk Management ===]
MaxPositions= 5 // Maximum open positions - [=== Dynamic Profit Management ===]
EnableDynamicLockProfit=true// Lock profit dynamically - [=== Dynamic Profit Management ===]
LockProfitEvery_X_Points=30.0// Lock profit every X points - [=== Dynamic Profit Management ===]
LockMinusBuffer=15.0// Buffer below lockedlevel(points) - [=== Dynamic Profit Management ===]
EnableProgressiveBuffer=true// Decrease buffer as profit increases - [=== Dynamic Profit Management ===]
ProgressiveBufferRatio=0.8// Buffer reduction ratio perlevel(0.5-0.9) - [=== Dynamic Profit Management ===]
EnablePartialClose=false// Enable partial position closing - [=== Dynamic Profit Management ===]
PartialClosePercent=50.0// Percentage to close at first profitlevel(%) - [=== Dynamic Profit Management ===]
PartialCloseLevels= 1 // Number of levels at which to close partially - [=== Dynamic Profit Management ===]
EnableDynamicProfitManagementDebug=false// Debug for dynamic profit management - [=== Dynamic Profit Management ===]
ForceDynamicProfitDebug=true// Force debug output for profit locks (regardless of debug setting) - [=== Dynamic Profit Management ===]
ShowProfitDashboard=true// Show profit lock details on dashboard - [=== Trade Filters ===]
EnableTimeFilter=false// Enable trading hours filter - [=== Trade Filters ===]
TradingHoursStart= "08:00" // Trading hours start (broker time) - [=== Trade Filters ===]
TradingHoursEnd= "20:00" // Trading hours end (broker time) - [=== Trade Filters ===]
AvoidHighImpactNews=true// Avoid trading during high impact news - [=== Trade Filters ===]
NewsBufferMinutesBefore= 30 // Minutes to avoid trading before news - [=== Trade Filters ===]
NewsBufferMinutesAfter= 30 // Minutes to avoid trading after news
// Pipsgrowth EX15016 SMC-OrderBlock — Execution Flow (from source analysis)
// Family: SMC-OrderBlock
// Liquidity-trap scalper with enhanced dynamic profit management — detects swing liquidity zones, price surges and volume spikes, enters on engulfing confirmation with dynamic profit-locking, progressive buffers and partial close. 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 | 22215016 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_15016" | Trade Comment |
| EnableDebug | true | Enable Debug Messages |
| Timeframe | 4 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Trading Timeframe |
| SwingBarCount | 1 | Number of bars for swing detection (smaller value = more swings) |
| MaxZoneAge | 24 | Maximum zone age in hours |
| PriceSurgePercent | 0.001 | Percent of price movement to consider as surge (0.001-0.2 recommended) |
| RequireVolumeSurge | false | Require volume surge with price movement |
| VolumeSurgeMultiplier | 1.5 | Volume threshold as multiplier of average |
| UseHigherTimeframeConfirmation | false | Use higher g_Timeframe for trend confirmation |
| ConfirmationTimeframe | 6 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe for confirmation |
| RequireVolumeConfirmation | false | Require volume confirmation for entry |
| UseEngulfingPattern | true | Use engulfing pattern as confirmation |
| EngulfingLookback | 3 | Number of bars to look back for engulfing pattern |
| FixedLotSize | 0.01 | Fixed lot size for all trades |
| RewardToRiskRatio | 2.0 | Reward to risk ratio |
| EnableTrailingStop | false | Enable trailing stop |
| TrailingStopPercent | 50.0 | Trailing stop as percentage of profit |
| MaxSpreadPoints | 30 | Maximum spread in points |
| MaxConsecutiveLosses | 3 | Max consecutive losses before pausing |
| PauseMinutes | 60 | Minutes to pause after max losses |
| MaxPositions | 5 | Maximum open positions |
| EnableDynamicLockProfit | true | Lock profit dynamically |
| LockProfitEvery_X_Points | 30.0 | Lock profit every X points |
| LockMinusBuffer | 15.0 | Buffer below locked level (points) |
| EnableProgressiveBuffer | true | Decrease buffer as profit increases |
| ProgressiveBufferRatio | 0.8 | Buffer reduction ratio per level (0.5-0.9) |
| EnablePartialClose | false | Enable partial position closing |
| PartialClosePercent | 50.0 | Percentage to close at first profit level (%) |
| PartialCloseLevels | 1 | Number of levels at which to close partially |
| EnableDynamicProfitManagementDebug | false | Debug for dynamic profit management |
| ForceDynamicProfitDebug | true | Force debug output for profit locks (regardless of debug setting) |
| ShowProfitDashboard | true | Show profit lock details on dashboard |
| EnableTimeFilter | false | Enable trading hours filter |
| TradingHoursStart | "08:00" | Trading hours start (broker time) |
| TradingHoursEnd | "20:00" | Trading hours end (broker time) |
| AvoidHighImpactNews | true | Avoid trading during high impact news |
| NewsBufferMinutesBefore | 30 | Minutes to avoid trading before news |
| NewsBufferMinutesAfter | 30 | Minutes to avoid trading after news |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX15016 XAUUSD Liquidity Trap EA v3.5.1 — liquidity-zone scalper with dynamic profit management, full 12-layer stack."
#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
// Input parameters: General Settings
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_TIMEFRAMES g_Timeframe = PERIOD_H1;
ENUM_TIMEFRAMES g_ConfirmationTimeframe = PERIOD_H1;
input group "=== General Settings ==="
input int MagicNumber = 22215016; // Magic Number
input string InpTradeComment = "Psgrowth.com Expert_15016"; // Trade Comment
input bool EnableDebug = true; // Enable Debug Messages
input int Timeframe = 4; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Trading Timeframe
// Input parameters: Liquidity Trap Settings
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_TIMEFRAMES g_Timeframe = PERIOD_H1;
ENUM_TIMEFRAMES g_ConfirmationTimeframe = PERIOD_H1;
input group "=== Liquidity Trap Settings ==="
input int SwingBarCount = 1; // Number of bars for swing detection (smaller value = more swings)
input int MaxZoneAge = 24; // Maximum zone age in hours
input double PriceSurgePercent = 0.001; // Percent of price movement to consider as surge (0.001-0.2 recommended)
input bool RequireVolumeSurge = false; // Require volume surge with price movement
input double VolumeSurgeMultiplier = 1.5; // Volume threshold as multiplier of average
// Input parameters: Entry Confirmation
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(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.