Pipsgrowth EX15017 SMC-OrderBlock
MT5 Expert Advisor (Open Source) · XAUUSD · M5, H1
Pipsgrowth.com EX15017 LiquidityTrap — swing-zone scalper with DLP ratchet and pause guards, full 12-layer stack.
Overview
Pipsgrowth EX15017 is a liquidity-trap scalper that hunts for stop-runs beneath swing lows and above swing highs on XAUUSD. Where most SMC-flavored EAs wrap their entries in five or six stacked confirmations, this one trims everything to a single mandatory check (price surge) and three optional ones (volume surge, higher-timeframe trend, engulfing pattern) — all three of which ship turned OFF by default. The result is a deliberately conservative bar to clear: only setups with a real displacement through a freshly-printed swing high or low qualify, and the trader decides whether to layer additional filtering on top.
The zone detection routine runs once per new bar. It pulls the last MathMax(20, SwingBarCount*2+5) bars — at the default SwingBarCount=1 that is 20 bars — and asks FindSwingHigh() / FindSwingLow() to find the first bar whose high (or low) strictly exceeds both neighbors within the bar count. Each confirmed swing is registered as a LiquidityZone struct stored in a global array, drawn on the chart as a dashed horizontal line (crimson for upper, dodger blue for lower) when DrawZonesOnChart=true, and tagged with a 24-hour expiry through MaxZoneAgeHours=24. New zones within 0.3% of an existing zone of the same side are silently dropped, which keeps the chart from stacking redundant levels when a swing retests the same price.
Entry checks fire from EvaluateSignalsAndTrade() after the zone list has been refreshed. For every active lower zone, the EA asks whether the current Ask price sits inside the 1% band above the zone level — that is, ask >= z AND ask <= z * 1.01. For upper zones the band is mirrored: bid <= z AND bid >= z * 0.99. The 1% band is intentionally generous because liquidity sweeps frequently spike through the level before reversing; a tight band would filter most legitimate traps out. When price is in band, four confirmations run in sequence: CheckPriceSurge() measures the move of the current price away from the midpoint of the most recent three-bar range, divided by the range itself, and demands it be at least PriceSurgeFraction=0.001 (0.1%). IsVolumeSurge() compares current tick volume to a 5-bar average and demands VolumeSurgeMultiplier=1.1 (1.1× average) — but only when RequireVolumeSurge=true, which is OFF by default. HTFTrendConfirms() reads the MA(20) vs MA(50) relationship on the higher timeframe (H4 by default) and aligns direction with the zone — also OFF by default via UseHigherTFConfirmation=false. IsBullishEngulfing() / IsBearishEngulfing() scan up to EngulfingLookback=3 candles for an engulfing body, OFF by default via UseEngulfingPattern=false. With the stock configuration, only the price-surge gate actually filters — the other three return true immediately, so a trade triggers whenever Ask is in the 1% band and the price has displaced at least 0.1% of its 3-bar range from the midpoint.
Stop loss is placed at zone * 0.995 for buys (0.5% below the lower zone) and zone * 1.005 for sells (0.5% above the upper zone). Take profit is computed from the live Ask/Bid minus the stop distance, scaled by the ratio DefaultTPPoints / DefaultSLPoints = 600 / 300 = 2.0, so TP is exactly 2:1 against the zone-anchored stop. ValidateStops() then pushes the SL/TP outward if the broker's SYMBOL_TRADE_STOPS_LEVEL minimum would otherwise be violated, which prevents rejects on tight-spread gold setups. After a fill, the zone is deactivated (g_zones[i].active = false) so the same level can only fire one trade per detection cycle.
Position sizing follows a two-mode RiskMode enum. In RISK_FIXED_LOT (default), every order is FixedLot=0.10. In RISK_PERCENT, CalcLotsByRisk() computes the lot size that risks exactly RiskPerTradePercent=1.0% of the account balance at the configured SL distance, using g_tickValue and the broker-declared tick size to convert the stop distance into account currency. The result is clamped to the symbol's SYMBOL_VOLUME_MIN / MAX / STEP via NormalizeLots(). The fixed-lot default is unusually large for a $100 minimum-deposit account; traders should plan to drop FixedLot to 0.01 or switch to RISK_PERCENT before any live deployment.
The management layer is where EX15017 differs most from its EX15 cousins. The DLP (Dynamic Lock Profit) system is the headline feature and is enabled by default. ApplyDynamicLockProfitToPosition() runs on every tick for every open position. It computes the favorable move in points (Bid - entry for buys, entry - Ask for sells), floors that to a step count via (int)MathFloor(movedPts / InpLockProfitEveryXPoints), and only acts when the count is ≥ 1. The new stop is then entry + steps * 150 - 20 points for buys, with InpLockProfitEveryXPoints=150 and InpLockMinusYPointsBuffer=20 being the defaults. The buffer means the lock fires 20 points shy of the level, not at the level itself — useful for keeping the order from getting stopped by spread noise on gold. The ratchet is strictly one-directional: for buys, the new SL is applied only if it is greater than the current SL, and for sells only if it is less. The level is also pushed back to respect SYMBOL_TRADE_STOPS_LEVEL, and ModifySL() has its own 2-attempt retry with linear backoff.
The second distinctive design choice is the initial-vs-additional trade tagging. TryEnter() checks CountOpenPositions(dir) to decide whether the new order is the first in its direction (tagged Initial BUY / Initial SELL in the comment) or an addition (tagged Add#1, Add#2, etc., with separate counters per direction tracked in g_nextAddIndexBuy and g_nextAddIndexSell). When AllowOnlyProfitableAdditions=true (the default), additions are blocked unless every existing same-direction trade is sitting on at least MinProfitPerTradeToAdd=5.0 points of profit. This means the EA will not pyramid into a losing position — it requires the existing trade to be working before it adds to it. MaxOpenTrades=5 caps the total per magic across both directions.
The third distinguishing feature is a pair of pause guards wired through OnTradeTransaction(). PauseOnConsecutiveLosses (OFF by default) tracks every closed-out loss for this magic in g_lossStreakCount, and when the count reaches PauseConsecutiveLossesCount=3, the EA sets g_tradePauseUntil to now + 60 minutes and refuses all entries until the timer expires. PauseOnLossAmount (OFF by default) accumulates the loss in dollars in g_lossStreakAmt and triggers the same 60-minute pause when the running total reaches PauseLossAmount=100. Either trigger resets on the next profitable (or breakeven) close. These two pause modes are unique to EX15017 in the EX15 family — none of the swing cousins (EX15011/12/13/15/16) implement the loss-amount path at all.
A few code-level notes worth knowing. The file has a code-quality issue: MapTimeframeInt() is declared 5 separate times in the source, all with the same switch on tf 1–7, which the MQL5 compiler accepts as long as no conflicts arise. Three retry helpers — TryClose_EX15017, TryClosePartial_EX15017, TryModify_EX15017 — are defined at the bottom of the file but are not called from the live OnTick / ModifySL / SendOrder path; the actual close and modify operations use the inline retry loops inside ModifySL() and SendOrder() instead. The header advertises Version: 2.00 but the OnInit log string reads LiquidityTrap_DLP_Additions_Pause_v3.1 — a version-label mismatch inherited from upstream. The native iMA handles (g_ma20Main, g_ma50Main, g_ma20HTF, g_ma50HTF) are the only indicator allocations; g_ma20HTF and g_ma50HTF are only created when UseHigherTFConfirmation=true is set.
A realistic backtest expectation: with all four confirmation gates off, the EA fires on any 1% zone retest with at least 0.1% displacement. On XAUUSD M30 that means a handful of trades per London session and another handful through New York. Hit rate will be modest because there is no pattern filter, but the 2:1 RR and the DLP ratchet should keep the equity curve positive on trending weeks. The pause guards, once enabled, will be the single most effective safety switch: 3 losses in a row or $100 of cumulative loss both stop the EA cold for an hour, which is enough time for a wild session to settle without permanently disabling the strategy.
Strategy Deep Dive
On every new bar of the configured timeframe (M30 by default, mapping to InpTimeframe=4), UpdateLiquidityZones() pulls the last 20 highs and lows, runs them through FindSwingHigh() and FindSwingLow() to locate 3-bar fractals, and registers each new swing as a LiquidityZone struct in a global array — drawn on chart as dashed horizontal lines and tagged with a 24-hour expiry. EvaluateSignalsAndTrade() then walks the active zone list and asks whether the current Ask (or Bid for sells) sits inside a 1% band above lower zones or a 1% band below upper zones. When in band, CheckPriceSurge() measures the current price's displacement from the midpoint of the last 3-bar range and demands at least 0.1% — the only default-on filter. The other three confirmation gates (volume surge, H4 MA-trend alignment, engulfing candle patterns) are off by default and pass through as TRUE. The Dynamic Lock Profit system runs on every tick, not just per-bar: ApplyDynamicLockProfitToPosition() floors the favorable move to a step count of 150 points and tightens the stop by one step per reached level with a 20-point buffer below the threshold, never loosening it. Initial vs additional entries are tagged in the trade comment, and AllowOnlyProfitableAdditions blocks new pyramid entries unless every existing same-direction trade is sitting on at least 5 points of profit. The pause guards hook into OnTradeTransaction: 3 consecutive losses or $100 of cumulative loss both set a 60-minute entry lockdown that resets on the next profitable close.
Buy entries trigger when the Ask price is inside the 1% band above an active lower swing liquidity zone AND the price has displaced at least 0.1% (PriceSurgeFraction) of the recent 3-bar range from its midpoint. Sell entries mirror this on the upper zone. By default, the three other confirmation gates (volume surge, higher-timeframe trend, engulfing pattern) are all disabled and pass through as TRUE, so the price-surge check is the sole active filter at stock settings.
Exits come from three paths: take-profit hits at the 2:1 RR target derived from DefaultTPPoints/DefaultSLPoints (600/300), stop-loss hits at the zone-anchored 0.5% level beyond the liquidity zone, or the Dynamic Lock Profit ratchet tightening the stop every 150 points of favorable move. Each filled zone is deactivated so the same level cannot re-trigger — the EA does not hold a position against its own swing zone.
Stop loss is zone-anchored at 0.5% beyond the liquidity zone — for buys at zone * 0.995, for sells at zone * 1.005. DefaultSLPoints=300 points is used as a fallback when the zone-derived stop is unavailable, and ValidateStops() pushes the level further out if the broker's SYMBOL_TRADE_STOPS_LEVEL would otherwise be violated. The DLP ratchet then tightens this stop every 150 points of profit, never loosens it, and respects freeze-level on every modify.
Take profit is computed from the live Ask/Bid minus the zone-anchored stop distance, scaled by the ratio DefaultTPPoints/DefaultSLPoints (defaults 600/300 = 2.0), giving a clean 2:1 reward-to-risk. ValidateStops() ensures the level clears the broker's minimum stop distance, and the DLP ratchet can lock profit along the way before the target is hit.
Recommended for traders running XAUUSD on the M30 timeframe with $100+ account minimum, ECN/Raw-spread broker with slippage tolerance of 5 points or less, and a willingness to selectively turn on the optional confirmations (volume surge, H4 MA trend, or bullish/bearish engulfing) one at a time. Best deployed during the 08:00-20:00 broker-time window where most liquidity sweeps occur, with the PauseOnConsecutiveLosses and PauseOnLossAmount guards both flipped on as the only meaningful safety switches — without them, the EA has no drawdown cap and will keep trading through losing streaks.
Strategy Logic
Pipsgrowth EX15017 SMC-OrderBlock — Strategy Logic Analysis (from .mq5 source)
Family: SMC-OrderBlock
Magic: 22215017
Version: 2.00
BRIEF:
Liquidity-trap scalper using swing-derived liquidity zones with surge & pattern confirmations, dynamic lock-profit ratchet, initial vs additional trade tagging, and pause-guard protection. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
Log()NormalizePrice()Clamp()NormalizeLots()IsWithinTradingHours()MedianIndex()GetSpreadCapPoints()RefreshSymbolData()DiscoverFillingModes()CountOpenPositions()OwnsPosition()IsAllSameDirProfitableAtLeast()- ...and 24 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (38 total across 11 groups):
- [===
BASICSETTINGS===]MagicNumber=22215017// 2220 + Expert ID - [===
BASICSETTINGS===]InpTradeComment= "Psgrowth.com Expert_15017" // TradeComment - [===
BASICSETTINGS===]InpTimeframe= 4 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Chart timeframe for analysis - [===
LIQUIDITYZONEDETECTION===]SwingBarCount= 1 // Bars each side to confirm swing - [===
LIQUIDITYZONEDETECTION===]MaxZoneAgeHours= 24 // Max zone age before deactivation (hours) - [===
LIQUIDITYZONEDETECTION===]PriceSurgeFraction=0.001// Min price surge (0.001=0.1% - more reasonable) - [===
ENTRYCONFIRMATIONS===]RequireVolumeSurge=false// Require volume surge confirmation - [===
ENTRYCONFIRMATIONS===]VolumeSurgeMultiplier=1.1// Volume multiplier vs average (1.1= 10% above avg) - [===
ENTRYCONFIRMATIONS===]VolumeLookbackBars= 5 // Bars to calculate volume average (shorter = more responsive) - [===
ENTRYCONFIRMATIONS===]UseEngulfingPattern=false// Use engulfing candle patterns (often too restrictive) - [===
ENTRYCONFIRMATIONS===]EngulfingLookback= 3 // Bars to scan for engulfing patterns - [===
ENTRYCONFIRMATIONS===]UseHigherTFConfirmation=false// Use higher timeframe trend filter - [===
ENTRYCONFIRMATIONS===]ConfirmationTF= 6 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe for confirmation - [===
POSITIONSIZING===]RiskMode=RISK_FIXED_LOT// Position sizing method - [===
POSITIONSIZING===]FixedLot=0.10// Fixed lot size (ifRISK_FIXED_LOT) - [===
POSITIONSIZING===]RiskPerTradePercent=1.0// Risk per trade % of balance - [===
STOPLOSS&TAKEPROFIT===]DefaultSLPoints= 300 // Default SL distance (points) - [===
STOPLOSS&TAKEPROFIT===]DefaultTPPoints= 600 // Default TP distance (points) - [===
STOPLOSS&TAKEPROFIT===]SlippagePoints= 5 // Max slippage tolerance (points) - [===
TIME&SESSIONFILTER===]EnableTimeFilter=true// Enable trading time restrictions - [===
TIME&SESSIONFILTER===]TradingHoursStart= "08:00" // Trading start time (broker time) - [===
TIME&SESSIONFILTER===]TradingHoursEnd= "20:00" // Trading end time (broker time) - [===
SPREADCONTROL===]UseDynamicSpreadCap=true// Use dynamic spread cap (3x median) - [===
SPREADCONTROL===]SpreadMedianWindow= 50 // Bars for spread median calculation - [===
SPREADCONTROL===]ManualMaxSpreadPoints= 60 // Manual max spread (if dynamic disabled) - [===
DYNAMICLOCKPROFIT===]InpEnableDynamicLockProfit=true// Enable trailing stop-loss ratchet - [===
DYNAMICLOCKPROFIT===]InpLockProfitEveryXPoints= 150 // Lock profit every X points - [===
DYNAMICLOCKPROFIT===]InpLockMinusYPointsBuffer= 20 // Buffer below profit locklevel - [===
MULTIPLEPOSITIONS===]MaxOpenTrades= 5 // Maximum concurrent positions - [===
MULTIPLEPOSITIONS===]AllowOnlyProfitableAdditions=true// Only add if existing trades profitable - [===
MULTIPLEPOSITIONS===]MinProfitPerTradeToAdd=5.0// Min profit per trade to allow additions - [===
PAUSEPROTECTION===]PauseOnConsecutiveLosses=false// Pause after consecutive losses - [===
PAUSEPROTECTION===]PauseConsecutiveLossesCount= 3 // Number of losses to trigger pause - [===
PAUSEPROTECTION===]PauseConsecutiveLossesMinutes= 60 // Pause duration (minutes) - [===
PAUSEPROTECTION===]PauseOnLossAmount=false// Pause after loss amount threshold - [===
PAUSEPROTECTION===]PauseLossAmount=100.0// Loss amount to trigger pause - [===
PAUSEPROTECTION===]PauseLossAmountMinutes= 60 // Pause duration for loss amount - [===
VISUAL&DEBUG===]DrawZonesOnChart=true// Draw liquidity zones on chart
// Pipsgrowth EX15017 SMC-OrderBlock — Execution Flow (from source analysis)
// Family: SMC-OrderBlock
// Liquidity-trap scalper using swing-derived liquidity zones with surge & pattern confirmations, dynamic lock-profit ratchet, initial vs additional trade tagging, and pause-guard protection. 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 | 22215017 | 2220 + Expert ID |
| InpTradeComment | "Psgrowth.com Expert_15017" | Trade Comment |
| InpTimeframe | 4 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Chart timeframe for analysis |
| SwingBarCount | 1 | Bars each side to confirm swing |
| MaxZoneAgeHours | 24 | Max zone age before deactivation (hours) |
| PriceSurgeFraction | 0.001 | Min price surge (0.001 = 0.1% - more reasonable) |
| RequireVolumeSurge | false | Require volume surge confirmation |
| VolumeSurgeMultiplier | 1.1 | Volume multiplier vs average (1.1 = 10% above avg) |
| VolumeLookbackBars | 5 | Bars to calculate volume average (shorter = more responsive) |
| UseEngulfingPattern | false | Use engulfing candle patterns (often too restrictive) |
| EngulfingLookback | 3 | Bars to scan for engulfing patterns |
| UseHigherTFConfirmation | false | Use higher timeframe trend filter |
| ConfirmationTF | 6 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Higher timeframe for confirmation |
| RiskMode | RISK_FIXED_LOT | Position sizing method |
| FixedLot | 0.10 | Fixed lot size (if RISK_FIXED_LOT) |
| RiskPerTradePercent | 1.0 | Risk per trade % of balance |
| DefaultSLPoints | 300 | Default SL distance (points) |
| DefaultTPPoints | 600 | Default TP distance (points) |
| SlippagePoints | 5 | Max slippage tolerance (points) |
| EnableTimeFilter | true | Enable trading time restrictions |
| TradingHoursStart | "08:00" | Trading start time (broker time) |
| TradingHoursEnd | "20:00" | Trading end time (broker time) |
| UseDynamicSpreadCap | true | Use dynamic spread cap (3x median) |
| SpreadMedianWindow | 50 | Bars for spread median calculation |
| ManualMaxSpreadPoints | 60 | Manual max spread (if dynamic disabled) |
| InpEnableDynamicLockProfit | true | Enable trailing stop-loss ratchet |
| InpLockProfitEveryXPoints | 150 | Lock profit every X points |
| InpLockMinusYPointsBuffer | 20 | Buffer below profit lock level |
| MaxOpenTrades | 5 | Maximum concurrent positions |
| AllowOnlyProfitableAdditions | true | Only add if existing trades profitable |
| MinProfitPerTradeToAdd | 5.0 | Min profit per trade to allow additions |
| PauseOnConsecutiveLosses | false | Pause after consecutive losses |
| PauseConsecutiveLossesCount | 3 | Number of losses to trigger pause |
| PauseConsecutiveLossesMinutes | 60 | Pause duration (minutes) |
| PauseOnLossAmount | false | Pause after loss amount threshold |
| PauseLossAmount | 100.0 | Loss amount to trigger pause |
| PauseLossAmountMinutes | 60 | Pause duration for loss amount |
| DrawZonesOnChart | true | Draw liquidity zones on chart |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX15017 LiquidityTrap — swing-zone scalper with DLP ratchet and pause guards, full 12-layer stack."
#include <Trade\Trade.mqh>
//------------------------------ INPUTS ------------------------------
//┌─────────────────────────────────────────────────────────────────┐
//│ BASIC 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_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_InpTimeframe = PERIOD_H1;
ENUM_TIMEFRAMES g_ConfirmationTF = PERIOD_H1;
input group "=== BASIC SETTINGS ==="
input long MagicNumber = 22215017; // 2220 + Expert ID
input string InpTradeComment = "Psgrowth.com Expert_15017"; // Trade Comment
input int InpTimeframe = 4; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Chart timeframe for analysis
//┌─────────────────────────────────────────────────────────────────┐
//│ LIQUIDITY TRAP STRATEGY │
//└─────────────────────────────────────────────────────────────────┘
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;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.