P
PipsGrowth
Trend FollowingOpen Source – Free

Pipsgrowth EX18073 TrendFollow

MT5 Expert Advisor (Open Source) · XAUUSD · M5, H1

Pipsgrowth.com EX18073 Technical Trader — Dual-EMA + clustered S/R, full 12-layer stack.

Overview

EX18073 is a structural trend EA that combines a dual-EMA directional filter with a self-built support/resistance map reconstructed from recent price memory. Instead of relying on a static pivot table or a single swing high/low, the EA scans the last InpSRClusterBars closed bars (default 200), bins the close prices into 5-pip-wide histogram cells, and treats any cell that has been touched at least InpSRMinTouches times (default 3) as a price-memory level. The current ask or bid is then compared against that level — if the price is sitting within SR_PROXIMITY_PIPS (3 pips) of a populated cluster, the level is treated as live support (for longs) or live resistance (for shorts). The trade is allowed only if the level sits on the correct side: a BUY requires the price to be above the cluster, a SELL requires it to be below. The intuition is that price memory is real: levels that have been revisited multiple times in the recent past act as a magnet or a barrier, and the EA wants to fade a bounce off that level in the direction of the prevailing trend.

The trend itself is established by a fast/slow EMA consensus. The fast EMA is InpFastMA (default 25), the slow is InpSlowMA (default 50), both exponential and both applied to close. EmaSide() returns +1/-1/0 based on the closed-bar (shift 1) relationship between the two. EmaSlopeAgrees() then checks that the fast EMA has been monotonically moving in that direction over the last two closed bars — a price above the slow EMA is not enough on its own, the fast line must also be sloping the right way. The trade is rejected if the fast EMA is flat or counter-trend on the previous bar. This rules out the most common false signal: a price that has crossed above the slow EMA but is grinding sideways while the fast EMA is curling back down.

A regime classifier runs on top of the trend filter. ClassifyRegime() reads three live series — ATR(14), ADX(14), and Bollinger Bands(20, 2.0) — and produces one of five labels. STRONG_TREND requires ADX ≥ 20 and the current ATR(14) to be at or above the 30th percentile of the last 50 bars. WEAK_TREND relaxes the thresholds to ADX ≥ 14 and ATR percentile ≥ 15. COMPRESS is detected when the current Bollinger bandwidth is less than 90% of the previous bar's bandwidth. EXPAND is the opposite, with the bandwidth ratio > 1.10. Anything that doesn't fit is labelled RANGE. RegimeAllowsEntry() accepts STRONG_TREND, WEAK_TREND, EXPAND, and BREAKOUT — the EA will not open new positions during COMPRESS or RANGE regimes. The COMPRESS gate is a meaningful filter on XAUUSD M5, where the market regularly alternates between quiet consolidation (low ATR, contracting bands) and explosive breakouts, and entering during a squeeze is exactly the wrong side of the distribution.

