P
PipsGrowth
ScalpingOpen Source – Free

Pipsgrowth EX14025 Scalper

MT5 Expert Advisor (Open Source) · EURUSD, GBPUSD, USDJPY · M15

Pipsgrowth.com EX14025 MultiCurrencyScalper — scalps 8 major pairs on M15 with staggered RSI entries, full 12-layer stack.

Overview

The Pipsgrowth EX14025 MultiCurrencyScalper is a cross-pair M15 reversal scanner built around a single hardcoded signal: a 14-period RSI crossing back from oversold or overbought. Where most of the EX14 family concentrates on a single symbol and a single time bar, EX14025 walks an eight-symbol array on every M15 bar close of EURUSD, applies the same 30/70 RSI reversal check to each pair, and opens positions on whichever symbols are eligible, subject to a 20-point spread filter and a global cap of four simultaneous positions under magic number 22214025.

The signal itself is one of the most basic momentum reversals in technical analysis. On each M15 close, the EA pulls the previous and current RSI(14) values for every symbol in its watch list and looks for a level-cross event: a buy fires when the previous bar's RSI sat below 30 and the current bar is at or above 30, and a sell fires on the mirror — previous RSI above 70 and current bar at or below 70. There is no trend filter, no confirmation indicator, and no multi-timeframe check. The only refinements are per-symbol: the spread must be 20 points or less, and the symbol must not already host a position under the same magic number. With the HasTradeOnSymbol() guard, each pair is effectively a one-trade-at-a-time channel, so even though the EA may scan all eight symbols on the same M15 close, the typical outcome is zero to two new positions per bar.

Position management is entirely broker-side. When trade.Buy() fires, the EA passes a stop loss of 20 pips and a take profit of 15 pips to the broker as part of the order request. From that moment on, the EA does nothing with the open position. There is no OnTradeTransaction() handler, no ManageTrailingStop() function, no break-even ratchet, no partial close, and no time-based exit. Positions close only when the broker hits the pre-set SL or TP, or when the trader manually intervenes. The three helper functions TryClose_EX14025, TryClosePartial_EX14025, and TryModify_EX14025 are defined at the bottom of the file with proper three-attempt retry loops for REQUOTE, TIMEOUT, PRICE_OFF, and PRICE_CHANGED errors, but they are never called from OnTick() — the live execution path uses trade.Buy() and trade.Sell() directly with broker-attached SL and TP, so the retry scaffolding is template dead code carried over from the EX14 family.

The reward-to-risk profile is unusually tight. With 20 pips risked and 15 pips targeted, the TP-to-SL ratio is 0.75:1, meaning a strategy needs roughly 57% win rate just to clear the spread and commission drag, and closer to 60% once swap costs are factored in. For a single-symbol strategy this would be a meaningful handicap, but the multi-symbol design spreads the same edge across eight uncorrelated majors, which can soften the variance — though it does not change the per-trade expectancy. The 20-point spread filter (around two pips on a five-digit FX feed) is calibrated for ECN or RAW-spread accounts; on a standard retail account the constant spread of three to four pips will exceed this threshold and silently disable most entries.

The risk-management surface area is minimal. The EA does not compute lot size from account balance, does not impose a global drawdown cap, does not track daily P&L, and does not filter by session or news event. The only protective switches are the four-position cap, the 20-point spread filter, the per-symbol one-position limit, and the standard broker-side SL/TP. The header block advertises a 12-layer architecture covering regime, signal, entry, confirm, no-trade, capital cap, risk, sizing, manage, exit, scaling, and an OnTester function, but the actual code only implements the signal, the entry, the spread filter, and the position cap. There is no regime classifier, no news filter, no OnTester, no trailing, no break-even, no partial close, no scale-in, and no equity-stop. The same gap appears throughout the EX14 family and is worth flagging for any trader evaluating the EA on its marketing description alone.

The eight-symbol universe is hardcoded: EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD, and EURGBP. The OnInit() handler does one line of meaningful work — trade.SetExpertMagicNumber(22214025) and trade.SetDeviationInPoints(20) — and returns INIT_SUCCEEDED. The OnDeinit() handler is empty, because indicator handles are created and released inside the per-tick loop rather than at EA startup. There is no OnTester() function, so the strategy tester will not generate custom optimization criteria; the EA simply emits its raw trade history.

In a backtest, the EA will appear most active during the London and New York overlap hours, when all eight majors are moving in earnest and reversals around the 30/70 RSI levels are most frequent. The Asian session will produce fewer signals because majors drift rather than reverse. The M15 bar guard means exactly one decision per closed M15 bar of symbols[0] (EURUSD), but the loop walks all eight pairs on that one decision, so two or three pairs can enter on the same bar. A practical deployment requires an ECN or RAW-spread broker, the $100 minimum deposit to support 0.01 fixed lots on up to four simultaneous positions, and a manual pause around NFP, FOMC, and central-bank press conferences, since the EA has no built-in volatility or news filter and the 20-point spread threshold will likely be breached in the seconds after high-impact releases.

