Pipsgrowth EX12030 MultiIndicatorConfluence
MT5 Expert Advisor (Open Source) · XAUUSD · M5, H1
Pipsgrowth.com EX12030 EA1_6 — Template EA skeleton with identity inputs, full 12-layer stack.
Overview
Pipsgrowth EX12030 MultiIndicatorConfluence ships with the same retry-wrapper plumbing the rest of the EX12 family uses, and nothing else. The 111-line source is a starting skeleton — identity inputs, three CTrade retry helpers, empty OnInit/OnDeinit/OnTick stubs, and a header brief that names a 12-layer architecture the file does not implement. Anyone attaching it to a live chart with default inputs will see the EA register, accept ticks, and never place, modify, or close a single position. That is not a bug; it is the deliverable. The file is meant to be forked, not run.
The input block is two declarations long. InpMagic defaults to 22212030, a number that follows the EX12 family convention: the prefix 22212 is the family ID, the suffix 030 is this specific EA's slot. Sibling EAs use 22212010, 22212020, 22212027, 22212028, 22212029 and so on, so two EX12 EAs running on the same account can coexist without their position-management code stomping on each other's tickets. InpTradeComment defaults to the literal string "Psgrowth.com Expert_12030" and is the comment that would appear in the deal-history field on any order the developer eventually adds. Neither input has any effect on the current build. The retry wrappers do not call SetExpertMagicNumber, and there is no code path that reads InpTradeComment. Both are placeholders that the developer is expected to wire up when they add the entry layer.
The three functions are the only executable surface in the file. TryClose_EX12030, TryClosePartial_EX12030, and TryModify_EX12030 are driven by a per-EA CTrade instance declared at file scope as g_trade_wrappers_EX12030. The naming pattern — wrappers suffixed with the magic number — is reused across the family, and it is what lets two EX12 EAs share a chart without colliding on the global CTrade object. Each helper attempts the operation up to three times before giving up. The close wrappers (full and partial) sleep 200 milliseconds between attempts and treat four retcodes as transient: TRADE_RETCODE_REQUOTE, TRADE_RETCODE_TIMEOUT, TRADE_RETCODE_PRICE_OFF, and TRADE_RETCODE_PRICE_CHANGED. The modify wrapper sleeps 100 milliseconds and accepts only two: TRADE_RETCODE_REQUOTE and TRADE_RETCODE_TIMEOUT. The asymmetry is deliberate. A close that gets a PRICE_CHANGED reply is still trying to close at market — the broker is telling the EA the price moved, which is exactly when retrying makes sense. A modify that gets PRICE_CHANGED is the broker suggesting a different SL or TP than the EA requested, and retrying tends to push stale levels back into the order. Flattening this asymmetry — for example by making the modify wrapper retry on PRICE_CHANGED — usually produces positions whose stops are repeatedly clobbered with old values. Anyone extending the file should keep the four-versus-two split as-is.
The header brief names a 12-layer architecture the file does not implement: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester. The vocabulary is consistent across the EX12 family. REGIME classifies the market state (trend, range, volatility regime). SIGNAL reads the raw indicator output. ENTRY is the trigger that fires a trade. CONFIRM is a second-pass filter — ADX above threshold, volume above average, that kind of thing. NO-TRADE is the gate that blocks entries when spread, slippage, or session is wrong. CAPITAL CAP is the absolute position ceiling. RISK is per-trade risk in percent. SIZING is the lot calculation that turns the risk number into a concrete volume. MANAGE is the trailing-stop, break-even, and dynamic-lock-profit module. EXIT is the close logic. SCALING is the add-to-winner or pyramid module. OnTester is the OnTester() function that produces the optimization fitness score. In EX12030 every one of those layers is a label in the brief, not code in the file. There are no indicator handles — zero — and no signal logic that would feed them.
The three event handlers are empty by design. OnInit returns INIT_SUCCEEDED with a blank body — no iMA or iRSI handles created, no SetExpertMagicNumber call, no timer registration. OnDeinit takes the standard const int reason parameter and returns without acting. OnTick is three lines including the comment delimiter and the closing brace. A working 12-layer EA would normally seed OnInit with the indicator handles the SIGNAL layer needs, populate OnTick with a per-tick decision loop that reads those handles, runs the signal through the regime and confirm gates, sizes the lot, and dispatches the resulting order through the retry wrappers, and clean up in OnDeinit. EX12030 does none of that. The wrapper functions are present, but nothing in the file calls them, and that is the point: the developer is supposed to drop the entry code into OnTick and reach for TryClose_EX12030, TryClosePartial_EX12030, and TryModify_EX12030 from their position-management code without having to write the retry plumbing from scratch.
For a trader evaluating EX12030, the honest summary is that there is no strategy here. Backtesting the file over any date range on any symbol produces zero trades, because OnTick never asks for one. The file is a reference starting point — useful for a developer who wants a known-compiling 12-layer skeleton with the EX12 retry semantics already in place, useful as a teaching artifact for someone learning how the family structures its CTrade wrappers and identity inputs, and useful as a baseline for any code-generation workflow that needs a clean compile to seed from. It is not a turnkey multi-indicator confluence system. The EAs in the same family that do wire the 12 layers into a working strategy are EX12027, EX12028, and EX12029; EX12030 is what those files would look like if you stripped out everything except the boilerplate.
The 100-dollar minimum balance and XAUUSD M5-H1 default pair in the EA's metadata are inherited from the family default, not from this file's behavior. EX12030 does not consume margin because it does not place orders, so the minimum-balance figure is a placeholder for the developer to keep or override. The M5-H1 designation is the timeframes the indicator stack is most likely to be tuned for once one is added, since the rest of the EX12 family is built around those bars. Until then, those numbers are suggestions about what the file would be calibrated for, not constraints on what the empty skeleton does.
Strategy Deep Dive
EX12030 is a 111-line starter skeleton for the EX12 MultiIndicatorConfluence family, and the file is structured around three retry helpers rather than a signal stack. OnInit returns INIT_SUCCEEDED with no indicator handles created and no SetExpertMagicNumber call; OnTick is an empty body that never reads an indicator or calls OrderSend. The retry trio — TryClose_EX12030, TryClosePartial_EX12030, TryModify_EX12030 — is the only executable code, driven by a per-EA CTrade instance named g_trade_wrappers_EX12030. The close wrappers retry three times on a 200-millisecond backoff and accept four retcodes (REQUOTE, TIMEOUT, PRICE_OFF, PRICE_CHANGED); the modify wrapper retries on a 100-millisecond backoff and accepts only REQUOTE and TIMEOUT, an asymmetry that exists because a modify PRICE_CHANGED is the broker suggesting a different SL/TP than the EA requested and is treated as a hard failure. The header brief names a 12-layer architecture — REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester — that the file does not implement; the two inputs InpMagic=22212030 and InpTradeComment="Psgrowth.com Expert_12030" are placeholders the developer is expected to wire up when the entry layer is added. Running the file as-is on any symbol and any timeframe produces zero trades because OnTick never asks for one.
OnTick in EX12030 is an empty stub — the EA does not read any indicator, does not evaluate a signal, and does not call OrderSend. The three retry helpers TryClose_EX12030, TryClosePartial_EX12030, and TryModify_EX12030 are defined at file scope but are not referenced from the tick handler, so even the exit-side plumbing is unreachable from a live chart. Any entry path must be added to the OnTick body by hand; the skeleton supplies the wrappers, not the trigger that fires them.
There is no exit path in EX12030. OnTick is empty, no orders are ever opened, and the close helpers TryClose_EX12030 and TryClosePartial_EX12030 are present but uncalled. A developer extending the file is expected to call those helpers from their position-management code, but in the stock build nothing in the file fires them.
EX12030 places no orders and sets no per-trade stop loss. The retry helper TryModify_EX12030 is defined and would, in a working extension, be the path the EA uses to attach or ratchet an SL — but in the current build the helper is never called.
EX12030 places no orders and sets no per-trade take profit. The modify helper would, in an extended build, be the path for attaching or trailing a TP — but in the stock skeleton no order is opened, so no TP is ever applied.
EX12030 is best for developers who want a known-compiling 12-layer skeleton with the EX12 retry semantics already in place, or for a code-generation pipeline that needs a clean starting point to seed from — not for live or backtest trading as-is. The 100-dollar minimum balance and XAUUSD M5-H1 default pair in the metadata are inherited family defaults; the file itself does not consume margin, place orders, or hit a tick, so any live deployment will need the entry, signal, and risk layers filled in by hand. Pair it with a development environment, not a broker account.
Strategy Logic
Pipsgrowth EX12030 MultiIndicatorConfluence — Strategy Logic Analysis (from .mq5 source)
Family: MultiIndicatorConfluence
Magic: 22212030
Version: 2.00
BRIEF:
Template EA skeleton with OnInit, OnDeinit, and OnTick stubs. Provides the foundation for the 12-layer stack with identity inputs (magic, trade comment) ready for extension. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
TryClose_EX12030()TryClosePartial_EX12030()TryModify_EX12030()
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (2 total across 1 groups):
- [=== Identity ===]
InpMagic=22212030// Magic number - [=== Identity ===]
InpTradeComment= "Psgrowth.com Expert_12030" // Trade comment
// Pipsgrowth EX12030 MultiIndicatorConfluence — Execution Flow (from source analysis)
// Family: MultiIndicatorConfluence
// Template EA skeleton with OnInit, OnDeinit, and OnTick stubs. Provides the foundation for the 12-layer stack with identity inputs (magic, trade comment) ready for extension. 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 |
|---|---|---|
| InpMagic | 22212030 | Magic number |
| InpTradeComment | "Psgrowth.com Expert_12030" | Trade comment |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX12030 EA1_6 — Template EA skeleton with identity inputs, full 12-layer stack."
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Inputs |
//+------------------------------------------------------------------+
input group "=== Identity ==="
input int InpMagic = 22212030; // Magic number
input string InpTradeComment = "Psgrowth.com Expert_12030"; // Trade comment
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
CTrade g_trade_wrappers_EX12030;
bool TryClose_EX12030(ulong ticket)
{
for(int a=0; a<3; a++)
{
if(g_trade_wrappers_EX12030.PositionClose(ticket) &&
(g_trade_wrappers_EX12030.ResultRetcode()==TRADE_RETCODE_DONE || g_trade_wrappers_EX12030.ResultRetcode()==TRADE_RETCODE_DONE_PARTIAL))
return true;
uint rc=g_trade_wrappers_EX12030.ResultRetcode();
if(rc==TRADE_RETCODE_REQUOTE || rc==TRADE_RETCODE_TIMEOUT ||
rc==TRADE_RETCODE_PRICE_OFF || rc==TRADE_RETCODE_PRICE_CHANGED)
{ Sleep(200); continue; }
break;
}
return false;
}
bool TryClosePartial_EX12030(ulong ticket, double volume)
{
for(int a=0; a<3; a++)
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.