Pipsgrowth EX18081 TrendFollow
MT5 Expert Advisor (Open Source) · USDJPY, EURUSD, XAUUSD, XAGUSD · M1
Pipsgrowth.com EX18081 Hull_USDJPY_EA — M1 Hull MA color-change scalper with anti-chop filters, full 12-layer stack.
Overview
EX18081 is the M1 scalper of the EX18 TrendFollow family. Where its siblings like EX18075 build five-minute trend stacks and EX18079 layers Hull triplets with Gaussian bands, EX18081 is a pure M1 color-flip machine: a single Hull moving average on the chart timeframe, computed inline, painted lime when its current value sits above the previous bar's value and red when it sits below. The trade idea is brutally simple — when the Hull flips color, ride the flip until the next flip or the stop. Everything else in the file is plumbing that decides whether to let the flip through.
The Hull itself is built without any indicator handle. The UpdateHullMA() function pulls period + sqrt(period) + 5 close prices from the broker, computes a linearly weighted moving average of the first half = floor(period/2) bars and another LWMA over the full period bars, and stores 2 * WMA(half) - WMA(full) for each of the last three bars in g_hullValue[0..2]. The comment in source flags this as the simplified form: the textbook Hull would then take a third WMA of the raw values over sqrt(period) bars, but EX18081 skips that smoothing step on purpose because the slimmer line reacts faster on a one-minute chart. The price source is user-selectable through InpHullPrice (1=close, 2=open, 3=high, 4=low, 5=median, 6=typical, 7=weighted), so the same engine can be tuned from a momentum-style weighted reading down to a pure close-to-close reaction.
Direction is just g_hullValue[0] > g_hullValue[1] for bullish and the inverse for bearish, and the signal fires only on a flip — GetSignal() returns 1 when g_prevDirection != 1 && g_hullDirection == 1, returns -1 on the mirror flip, and returns 0 on every other tick. That single binary output then has to clear five independent gates in CheckMarketFilters() before OpenPosition() is allowed to run.
The first gate is ADX. With InpUseADXFilter=true (the default) and InpADXPeriod=14, the EA copies two bars of the ADX main buffer and requires the current reading to be at or above InpADXThreshold=20. A separate InpUseADXRising input, off by default, additionally requires g_lastADX > prevADX to block entries at exhaustion points where the trend is already rolling over. The second gate is the ATR volatility filter, disabled by default — when turned on, it requires the current ATR(14) to be at least InpMinATRMult=0.8 times the 50-bar ATR average, so a market that has gone to sleep relative to its own recent history gets frozen out. The third gate is the range filter, which is on by default: it averages the high-low range of the last InpRangeBars=5 closed candles and compares that average to the current ATR. A range-ATR ratio above InpRangeMaxATR=3.0 trips the ✗NEWS branch (candle bodies are too fat, probably an event release) and a ratio below InpRangeMinATR=0.15 trips the ✗CHOP branch (price is dead, every flip is noise). The fourth gate is a price-distance from Hull filter, off by default at InpMaxPriceDistATR=0; when raised, it caps how far the bid can stray from g_hullValue[0] in ATR multiples — a way to refuse entries where the candle has already sprinted away from the line. The fifth and last gate is a hard spread check: (int)SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) > InpMaxSpread immediately returns false and refuses the signal without a Print, so any tick where the broker widens past 20 points (2.0 pips on a five-digit feed) is a no-trade regardless of what the Hull is doing.
Once a signal clears all five gates, OpenPosition() sizes the trade from CalculateLot(). With InpUseAutoLot=true (the default) the lot comes from balance * 0.5% / (InpStopLoss * SYMBOL_TRADE_TICK_VALUE), floored to the symbol's lot step, and capped between the broker's min/max lot and InpMaxLotSize=5.0. The 0.5% default is the conservative end of the family; turning InpUseAutoLot off falls back to a fixed InpInitialLot=0.01. The order goes out with trade.PositionOpen(), the magic 22218081, the comment Psgrowth.com Expert_18081, and the broker's filling mode auto-detected from SYMBOL_FILLING_MODE (FOK preferred, then IOC, then RETURN).
Management runs every tick on every open position, before the new-bar logic. ManagePositions() handles two upgrade paths. The first is breakeven: once profit in points crosses InpBEStart=100, the stop is moved to openPrice + InpBEOffset * point (10 points above entry by default) — a small locked-in offset that covers spread and commission on the way out. The second is the trailing ratchet, which only activates once profit clears InpTrailStart=150 and then walks the stop to bid - InpTrailDistance * point for buys and the mirror for sells; it only ever tightens, never loosens, and it never fires before the breakeven threshold is met. Both moves go through TryModify_EX18081(), a three-attempt wrapper that retries on TRADE_RETCODE_REQUOTE, _TIMEOUT, _PRICE_OFF, and _PRICE_CHANGED with 100ms sleeps.
Two more exit paths sit on top of the bracket. CheckOppositeSignal(), gated by InpCloseOnOpposite=true, watches g_hullDirection and force-closes any open position the moment the Hull flips to the opposite color — the rationale is that the entry was a color-flip, so the original thesis is dead the moment the color flips back. CheckSwingExit() looks at the last InpSwingBars=5 closed candles and force-closes a long if the current bid prints below the lowest low in that window (or a short if the ask prints above the highest high), unless the ADX is still in a strong-trend regime above InpSwingIgnoreADX=30. The single-position cap is enforced inside the OnTick logic: buyCount == 0 for buys and sellCount == 0 for sells, so the EA never pyramids and never holds both sides. If an opposite-direction signal arrives while a position is open, the existing one is force-closed with g_closeReason = "NEW" before the new one is sent, so the position book always reads at most one ticket per symbol.
Safety is layered on top of all of that. CheckDrawdownLimits() ratchets g_equityPeak up on every tick and blocks the rest of the EA when either the daily loss from g_dailyStartBalance hits InpMaxDailyLoss=5.0% or the drawdown from peak hits InpMaxEquityLoss=10.0%. CheckTimeFilter() is off by default (InpUseTimeFilter=false) but, when enabled, blocks weekends, blocks Friday trading if InpTradeFriday=false, force-closes everything at InpFridayCloseHour=20 on Friday, and rejects ticks outside the InpStartHour=8 to InpEndHour=20 server window. UpdateDailyStats() resets g_dailyStartBalance at the first tick of each new server day so the daily loss measurement matches the broker's day boundary. The visuals are: a colored Hull line drawn as 100 OBJ_TREND segments (lime when rising, red when falling, yellow on ties), and a single-line info panel in the top-left showing the trend label, the live Hull value, the live ADX, the position counts, and the filter pass/fail string with ✓/✗ glyphs. Both are skipped during optimization and tester runs to keep the backtest fast. There is no OnTester formula in source — the EA relies on MT5's standard pass/fail statistics for genetic optimization.
For a backtest, the practical expectation is tens of trades per session day on a quiet M1 USDJPY feed and three or four times that on XAUUSD, with the bulk filtered out by the range and ADX gates. The 1:2 risk-reward (20-point stop, 40-point target) means a 45–50% win rate on a fixed-target basis is roughly the breakeven point before spread, and the swing exit can convert what would have been a stop-loss into a smaller scratch if the candles whipsaw back through. The EA does not call OnTester and does not carry a custom fitness function, so genetic optimization should be run with the standard custom-max criterion and a wide pass range over the Hull period (15 to 30) and ADX threshold (15 to 30).
Strategy Deep Dive
OnInit creates up to two indicator handles: an iATR(_Symbol, PERIOD_CURRENT, 14) handle that always runs, and an iADX(_Symbol, PERIOD_CURRENT, InpADXPeriod=14) handle created only if InpUseADXFilter or InpUseADXRising is enabled. There is no Hull indicator handle — UpdateHullMA() rebuilds the line on every tick by copying close prices, computing a linear-weighted WMA over the first floor(InpHullPeriod/2)=10 bars and another over the full 21 bars, and storing 2*WMA(10)−WMA(21) for the last three bars. Direction flips when g_hullValue[0] crosses g_hullValue[1], and GetSignal() returns 1 or -1 only on that flip. OnTick runs UpdateDailyStats → CheckDrawdownLimits → CheckTimeFilter → UpdateHullMA → ManagePositions (BE+trail) → CheckSwingExit → CheckOppositeSignal → CheckMarketFilters → GetSignal → CountPositions → OpenPosition. A flip has to clear the ADX threshold, the 5-bar range-ATR ratio (✗NEWS above 3.0x, ✗CHOP below 0.15x), the optional ATR-volatility and price-distance gates, and the hard spread cap of InpMaxSpread=20 points, and only then does the order go out. Two 3-attempt wrappers (TryClose_EX18081, TryModify_EX18081) retry on requote/timeout/price-off/price-changed with 200ms and 100ms sleeps. The 1-position cap is enforced by gating the buy or sell path on buyCount==0 / sellCount==0.
EX18081 enters on a single Hull MA color flip on the M1 chart, computed inline as 2*WMA(floor(period/2)) − WMA(period) over InpHullPeriod=21 candles with the user-selected InpHullPrice (close by default). GetSignal() returns 1 only when the previous-bar direction was not bullish and the current-bar direction is bullish; the sell mirror fires when the previous direction was not bearish and the current direction is bearish. The flip is then gated by CheckMarketFilters(): ADX(14) ≥ InpADXThreshold=20 (default enabled), 5-bar average candle range vs ATR between InpRangeMinATR=0.15 and InpRangeMaxATR=3.0 (the ✗CHOP and ✗NEWS bounds), current spread ≤ InpMaxSpread=20 points, and the optional ATR-volatility and price-distance-from-Hull filters. Only one position is held per symbol at a time, and an opposite-direction signal force-closes the existing ticket before opening the new one.
Three exit paths run alongside the bracket. The fixed InpStopLoss=20 / InpTakeProfit=40 points (a 1:2 R:R) close the trade at the broker, and InpUseTrailing=true starts a one-way ratchet at InpTrailStart=150 points profit with a InpTrailDistance=50 point trail. CheckOppositeSignal() force-closes the open position the moment the Hull flips back to the opposite color, and CheckSwingExit() force-closes a long if the bid prints below the lowest low of the last InpSwingBars=5 closed candles (mirror for shorts), unless ADX is above InpSwingIgnoreADX=30. Breakeven at InpBEStart=100 points profit moves the stop to entry+InpBEOffset points. The drawdown circuit-breaker close fires when daily loss hits InpMaxDailyLoss=5% or peak-to-trace equity loss hits InpMaxEquityLoss=10%.
Every order is opened with a hard InpStopLoss=20 points attached on the broker side, computed as price ± InpStopLoss * _Point. ManagePositions() ratchets this stop to entry+10 points once profit clears InpBEStart=100, and then to bid-50 points (or ask+50 for shorts) once profit clears InpTrailStart=150 — the ratchet only tightens, never loosens. There is no global account-level stop beyond the daily-loss and equity-peak drawdown tripwires in CheckDrawdownLimits() (5% and 10% respectively).
InpTakeProfit=40 points is sent with the order, sized as price ± 40 * _Point from the entry, for a fixed 1:2 risk-reward against the 20-point stop. The TP is a single static target at the broker — there is no partial close, no scaling out, and no basket TP. The trailing ratchet and opposite-signal exit are the only mechanisms that can close a position before the TP fills.
USDJPY or XAUUSD on M1 with a $100 minimum deposit and a $500+ balance recommended. MEDIUM risk on a low-spread ECN or RAW account (target sub-15-point spreads, because the 20-point cap sits only marginally above that) and a broker that supports FOK or IOC filling — the EA auto-picks the best mode via SYMBOL_FILLING_MODE. Best during the London 8–17 and New York 13–22 server windows when the 5-bar candle range clears the 0.15x ATR chop floor; the time filter is off by default so the trader can turn it on for those sessions or leave it open for 24/7 M1 action. Expect tens of trades per session day on JPY pairs and three to four times that on XAUUSD, with the ADX and range filters killing the bulk of the M1 noise. The 0.5% default risk is conservative for a 1:2 RR; aggressive users can switch to fixed lots after the bracket and risk profile are validated in the Strategy Tester.
Strategy Logic
Pipsgrowth EX18081 TrendFollow — Strategy Logic Analysis (from .mq5 source)
Family: TrendFollow
Magic: 22218081
Version: 2.00
BRIEF:
M1 Hull MA Color Change scalper with comprehensive market filters. Uses single timeframe Hull MA for fast scalping with anti-chop filters including ADX, Hull Separation, ATR, Range, and Swing exit. Includes BE, trailing, DD protection, and time filter. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
UpdateHullMA()GetSignal()CheckMarketFilters()OpenPosition()CalculateLot()ManagePositions()CheckSwingExit()CheckOppositeSignal()ClosePositionsByType()CountPositions()CheckTimeFilter()CloseAllPositions()- ...and 7 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (42 total across 8 groups):
- [=== Identity ===]
InpMagicNumber=22218081// Magic Number - [=== Identity ===]
InpTradeComment= "Psgrowth.com Expert_18081" // +------------------------------------------------------------------+ - [=== Risk Management ===]
InpInitialLot=0.01// FixedLot(ifAutoLot=false) - [=== Risk Management ===]
InpUseAutoLot=true// Use Dynamic Lot Sizing - [=== Risk Management ===]
InpRiskPercent=0.5// Risk % per trade - [=== Risk Management ===]
InpMaxLotSize=5.0// Max Lot Size Cap - [=== Hull MA Settings ===]
InpHullPeriod= 21 // Hull MA Period - [=== Hull MA Settings ===]
InpHullPrice= 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull Price Source - [=== Hull MA Settings ===]
InpDrawHullLine=true// Draw Hull Line on Chart - [=== Hull MA Settings ===]
InpShowInfoPanel=true// Show Info Panel - [=== Trade Settings ===]
InpStopLoss= 20 // StopLoss(points) - [=== Trade Settings ===]
InpTakeProfit= 40 // TakeProfit(points) - [=== Trade Settings ===]
InpMaxSpread= 20 // MaxSpread(points) - [=== Trade Management ===]
InpUseTrailing=true// Enable Trailing Stop - [=== Trade Management ===]
InpTrailStart= 150 // TrailStart(points profit) - [=== Trade Management ===]
InpTrailDistance= 50 // TrailDistance(points) - [=== Trade Management ===]
InpUseBreakeven=true// Enable Breakeven - [=== Trade Management ===]
InpBEStart= 100 // BEStart(points profit) - [=== Trade Management ===]
InpBEOffset= 10 // BEOffset(points above entry) - [=== Trade Management ===]
InpCloseOnOpposite=true// Close on Hull Color Change - [=== Market Filters ===]
InpUseADXFilter=true// EnableADXTrend Filter - [=== Market Filters ===]
InpADXPeriod= 14 //ADXPeriod - [=== Market Filters ===]
InpADXThreshold= 20 //ADXMin Threshold - [=== Market Filters ===]
InpUseADXRising=false// RequireADXRising(anti-exhaustion) - [=== Market Filters ===]
InpUseATRFilter=false// EnableATRVolatility Filter - [=== Market Filters ===]
InpMinATRMult=0.8// MinATRvs 50-bar Average - [=== Market Filters ===]
InpUseRangeFilter=true// Enable Candle Range Filter - [=== Market Filters ===]
InpRangeBars= 5 // Range Filter: Bars to Check - [=== Market Filters ===]
InpRangeMaxATR=3.0// Max AvgRange(ATRmult, news) - [=== Market Filters ===]
InpRangeMinATR=0.15// Min AvgRange(ATRmult, chop) - [=== Market Filters ===]
InpMaxPriceDistATR= 0 // Max Price Distance fromHull(0=off) - [=== Market Filters ===]
InpUseSwingExit=true// Enable Swing Low/High Exit - [=== Market Filters ===]
InpSwingBars= 5 // Swing Exit: N Bars to Check - [=== Market Filters ===]
InpSwingIgnoreADX= 30 // Ignore Swing Exit ifADX> (0=never) - [=== Time Filter ===]
InpUseTimeFilter=false// Enable Time Filter - [=== Time Filter ===]
InpStartHour= 8 // StartHour(Server Time) - [=== Time Filter ===]
InpEndHour= 20 // EndHour(Server Time) - [=== Time Filter ===]
InpTradeFriday=true// Trade on Friday - [=== Time Filter ===]
InpFridayCloseHour= 20 // Friday Close Hour - [=== Drawdown Protection ===]
InpUseDDProtection=true// Enable Drawdown Protection - [=== Drawdown Protection ===]
InpMaxDailyLoss=5.0// Max Daily Loss % - [=== Drawdown Protection ===]
InpMaxEquityLoss=10.0// Max Equity Loss from Peak %
// Pipsgrowth EX18081 TrendFollow — Execution Flow (from source analysis)
// Family: TrendFollow
// M1 Hull MA Color Change scalper with comprehensive market filters. Uses single timeframe Hull MA for fast scalping with anti-chop filters including ADX, Hull Separation, ATR, Range, and Swing exit. Includes BE, trailing, DD protection, and time filter. 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 an H4 or Daily chart for best results
- 7Configure EMA periods, ADX threshold, and lot size in the dialog
- 8Enable Allow Algo Trading and click OK
EA Parameters
| Parameter | Default | Description |
|---|---|---|
| InpMagicNumber | 22218081 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_18081" | +------------------------------------------------------------------+ |
| InpInitialLot | 0.01 | Fixed Lot (if AutoLot=false) |
| InpUseAutoLot | true | Use Dynamic Lot Sizing |
| InpRiskPercent | 0.5 | Risk % per trade |
| InpMaxLotSize | 5.0 | Max Lot Size Cap |
| InpHullPeriod | 21 | Hull MA Period |
| InpHullPrice | 1 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull Price Source |
| InpDrawHullLine | true | Draw Hull Line on Chart |
| InpShowInfoPanel | true | Show Info Panel |
| InpStopLoss | 20 | Stop Loss (points) |
| InpTakeProfit | 40 | Take Profit (points) |
| InpMaxSpread | 20 | Max Spread (points) |
| InpUseTrailing | true | Enable Trailing Stop |
| InpTrailStart | 150 | Trail Start (points profit) |
| InpTrailDistance | 50 | Trail Distance (points) |
| InpUseBreakeven | true | Enable Breakeven |
| InpBEStart | 100 | BE Start (points profit) |
| InpBEOffset | 10 | BE Offset (points above entry) |
| InpCloseOnOpposite | true | Close on Hull Color Change |
| InpUseADXFilter | true | Enable ADX Trend Filter |
| InpADXPeriod | 14 | ADX Period |
| InpADXThreshold | 20 | ADX Min Threshold |
| InpUseADXRising | false | Require ADX Rising (anti-exhaustion) |
| InpUseATRFilter | false | Enable ATR Volatility Filter |
| InpMinATRMult | 0.8 | Min ATR vs 50-bar Average |
| InpUseRangeFilter | true | Enable Candle Range Filter |
| InpRangeBars | 5 | Range Filter: Bars to Check |
| InpRangeMaxATR | 3.0 | Max Avg Range (ATR mult, news) |
| InpRangeMinATR | 0.15 | Min Avg Range (ATR mult, chop) |
| InpMaxPriceDistATR | 0 | Max Price Distance from Hull (0=off) |
| InpUseSwingExit | true | Enable Swing Low/High Exit |
| InpSwingBars | 5 | Swing Exit: N Bars to Check |
| InpSwingIgnoreADX | 30 | Ignore Swing Exit if ADX > (0=never) |
| InpUseTimeFilter | false | Enable Time Filter |
| InpStartHour | 8 | Start Hour (Server Time) |
| InpEndHour | 20 | End Hour (Server Time) |
| InpTradeFriday | true | Trade on Friday |
| InpFridayCloseHour | 20 | Friday Close Hour |
| InpUseDDProtection | true | Enable Drawdown Protection |
| InpMaxDailyLoss | 5.0 | Max Daily Loss % |
| InpMaxEquityLoss | 10.0 | Max Equity Loss from Peak % |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX18081 Hull_USDJPY_EA — M1 Hull MA color-change scalper with anti-chop filters, full 12-layer stack."
#include <Trade\Trade.mqh>
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_APPLIED_PRICE g_InpHullPrice = PRICE_CLOSE;
input group "=== Identity ==="
input int InpMagicNumber = 22218081; // Magic Number
input string InpTradeComment = "Psgrowth.com Expert_18081";
//+------------------------------------------------------------------+
//| 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_APPLIED_PRICE g_InpHullPrice = PRICE_CLOSE;
INPUT GROUP: Risk Management |
//+------------------------------------------------------------------+
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_APPLIED_PRICE g_InpHullPrice = PRICE_CLOSE;
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 Trend Following strategy EAs from our library
Pipsgrowth EX16080 Trend
Pipsgrowth.com EX16080 EURUSDTrendFollower — triple-EMA H4 trend follower, full 12-layer stack.
Pipsgrowth EX16081 Trend
Pipsgrowth.com EX16081 GoldTrendEA — XAUUSD H4 EMA cross with Fib targets, full 12-layer stack.
Pipsgrowth EX16033 Trend
Pipsgrowth.com EX16033 EA_Price_Action — price-action grid scalper, full 12-layer stack.
Community
Educational purposes only. Do NOT use with real money. Test on demo accounts only.