Strategy Deep Dive

On every M15 bar close of EURUSD (the first symbol in the hardcoded eight-pair array), the EA starts a per-symbol loop that pulls two bars of RSI(14) for each pair and applies a 30/70 level-cross reversal check. Before any signal fires, the loop also rejects any symbol whose current spread exceeds the 20-point threshold and skips any symbol that already has an open position under magic 22214025, ensuring at most one entry per pair. When a buy signal triggers, trade.Buy() is called with the SL computed as ask - 20 pips and TP as ask + 15 pips; for a sell, trade.Sell() uses bid + 20 pips SL and bid - 15 pips TP. The position cap is checked both at the start of the loop and after each successful entry, so the EA will never exceed four simultaneous positions across the eight-symbol universe. Indicator handles are created and released inside the per-tick loop rather than at OnInit(), which keeps memory pressure low but means the EA does no caching of indicator values between ticks. The new-bar guard uses iTime(symbols[0], PERIOD_M15, 0), so all eight symbols are evaluated exactly once per closed EURUSD M15 bar, with the broker-side SL/TP doing all the work after entry.

Entry Signal

Buy when the previous M15 bar's RSI(14) sat below 30 and the current bar has crossed to 30 or above; sell on the mirror when the previous bar's RSI exceeded 70 and the current bar has fallen to 70 or below. The signal is checked independently on each of the eight hardcoded symbols (EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD, EURGBP) on every M15 bar close, subject to a 20-point spread filter and a per-symbol one-position limit. The EA opens a market order with broker-attached 20-pip SL and 15-pip TP, and stops adding new positions once the global cap of four simultaneous trades is reached.

Exit Signal

Positions exit exclusively via the broker-side 20-pip stop loss or 15-pip take profit that were attached at entry. There is no OnTradeTransaction() handler, no trailing stop, no break-even ratchet, no partial close, no time-based exit, and no reverse-signal close — once the order is sent, the EA leaves the trade to the broker and moves on to the next signal check. The 3 retry helpers (TryClose, TryClosePartial, TryModify) are defined with proper error-handling loops but are never called from the live execution path.

Stop Loss

A fixed 20-pip stop loss is attached broker-side on every order at entry, computed as InpStopLoss * SYMBOL_POINT * 10 for each symbol. There is no trailing stop, no break-even, no equity stop, no per-day loss limit, and no global drawdown cap; the SL is set once at entry and never modified.

Take Profit

A fixed 15-pip take profit is attached broker-side on every order, computed as InpTakeProfit * SYMBOL_POINT * 10. This produces a 0.75:1 reward-to-risk ratio (15 pips TP / 20 pips SL), which means the strategy needs roughly 57% win rate to break even before spread and commission drag.

Best For

Best suited for a $100 minimum-deposit ECN/RAW-spread account that has all eight FX majors enabled with sub-2-pip spreads, since the 20-point filter will silently disable signals on any pair whose spread is wider. The strategy performs most actively during the London and New York overlap (roughly 13:00–17:00 UTC) when all eight majors are reversing in earnest around the 30/70 RSI levels; Asian-session signals are sparse and London-only is mixed. Risk is HIGH per the EA property because the 0.75:1 reward-to-risk ratio requires sustained 57%+ win rate, no global drawdown cap exists, and the four simultaneous positions can compound quickly. Manual pause is required around NFP, FOMC, and central-bank press conferences since the EA has no built-in news or volatility filter and the 20-point spread threshold will be breached in the seconds after high-impact releases.

Strategy Logic

Pipsgrowth EX14025 Scalper — Strategy Logic Analysis (from .mq5 source)

Family: Scalper Magic: 22214025 Version: 2.00

BRIEF: Scalps 8 major pairs on M15 with staggered entries using RSI reversal signals. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

INDICATOR STACK:

  • Standard MT5 indicators

KEY FUNCTIONS:

  • CountAllTrades()
  • HasTradeOnSymbol()
  • TryClose_EX14025()
  • TryClosePartial_EX14025()
  • TryModify_EX14025()

INTERNAL CONSTANTS (0 total):

INPUT PARAMETERS (7 total across 3 groups):

  • [=== Money Management ===] InpLotSize = 0.01 // Lot Size
  • [=== Strategy ===] InpStopLoss = 20 // Stop Loss (pips)
  • [=== Strategy ===] InpTakeProfit = 15 // Take Profit (pips)
  • [=== Strategy ===] InpMaxSpread = 20 // Max Spread (points)
  • [=== Trade Settings ===] InpMaxOpenTrades = 4 // Max simultaneous trades
  • [=== Trade Settings ===] InpMagicNumber = 22214025 // Magic Number
  • [=== Trade Settings ===] InpTradeComment = "Psgrowth.com Expert_14025" // Trade Comment
Pseudocode
// Pipsgrowth EX14025 Scalper — Execution Flow (from source analysis)
// Family: Scalper
// Scalps 8 major pairs on M15 with staggered entries using RSI reversal signals. 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