Confirmation is layered. The first check is ConfirmHTF(), which reads a higher-timeframe EMA(50) — by default the H1 EMA via InpHTF = 8 mapped through MapTimeframeInt(). A long is confirmed only if the M5 closed bar finished above the H1 EMA(50) AND the H1 EMA has been sloping up over its last two closed bars. A short requires the mirror. The second confirmation is the S/R cluster test described above. The third is ConfirmRR(), which checks that the proposed SL/TP distances produce a reward:risk ratio of at least InpMinRR (1.5). With InpSLATR = 1.5 and InpTPATR = 3.0 the actual ratio is exactly 1:2, so the MinRR is a floor, not the operative value — but it does prevent the EA from sending a trade where the SL was widened by StopsLevelPrice() (the broker's minimum stop distance) to the point that the math no longer works.

The no-trade gate is the standard seven-layer filter. NoTradeBlocking() rejects entries if any of the following is true: InpKillSwitch is on, effective capital is below InpCapitalCapFloor ($50 by default), the current spread exceeds InpMaxSpreadPips (3.0 pips on XAUUSD means the broker is quoting less than 30 points on the typical MT5 gold feed), the day is Saturday or Sunday, the time is Friday after 20:00 server time, the current server hour is outside the InpSessionStartHour–InpSessionEndHour window (7–21 by default), or a cooldown is active. Realized PnL is checked against the InpDailyLossLimitPct (3% of effective capital) and a hard-coded weekly limit (WEEKLY_LOSS_LIMIT_PCT = 6.0).

Position sizing is risk-based. CalcLotsByRisk() takes the proposed SL distance in price, multiplies effective capital by InpRiskPercent / 100, and divides by the per-lot money-per-distance figure for the symbol. On XAUUSD with a 0.5% risk setting and a 1.5×ATR stop, a $1,000 account yields roughly 0.02 lots on a 30-pip SL. The lot is then normalized to the symbol's LotsStep and bounded by LotsMin/LotsMax. If the result is zero, the trade is skipped. Effective capital is g_Acc.Equity() minus today's realized PnL, optionally floored by InpCapitalCapAmount (a hard cap on real-money exposure) and always floored by InpCapitalCapFloor. With InpCapitalCapAmount = 0.0 (the default), the cap is effectively off and effective capital equals base equity.

Trade management runs every tick on every open position. Three rules fire in sequence. First, a partial close of PARTIAL_TP_PCT (50%) of the position when the trade has moved InpPartialTPR (1.0R) in profit. Second, a one-shot move of the stop to breakeven at InpBreakevenAtR (1.0R), with a StopsLevelPrice() safety pad to satisfy the broker's minimum stop distance. Third, an ATR trailing stop at InpTrailATR × ATR(14) (2.0× ATR by default), ratcheting forward only when the new proposed stop is at least TRAIL_STEP_ATR × ATR (0.5× ATR) better than the current one. The trail only kicks in if InpTrailATR > 0 and ATR is non-zero. The 50% partial only fires if the remaining position is at least 2× the symbol's minimum lot.

Exit logic covers three paths beyond the trailing stop and the hard TP. There is no time stop — MAX_BARS_IN_TRADE = 0 disables the bar-age exit entirely. There is a regime-change exit that closes the position only if the current regime is RANGE or COMPRESS and the position is currently in loss (profit < 0); winning positions in those regimes are left to run. There is an opposite-signal exit that closes the position the moment EmaSide() flips to the opposite direction on a closed bar. All three are wrapped in TryClose_EX18073(), a 3-attempt retry helper that sleeps 200ms on requote/timeout/price-off/price-changed.

Execution is conservative. OpenMarket() runs OrderCalcMargin first and refuses to send if the required margin exceeds free margin, returning an INSUFFICIENT_MARGIN reason. On a failed send (requote/timeout/price-changed) it refreshes the prices and retries once. The deviation is SLIPPAGE_POINTS = 30 (3 pips on a 5-digit XAUUSD feed). SetTypeFillingBySymbol() adapts the order type to whatever the broker accepts. The InpDryRun flag defaults to true — the EA will print the intended order to the log but not send it, which is the right default for a structural strategy that you want to validate in the Strategy Tester before going live. Set InpDryRun = false to enable real trading. The order comment is hardcoded to Psgrowth.com Expert_18073.

Capacity is intentionally tight. InpMaxConcurrent = 1 and InpMaxSymbolPos = 1 mean the EA holds at most one open position on the symbol at any time. There is no pyramiding and no scaling — the partial TP at 1R is the only reduction in exposure, and it leaves the second half of the position on for the trail to manage. This makes the EA a single-shot, high-conviction trader: it spends most of its time waiting, fires only when the S/R cluster test, the dual-EMA consensus, the H1 trend, and the regime classifier all line up on the same bar, and then manages the resulting position with a simple BE + partial + trail structure.

The OnTester fitness function is (netProfit × profitFactor) / (1 + balanceDrawdown), returning 0 if the total trade count is below 30. This is the standard trend-EA fitness recipe in the corpus: it rewards both raw profit and profit factor, and it penalises drawdown, but it does not directly reward the Sharpe ratio or reward smoothness. Use the standard MT5 optimization pass with this as the criterion when sweeping the EMA periods, the S/R cluster window, and the ATR regime thresholds.

What to expect in backtest: the histogram-binned S/R map is a slow-to-adapt feature, so on regime changes the cluster levels can lag the market by a few bars. The 200-bar window on M5 is roughly 16 hours of trading, which means the levels the EA is testing against were generated during the previous London and New York sessions. On XAUUSD, where the Asia-London overlap routinely produces the day's true range, this can be a feature (the level is real) or a bug (the level is stale). The combination of a single-position cap and a 1:2 hard TP means the EA will not catch very long trends — the partial + BE structure assumes you are happy banking 1R and trailing the rest. If you are looking for a multi-day trend rider, this is not the right tool. If you are looking for a clean, structural, mid-frequency trend trade on XAUUSD M5 with a clear entry, a defined stop, and a managed exit, this is.

Strategy Deep Dive

On every tick the EA refreshes six indicator series (ATR(14), ADX(14), Bollinger(20, 2.0), fast EMA(25), slow EMA(50), H1 EMA(50)) and walks every open position for breakeven/partial/trailing management. On each new M5 bar it first runs the seven-layer no-trade gate (kill switch, capital floor, 3-pip spread cap, weekend, Friday-after-20 block, 7-21 server session, cooldown, 3% daily / 6% weekly realized loss), then caps by InpMaxConcurrent = 1 and InpMaxSymbolPos = 1. ClassifyRegime() labels the current state as STRONG_TREND, WEAK_TREND, COMPRESS, EXPAND, or RANGE; RANGE and COMPRESS block entries. CoreSignal() returns +1/-1/0 from the closed-bar fast/slow EMA side and 2-bar slope agreement. ConfirmHTF() requires the H1 EMA(50) to be sloping the right way with the M5 close on the correct side. ConfirmSR() (via PriceNearSR()) bins the last 200 closes into 5-pip histogram cells, looks for cells with ≥ 3 touches, and accepts the trade only if price is within 3 pips of one of those cells, on the correct side. ConfirmRR() enforces the 1.5 minimum. CalcLotsByRisk() sizes to 0.5% of effective capital for the ATR-based SL; OpenMarket() does an OrderCalcMargin pre-check and a one-shot requote retry with 30-point deviation. ManagePosition() runs the 50% partial, the BE move, and the 0.5×ATR-step trail on every tick. The OnTester fitness is (netProfit × profitFactor) / (1 + balanceDD), returning 0 below 30 trades.

Entry Signal

A long entry fires when the closed-bar fast EMA(25) is above the slow EMA(50) with the fast line sloping up over the last two closed bars, the H1 EMA(50) is sloping up with the M5 close above it, and the current ask price is sitting within 3 pips of a 200-bar histogram-binned price-memory cluster that has at least 3 touches, with the price above the cluster level. Shorts mirror this. The trade is rejected if the regime is RANGE or COMPRESS (Bollinger bandwidth ratio below 0.9), if the ATR(14) percentile is below 30 while ADX is below 20, or if the daily/weekly loss limit has been hit. The R:R must clear 1.5; with the default 1.5×ATR SL and 3.0×ATR TP the actual ratio is 1:2.

Exit Signal

Exit paths are layered. The hard TP fires at 3.0×ATR (1:2 R:R). Once the trade moves 1R in profit, 50% is closed and the stop is ratcheted to breakeven plus the broker's minimum stop distance. Beyond that, a 2.0×ATR trailing stop ratchets forward in 0.5×ATR steps. A regime-change exit closes the position only if the current regime has flipped to RANGE or COMPRESS and the position is currently losing; winners in those regimes are left to run. An opposite-signal exit fires the moment the dual-EMA side flips to the other direction on a closed bar. There is no time stop (MAX_BARS_IN_TRADE = 0).

Stop Loss

Hard stop loss is set to InpSLATR × ATR(14), default 1.5×ATR, snapped outward to StopsLevelPrice() plus one point if the broker's minimum stop distance would otherwise push it inside the minimum. After the trade reaches 1R in profit, the stop is ratcheted to breakeven (open price) plus the broker's minimum stop distance, in a one-shot move. Beyond 1R, a 2.0×ATR trailing stop ratchets forward in 0.5×ATR increments (TRAIL_STEP_ATR = 0.5).

Take Profit

Hard take profit is InpTPATR × ATR(14), default 3.0×ATR. Combined with the 1.5×ATR stop and a required minimum R:R of 1.5, this gives an exact 1:2 reward:risk. The TP is also the partial-TP trigger: when price reaches 1R, 50% of the position is closed at the partial-TP level and the rest is left to run under the trailing stop. There is no scaling or pyramiding — the second half is the only piece the trail manages.

Best For

XAUUSD M5 or H1 in the London and New York sessions (server 7-21 covers the full overlap and the early Asia close). The 3-pip spread cap and 30-point slippage tolerance are written for a low-spread ECN/RAW broker — Exness, IC Markets, Pepperstone with their gold feed will work; high-spread retail brokers will see the EA spend most of its time in NO-TRADE: SPREAD. The capital floor is $50, the recommended starting balance is $300+ to absorb a 3% daily loss and keep the 0.5%-per-trade sizing meaningful, and the 1.5×ATR SL on XAUUSD M5 (~30 pips nominal) makes the EA a mid-frequency trend trader, not a scalp.

Strategy Logic

Pipsgrowth EX18073 TrendFollow — Strategy Logic Analysis (from .mq5 source)

Family: TrendFollow Magic: 22218073 Version: 2.00

BRIEF: Dual-EMA + clustered S/R Technical Trader EA. Original core = fast/slow SMA crossover side + clustered S/R level near price. v2 inlines S/R cluster as histogram-binned support/ resistance map from CopyClose, combines with fast/slow EMA slope consensus, gates entries by ADX/ATR-pctile/BB-width regime, HTF-EMA agreement, spread/session filters, capital- allocation-cap, ATR-based hard SL/TP, BE + partial TP + trail. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

INDICATOR STACK:

  • ATR
  • ADX
  • BB
  • EMAf
  • EMAs
  • HTF

KEY FUNCTIONS:

  • PipSize()
  • PipsToPrice()
  • NormPrice()
  • NormLots()
  • StopsLevelPrice()
  • RealizedPnLSince()
  • RealizedPnLToday()
  • EffectiveCapital()
  • ClassifyRegime()
  • RegimeAllowsEntry()
  • EmaSide()
  • EmaSlopeAgrees()
  • ...and 17 more

INTERNAL CONSTANTS (4 total):

  • SR_CLUSTER_BIN_PIPS = 5 // histogram bin width in pips
  • SR_PROXIMITY_PIPS = 3 // proximity band to S/R for entry (pips)
  • MAX_BARS_IN_TRADE = 0 // 0 = off
  • COOLDOWN_AFTER_LOSSES = 3 // +------------------------------------------------------------------+

INPUT PARAMETERS (28 total across 8 groups):

  • [=== Identity ===] InpFastMA = 25 // Fast EMA period (bars)
  • [=== Identity ===] InpSlowMA = 50 // Slow EMA period (bars)
  • [=== Identity ===] InpSRClusterBars = 200 // S/R cluster lookback (bars)
  • [=== Identity ===] InpSRMinTouches = 3 // Min touches to qualify a S/R cluster
  • [=== HTF Confirmation ===] InpHTF = 8 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // HTF EMA trend timeframe
  • [=== HTF Confirmation ===] InpHTF_EMA = 50 // HTF EMA period (bars)
  • [=== Regime Filter ===] InpMinADX = 20.0 // Min ADX for StrongTrend entry
  • [=== Regime Filter ===] InpATRPctMin = 30.0 // Min ATR percentile to trade (%)
  • [=== Regime Filter ===] InpATRPctLookback = 50 // ATR percentile lookback (bars)
  • [=== Risk & Sizing ===] InpRiskPercent = 0.5 // Risk per trade (% of effective capital)
  • [=== Risk & Sizing ===] InpSLATR = 1.5 // Stop loss ATR multiplier
  • [=== Risk & Sizing ===] InpTPATR = 3.0 // Take profit ATR multiplier
  • [=== Risk & Sizing ===] InpMinRR = 1.5 // Min required reward:risk ratio
  • [=== Risk & Sizing ===] InpMaxConcurrent = 1 // Max concurrent positions (this magic)
  • [=== Risk & Sizing ===] InpMaxSymbolPos = 1 // Max positions on this symbol (all magics)
  • [=== Capital Allocation Cap ===] InpCapitalCapAmount = 0.0 // Cap on real-money equity ($)
  • [=== Capital Allocation Cap ===] InpCapitalCapFloor = 50.0 // Floor below which new entries blocked ($)
  • [=== Capital Allocation Cap ===] InpDailyLossLimitPct = 3.0 // Max daily loss (% effective cap)
  • [=== Trade Management ===] InpBreakevenAtR = 1.0 // Move to breakeven at R-multiple
  • [=== Trade Management ===] InpPartialTPR = 1.0 // Partial close at R-multiple (0=off)
  • [=== Trade Management ===] InpTrailATR = 2.0 // ATR trailing multiplier (0=off)
  • [=== Exec / Filters ===] InpMaxSpreadPips = 3.0 // Max spread (pips)
  • [=== Exec / Filters ===] InpSessionStartHour = 7 // Session start hour (server time, 0-23)
  • [=== Exec / Filters ===] InpSessionEndHour = 21 // Session end hour (server time, 0-23)
  • [=== System ===] InpMagic = 22218073 // Magic number
  • [=== System ===] InpTradeComment = "Psgrowth.com Expert_18073" // Trade comment
  • [=== System ===] InpDryRun = true // Dry-run: no live sends
  • [=== System ===] InpKillSwitch = false // Kill switch (hard stop)
Pseudocode
// Pipsgrowth EX18073 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// Dual-EMA + clustered S/R Technical Trader EA. Original core = fast/slow SMA crossover side + clustered S/R level near price. v2 inlines S/R cluster as histogram-binned support/ resistance map from CopyClose, combines with fast/slow EMA slope consensus, gates entries by ADX/ATR-pctile/BB-width regime, HTF-EMA agreement, spread/session filters, capital- allocation-cap, ATR-based hard SL/TP, BE + partial TP + trail. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

ON_INIT:
    Create indicator handles: ATR, ADX, BB, EMAf, EMAs, HTF
    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

Optimized Brokers:
ExnessIC Markets
Optimized Symbols:
XAUUSD
Optimized Timeframes:
M5H1

How to Install This EA on MT5

  1. 1Download the .mq5 file using the button above
  2. 2Open MetaTrader 5 on your computer
  3. 3Click File → Open Data Folder in the top menu
  4. 4Navigate to MQL5 → Experts and paste the .mq5 file there
  5. 5In MT5, right-click Expert Advisors in the Navigator panel → Refresh
  6. 6Drag the EA onto an H4 or Daily chart for best results
  7. 7Configure EMA periods, ADX threshold, and lot size in the dialog
  8. 8Enable Allow Algo Trading and click OK

EA Parameters

ParameterDefaultDescription
InpFastMA25Fast EMA period (bars)
InpSlowMA50Slow EMA period (bars)
InpSRClusterBars200S/R cluster lookback (bars)
InpSRMinTouches3Min touches to qualify a S/R cluster
InpHTF8Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // HTF EMA trend timeframe
InpHTF_EMA50HTF EMA period (bars)
InpMinADX20.0Min ADX for StrongTrend entry
InpATRPctMin30.0Min ATR percentile to trade (%)
InpATRPctLookback50ATR percentile lookback (bars)
InpRiskPercent0.5Risk per trade (% of effective capital)
InpSLATR1.5Stop loss ATR multiplier
InpTPATR3.0Take profit ATR multiplier
InpMinRR1.5Min required reward:risk ratio
InpMaxConcurrent1Max concurrent positions (this magic)
InpMaxSymbolPos1Max positions on this symbol (all magics)
InpCapitalCapAmount0.0Cap on real-money equity ($)
InpCapitalCapFloor50.0Floor below which new entries blocked ($)
InpDailyLossLimitPct3.0Max daily loss (% effective cap)
InpBreakevenAtR1.0Move to breakeven at R-multiple
InpPartialTPR1.0Partial close at R-multiple (0=off)
InpTrailATR2.0ATR trailing multiplier (0=off)
InpMaxSpreadPips3.0Max spread (pips)
InpSessionStartHour7Session start hour (server time, 0-23)
InpSessionEndHour21Session end hour (server time, 0-23)
InpMagic22218073Magic number
InpTradeComment"Psgrowth.com Expert_18073"Trade comment
InpDryRuntrueDry-run: no live sends
InpKillSwitchfalseKill switch (hard stop)
Source Code (.mq5)Open Source
Pipsgrowth_com_EX18073.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX18073 Technical Trader — Dual-EMA + clustered S/R, full 12-layer stack."

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>

//+------------------------------------------------------------------+
//| Inputs  (TOTAL = 20, within 12-22 cap)                           |
//+------------------------------------------------------------------+
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_InpHTF = PERIOD_H1;
input group "=== Identity ==="
input int    InpFastMA          = 25;            // Fast EMA period (bars)
input int    InpSlowMA          = 50;            // Slow EMA period (bars)
input int    InpSRClusterBars   = 200;           // S/R cluster lookback (bars)
input int    InpSRMinTouches    = 3;             // Min touches to qualify a S/R cluster

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;

Full source code available on download

Educational purposes only. Do NOT use with real money. Test on demo accounts only.

Tags:ex18073trendfollowpipsgrowthfreemt5xauusd

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

Community

Sign in to contributeSign In

Educational purposes only. Do NOT use with real money. Test on demo accounts only.

File NamePipsgrowth_com_EX18073.mq5
File Size38.2 KB
Versionv2.00
PlatformMetaTrader 5
File Type.mq5 Source
StrategyTrend Following
Risk LevelMedium Risk
Timeframes
M5H1
Currency Pairs
XAUUSD
Min. Deposit$100