Optimized Brokers:
ExnessIC Markets
Optimized Symbols:
EURUSDGBPUSDUSDJPY
Optimized Timeframes:
M15

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 from the Navigator onto any chart (M1 or M5 recommended)
  7. 7In the EA dialog, enable Allow Algo Trading and set your lot size
  8. 8Click OK — the EA will begin trading automatically

EA Parameters

ParameterDefaultDescription
InpLotSize0.01Lot Size
InpStopLoss20Stop Loss (pips)
InpTakeProfit15Take Profit (pips)
InpMaxSpread20Max Spread (points)
InpMaxOpenTrades4Max simultaneous trades
InpMagicNumber22214025Magic Number
InpTradeComment"Psgrowth.com Expert_14025"Trade Comment
Source Code (.mq5)Open Source
Pipsgrowth_com_EX14025.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX14025 MultiCurrencyScalper — scalps 8 major pairs on M15 with staggered RSI entries, full 12-layer stack."

#include <Trade\Trade.mqh>

input group "=== Money Management ==="
input double InpLotSize       = 0.01;       // Lot Size

input group "=== Strategy ==="
input int    InpStopLoss      = 20;         // Stop Loss (pips)
input int    InpTakeProfit    = 15;         // Take Profit (pips)
input int    InpMaxSpread     = 20;         // Max Spread (points)

input group "=== Trade Settings ==="
input int    InpMaxOpenTrades = 4;          // Max simultaneous trades
input int    InpMagicNumber   = 22214025;   // Magic Number
input string InpTradeComment  = "Psgrowth.com Expert_14025"; // Trade Comment
string symbols[] = {"EURUSD","GBPUSD","USDJPY","AUDUSD","USDCAD","USDCHF","NZDUSD","EURGBP"};
CTrade trade; datetime lastBar=0;
int OnInit() { trade.SetExpertMagicNumber(InpMagicNumber); trade.SetDeviationInPoints(20); return INIT_SUCCEEDED; }
void OnDeinit(const int r) {}
void OnTick() {
   datetime cb=iTime(symbols[0],PERIOD_M15,0);
   if(cb==lastBar) return; lastBar=cb;
   if(CountAllTrades()>=InpMaxOpenTrades) return;
   int n=ArraySize(symbols);
   for(int s=0;s<n;s++) {
      string sym=symbols[s];
      if(SymbolInfoInteger(sym,SYMBOL_SPREAD)>InpMaxSpread) continue;
      if(HasTradeOnSymbol(sym)) continue;
      int hRSI=iRSI(sym,PERIOD_M15,14,PRICE_CLOSE);
      double rsi[2]; CopyBuffer(hRSI,0,1,2,rsi);
      IndicatorRelease(hRSI);
      double ask=SymbolInfoDouble(sym,SYMBOL_ASK),bid=SymbolInfoDouble(sym,SYMBOL_BID);
      double sl=InpStopLoss*SymbolInfoDouble(sym,SYMBOL_POINT)*10,tp=InpTakeProfit*SymbolInfoDouble(sym,SYMBOL_POINT)*10;
      if(rsi[1]<30&&rsi[0]>=30) trade.Buy(InpLotSize,sym,ask,ask-sl,ask+tp,InpTradeComment+" "+sym);
      if(rsi[1]>70&&rsi[0]<=70) trade.Sell(InpLotSize,sym,bid,bid+sl,bid-tp,InpTradeComment+" "+sym);
      if(CountAllTrades()>=InpMaxOpenTrades) break;
   }
}
int  CountAllTrades() { int c=0; for(int i=PositionsTotal()-1;i>=0;i--) if(PositionGetTicket(i)>0&&PositionGetInteger(POSITION_MAGIC)==InpMagicNumber) c++; return c; }
bool HasTradeOnSymbol(string sym) { for(int i=PositionsTotal()-1;i>=0;i--) if(PositionGetTicket(i)>0&&PositionGetInteger(POSITION_MAGIC)==InpMagicNumber&&PositionGetString(POSITION_SYMBOL)==sym) return true; return false; }
//+------------------------------------------------------------------+
bool TryClose_EX14025(ulong ticket)
{
   for(int a=0; a<3; a++)
   {
      if(trade.PositionClose(ticket) &&
         (trade.ResultRetcode()==TRADE_RETCODE_DONE || trade.ResultRetcode()==TRADE_RETCODE_DONE_PARTIAL))
         return true;
      uint rc=trade.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;

Full source code available on download

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

Tags:ex14025scalperpipsgrowthfreemt5eurusdgbpusdusdjpy

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_EX14025.mq5
File Size5.6 KB
Versionv2.00
PlatformMetaTrader 5
File Type.mq5 Source
StrategyScalping
Risk LevelHigh Risk
Timeframes
M15
Currency Pairs
EURUSDGBPUSDUSDJPY
Min. Deposit$100