Pipsgrowth EX16106 Trend
MT5 Expert Advisor (Open Source) · XAUUSD · M5, H1
Pipsgrowth.com EX16106 HullEA — four Hull indicator trend EA with ATR risk management, full 12-layer stack.
Overview
Pipsgrowth EX16106 is a four-Hull consensus EA built on the legacy hull-averageNew indicator, packaged with composite scoring, ATR-adaptive risk controls, and an optional additional-entries stack. The four Hulls each carry their own period, divisor, MA method, price, source timeframe, flat-sensitivity, and ADX/ATR/momentum/volume/slope sub-filters, so what looks like one decision is really a 30+ parameter matrix collapsed into a single long or short vote. By default the EA demands three of four enabled Hulls agree (InpMinIndicatorsAgree=3) and the prevailing color vote must dominate the opposing color — partial agreement is not enough.
The decision pipeline on each new bar starts in RefreshHullData(). It walks the four enabled handles, copies buffer 0 (Hull value) and buffer 1 (color) for both the signal bar and the bar before, and stores the four values plus the four colors. EvaluateSignal() then counts bullish colors (1) and bearish colors (2) across the active set, gates the count against InpMinIndicatorsAgree, and optionally checks IsMonotonicOrder() to confirm the Hull values are stacked in trend order when InpRequireHullAlignment=true. The result is HULL_SIGNAL_BUY, HULL_SIGNAL_SELL, or HULL_SIGNAL_NONE. The signal bar itself is offset by InpSignalBarShift (default 1, the just-closed bar) so the EA never acts on an in-progress candle.
Each Hull is a hull-averageNew instance with its own settings. Hull #1 runs on period 160 with divisor 17.6, an EMA basis, a flat-sensitivity of 10.5 points, an ADX filter at 26.0 on a 100-bar lookback, a momentum threshold of 16.5 points over 5 bars, and an ATR filter at 1.5× ATR(14) plus a 50-bar Z-score minimum of 1.0 and a slope-percentile gate of 70. Hull #2 shares the 160 period but uses a tighter 9.8 divisor, no ADX filter, and a higher 34-point momentum threshold. Hulls #3 and #4 follow the same scaffold with their own knobs, all pre-grouped in the inputs panel. The composite score is opt-in per Hull: it weights ADX × ATR × momentum (and optionally volume) and only counts a vote when the weighted score clears the configured minimum. When the composite is disabled the Hull contributes a raw color vote.
Position management runs on a static 300 / 300 stop / target grid by default — a clean 1:1 R:R. Both legs can be replaced with ATR-driven values by enabling InpUseAtrStopLoss (1.5× ATR(14)) or InpUseAtrTakeProfit (3.0× ATR(14)) in the ATR-based Risk Management group. DetermineStopLossPoints() and DetermineTakeProfitPoints() pull ATR in points via GetAtrPoints(), multiply by the configured coefficient, and fall back to the static 300 when the ATR handle fails to load. The trailing logic in ApplyTrailingStop() only kicks in after the position is 150 points in profit, then drags the stop 210 points behind price on every favorable tick using TryModify_EX16106() (3 retries, 100ms between attempts on requote/timeout).
The additional-entries stack is an opt-in feature. When InpEnableAdditionalEntries=true and the open position of the same direction is already 20 points in profit (gated by AllPositionsProfitBy() and InpAdditionalEntryProfitPoints), and at least InpMinHullAgreement (default 2) Hulls agree on the side, the EA opens a stacked entry with comment Add#<index>. GetNextAdditionalIndex() walks the existing comments to find the next free index. InpMaxPositionsPerDirection is the cap (0 = unlimited). This is a controlled, signal-gated add — not a martingale — but the EA does not average down into a loss; the 20-point minimum-profit gate keeps entries on the right side of the move.
The exit logic has two paths. The first is the static/ATR stop and target. The second is HandleOppositeClose(): when the consensus flips to the opposing color, the EA closes profitable open positions in the old direction (gated by InpMinIndicatorsAgreeCloseProfit=1 and InpCloseProfitPoints=0 so any profit qualifies). With InpCloseOnOppositeEvenIfInLose=true it will also cut losing trades when the opposing consensus is strong enough. Position changes are routed through TryClose_EX16106(), which retries 3 times with 200ms between attempts on requotes, timeouts, and price-change events.
The chart gets all four Hull indicators attached as visual panels through AttachHullIndicator() and ChartIndicatorAdd(), so you can see the colors flipping alongside the EA's decisions. The risk layer is the static SL/TP grid plus the spread filter (25 points maximum by default, enforced by IsSpreadAcceptable()) and the new-bar gate (NeedProcessTick()) that prevents intra-bar signal evaluation. There is no daily-drawdown cap, no equity-curve filter, no correlation check, and no news blackout — the risk surface is exactly the SL/TP grid plus the trailing ratchet. On a $100 minimum deposit with 0.01 lots, a 300-point loss on XAUUSD is roughly $3 — sized to fit inside the recommended minimum. The EA runs cleanly on M5 and H1 across FX majors and gold/metals per the header note.
The position-side bookkeeping is intentionally simple. CountPositionsByType() scans PositionsTotal(), filters by magic (InpMagicNumber=22216106) and by the current symbol, and returns the buy or sell count. ClosePositionsByType() collects the matching tickets into an array and walks them through TryClose_EX16106() one at a time so a single broker rejection cannot strand the other closes. CalculateVolume() takes the SL in points and either returns the fixed InpLots (default 0.01) or, when InpUseRiskPercentage is on, computes a balance-proportional size from SYMBOL_TRADE_TICK_VALUE and SYMBOL_TRADE_TICK_SIZE so 1% of equity rides the configured stop. NormalizeVolume() snaps the result to the symbol's lot step, clamps to min/max, and rounds the digits per the broker's lot precision before OpenPosition() submits. The trade object is configured with SetExpertMagicNumber(InpMagicNumber) and a 10-point deviation cap in OnInit, so the magic stays pinned even across reloads.
What separates EX16106 from a vanilla four-Hull crossover is the depth of the composite sub-scoring. Each Hull's vote is not just a color check; the indicator returns a value, a flat-state flag, and a weighted score that the EA can use to suppress votes that are barely threshold-meeting. With all four Hulls enabled and composite scoring active, the effective vote count is a four-dimensional dot product against your ADX/ATR/momentum/volume weights, so the consensus you see on the chart is the surface result of a much noisier decision underneath. The 167 inputs grouped in the panel are not all meant to be touched — the ATR-based Risk Management group and the Additional Entries group are deliberately off by default so the EA behaves as a clean 1:1 trend follower until you opt into the heavier modes.
Strategy Deep Dive
On every new bar, RefreshHullData() pulls the current and previous value and color of four hull-averageNew instances, each parameterized with its own period, divisor, MA method, source timeframe, and ADX/ATR/momentum/volume/slope sub-filters. EvaluateSignal() counts bullish versus bearish color votes across the active set and demands at least InpMinIndicatorsAgree (default 3) dominate the opposing side, optionally checking IsMonotonicOrder() to confirm the Hull values are stacked in trend order. Once consensus resolves to long or short, OpenPosition() routes the entry through g_trade.Buy() or g_trade.Sell() with a static 300/300 SL/TP or, when ATR mode is enabled, with DetermineStopLossPoints() returning 1.5x ATR(14) and DetermineTakeProfitPoints() returning 3.0x ATR(14). HandleOppositeClose() watches the consensus on every tick: when the opposing color vote reaches the configured close threshold, it liquidates open positions of the old direction, only cutting losing trades when InpCloseOnOppositeEvenIfInLose is true. ApplyTrailingStop() ratchets the stop 210 points behind price after the position is 150 points in profit, retrying on requotes through TryModify_EX16106().
Long entry fires when at least 3 of 4 enabled Hull indicators (hull-averageNew) print a bullish color (1) on the just-closed bar AND bearish colors do not match the threshold, optionally gated by monotonic ordering. Mirror logic for short. Additional entries stack on the same direction when the existing position is 20+ points in profit and at least 2 Hulls agree.
Exits run on the static 300-point stop and 300-point target by default, or on the optional ATR-based 1.5x/3.0x multiples when enabled. Opposite-direction consensus closes profitable positions (1 opposing Hull is enough), and can also cut losing trades when InpCloseOnOppositeEvenIfInLose is true. Trailing ratchets stop 210 points behind price after 150 points in profit.
Static 300-point stop loss by default (InpStopLossPoints). Optional ATR-based stop loss replaces it with 1.5x ATR(14) points when InpUseAtrStopLoss is enabled, falling back to the static value if the ATR handle fails to load.
Static 300-point take profit by default (InpTakeProfitPoints), giving a 1:1 risk-reward with the matching stop. Optional ATR-based target at 3.0x ATR(14) when InpUseAtrTakeProfit is enabled.
Recommended for XAUUSD on M5 with a $100 minimum account and 0.01 lot sizing. Best paired with a low-spread ECN broker (the 25-point spread filter assumes execution under typical gold conditions). The London and New York sessions provide the cleanest Hull trends for gold, with the additional-entries stack sized to ride clean directional moves rather than choppy ranges. The static 1:1 grid and tight trailing ratchet make it a fit for traders who want an explicit stop/target framework rather than a discretionary exit.
Strategy Logic
Pipsgrowth EX16106 Trend — Strategy Logic Analysis (from .mq5 source)
Family: Trend
Magic: 22216106
Version: 2.00
BRIEF:
Hull EA trades using four Hull indicators with ATR-based risk management, additional entries and multi-filter confirmation. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
CreateHullHandle()ReleaseHullHandles()AttachHullIndicator()DetachHullIndicator()CreateAtrHandle()ReleaseAtrHandles()GetAtrPoints()DetermineStopLossPoints()DetermineTakeProfitPoints()CountPositionsByType()ClosePositionsByType()AllPositionsProfitBy()- ...and 17 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (167 total across 8 groups):
- []
InpAllowBuy=true// Allow buy trades - []
InpAllowSell=true// Allow sell trades - []
InpHullTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)// Indicator timeframe - []
InpUseNewBarSignals=true// Evaluate signals on new bar only - []
InpTrailingStepPoints=210.0// Trailing step (points) - []
InpTrailingStartPoints=150.0// Trailing start (points) - []
InpStopLossPoints=300.0// Static stop loss (points) - []
InpTakeProfitPoints=300.0// Static take profit (points) - []
InpMaxSpreadPoints=25.0// Maximum spread allowed (points) - []
InpLots=0.01// Fixed lot size - []
InpUseRiskPercentage=false// Use risk percentage for lot sizing - []
InpRiskPercentage=1.0// Risk percentage of balance - []
InpEnableDebugLogging=false// Enable debug logging - []
InpRequireHullAlignment=false// Require hull values to be aligned - []
InpMagicNumber=22216106// Magic number - []
InpTradeComment= "Psgrowth.com Expert_16106" // Trade comment - [===
ATR-based Risk Management ===]InpUseAtrStopLoss=false// UseATR-based stop loss - [===
ATR-based Risk Management ===]InpAtrStopLossTf= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)//ATRstop-loss timeframe - [===
ATR-based Risk Management ===]InpAtrStopLossPeriod= 14 //ATRstop-loss period - [===
ATR-based Risk Management ===]InpAtrStopLossMultiplier=1.5//ATRstop-loss multiplier - [===
ATR-based Risk Management ===]InpUseAtrTakeProfit=false// UseATR-based take profit - [===
ATR-based Risk Management ===]InpAtrTakeProfitTf= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)//ATRtake-profit timeframe - [===
ATR-based Risk Management ===]InpAtrTakeProfitPeriod= 14 //ATRtake-profit period - [===
ATR-based Risk Management ===]InpAtrTakeProfitMultiplier=3.0//ATRtake-profit multiplier - [=== Additional Entries ===]
InpEnableAdditionalEntries=false// Allow additional entries - [=== Additional Entries ===]
InpMinHullAgreement= 2 // Minimum agreeing Hull indicators - [=== Additional Entries ===]
InpMaxPositionsPerDirection= 0 // Max open positions per direction (0 = unlimited) - [=== Additional Entries ===]
InpAdditionalEntryProfitPoints=20.0// Required profit per existing position (points) - [=== Signal Settings ===]
InpSignalBarShift= 1 // Signal bar shift (0=current,1=closed) - [=== Signal Settings ===]
InpMinIndicatorsAgree= 3 // Minimum Hulls agreeing - [=== Signal Settings ===]
InpCloseOnOpposite=true// Close trades on opposite agreement if in profit - [=== Signal Settings ===]
InpMinIndicatorsAgreeCloseProfit= 1 // Minimum Hulls to close in profit - [=== Signal Settings ===]
InpCloseProfitPoints=0.0// Minimum profit (points) to close on opposite - [=== Signal Settings ===]
InpCloseOnOppositeEvenIfInLose=false// Close trades on opposite agreement even if losing - [=== Signal Settings ===]
InpMinIndicatorsAgreeCloseLoss= 1 // Minimum Hulls to close even if losing - [=== Hull #1 Indicator ===]
InpHull1Enabled=true// Enable Hull #1 - [=== Hull #1 Indicator ===]
InpHull1Period= 160 // Hull #1 period - [=== Hull #1 Indicator ===]
InpHull1Divisor=17.6// Hull #1 divisor (speed) - [=== Hull #1 Indicator ===]
InpHull1Price= 5 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #1 price - [=== Hull #1 Indicator ===]
InpHull1Method=MODE_EMA// Hull #1 MA method - [=== Hull #1 Indicator ===]
InpHull1Timeframe= 7 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1 source timeframe - [=== Hull #1 Indicator ===]
InpHull1FlatSensitivity=10.5// Hull #1 flat sensitivity (points) - [=== Hull #1 Indicator ===]
InpHull1FlatBars= 3 // Hull #1 flat bars - [=== Hull #1 Indicator ===]
InpHull1UseAdxFilter=true// Hull #1 useADXfilter - [=== Hull #1 Indicator ===]
InpHull1AdxTimeframe= 5 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1ADXtimeframe - [=== Hull #1 Indicator ===]
InpHull1AdxPeriod= 20 // Hull #1ADXperiod - [=== Hull #1 Indicator ===]
InpHull1AdxThreshold=26.0// Hull #1ADXthreshold - [=== Hull #1 Indicator ===]
InpHull1MomentumLookback= 5 // Hull #1 momentum lookback - [=== Hull #1 Indicator ===]
InpHull1MomentumPoints=16.5// Hull #1 momentum threshold (points) - [=== Hull #1 Indicator ===]
InpHull1UseAtrFilter=true// Hull #1 useATRfilter - [=== Hull #1 Indicator ===]
InpHull1AtrTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1ATRtimeframe - [=== Hull #1 Indicator ===]
InpHull1AtrPeriod= 14 // Hull #1ATRperiod - [=== Hull #1 Indicator ===]
InpHull1AtrMultiplier=1.5// Hull #1ATRmultiplier (points) - [=== Hull #1 Indicator ===]
InpHull1SlopePoints=0.0// Hull #1 slope threshold (points) - [=== Hull #1 Indicator ===]
InpHull1AtrZScoreLookback= 50 // Hull #1ATRZ-score lookback - [=== Hull #1 Indicator ===]
InpHull1AtrZScoreMinimum=1.0// Hull #1ATRZ-score minimum - [=== Hull #1 Indicator ===]
InpHull1SlopePercentLookback= 50 // Hull #1 slope percentile lookback - [=== Hull #1 Indicator ===]
InpHull1SlopePercentile=70.0// Hull #1 slope percentile - [=== Hull #1 Indicator ===]
InpHull1UseCompositeScore=true// Hull #1 use composite score - [=== Hull #1 Indicator ===]
InpHull1CompositeWeightAdx=1.0// Hull #1 composite weightADX - [=== Hull #1 Indicator ===]
InpHull1CompositeWeightAtr=1.0// Hull #1 composite weightATR - [=== Hull #1 Indicator ===]
InpHull1CompositeWeightMomentum=1.0// Hull #1 composite weight momentum - [=== Hull #1 Indicator ===]
InpHull1CompositeMinScore=1.0// Hull #1 composite minimum score - [=== Hull #1 Indicator ===]
InpHull1UseVolumeFilter=true// Hull #1 use volume filter - [=== Hull #1 Indicator ===]
InpHull1UseRealVolume=false// Hull #1 use real volume - [=== Hull #1 Indicator ===]
InpHull1VolumeLookback= 50 // Hull #1 volume lookback - [=== Hull #1 Indicator ===]
InpHull1VolumePercentile=70.0// Hull #1 volume percentile - [=== Hull #1 Indicator ===]
InpHull1CompositeWeightVolume=0.0// Hull #1 composite weight volume - [=== Hull #2 Indicator ===]
InpHull2Enabled=true// Enable Hull #2 - [=== Hull #2 Indicator ===]
InpHull2Period= 160 // Hull #2 period - [=== Hull #2 Indicator ===]
InpHull2Divisor=9.8// Hull #2 divisor (speed) - [=== Hull #2 Indicator ===]
InpHull2Price= 7 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #2 price - [=== Hull #2 Indicator ===]
InpHull2Method=MODE_EMA// Hull #2 MA method - [=== Hull #2 Indicator ===]
InpHull2Timeframe= 7 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2 source timeframe - [=== Hull #2 Indicator ===]
InpHull2FlatSensitivity=3.0// Hull #2 flat sensitivity (points) - [=== Hull #2 Indicator ===]
InpHull2FlatBars= 21 // Hull #2 flat bars - [=== Hull #2 Indicator ===]
InpHull2UseAdxFilter=false// Hull #2 useADXfilter - [=== Hull #2 Indicator ===]
InpHull2AdxTimeframe= 7 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2ADXtimeframe - [=== Hull #2 Indicator ===]
InpHull2AdxPeriod= 100 // Hull #2ADXperiod - [=== Hull #2 Indicator ===]
InpHull2AdxThreshold=60.0// Hull #2ADXthreshold - [=== Hull #2 Indicator ===]
InpHull2MomentumLookback= 50 // Hull #2 momentum lookback - [=== Hull #2 Indicator ===]
InpHull2MomentumPoints=34.0// Hull #2 momentum threshold (points) - [=== Hull #2 Indicator ===]
InpHull2UseAtrFilter=false// Hull #2 useATRfilter - [=== Hull #2 Indicator ===]
InpHull2AtrTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2ATRtimeframe - [=== Hull #2 Indicator ===]
InpHull2AtrPeriod= 14 // Hull #2ATRperiod - [=== Hull #2 Indicator ===]
InpHull2AtrMultiplier=1.5// Hull #2ATRmultiplier (points) - [=== Hull #2 Indicator ===]
InpHull2SlopePoints=0.0// Hull #2 slope threshold (points) - [=== Hull #2 Indicator ===]
InpHull2AtrZScoreLookback= 50 // Hull #2ATRZ-score lookback - [=== Hull #2 Indicator ===]
InpHull2AtrZScoreMinimum=1.0// Hull #2ATRZ-score minimum - [=== Hull #2 Indicator ===]
InpHull2SlopePercentLookback= 50 // Hull #2 slope percentile lookback - [=== Hull #2 Indicator ===]
InpHull2SlopePercentile=70.0// Hull #2 slope percentile - [=== Hull #2 Indicator ===]
InpHull2UseCompositeScore=false// Hull #2 use composite score - [=== Hull #2 Indicator ===]
InpHull2CompositeWeightAdx=1.0// Hull #2 composite weightADX - [=== Hull #2 Indicator ===]
InpHull2CompositeWeightAtr=1.0// Hull #2 composite weightATR - [=== Hull #2 Indicator ===]
InpHull2CompositeWeightMomentum=1.0// Hull #2 composite weight momentum - [=== Hull #2 Indicator ===]
InpHull2CompositeMinScore=1.0// Hull #2 composite minimum score - [=== Hull #2 Indicator ===]
InpHull2UseVolumeFilter=false// Hull #2 use volume filter - [=== Hull #2 Indicator ===]
InpHull2UseRealVolume=false// Hull #2 use real volume - [=== Hull #2 Indicator ===]
InpHull2VolumeLookback= 50 // Hull #2 volume lookback - [=== Hull #2 Indicator ===]
InpHull2VolumePercentile=70.0// Hull #2 volume percentile - [=== Hull #2 Indicator ===]
InpHull2CompositeWeightVolume=0.0// Hull #2 composite weight volume - [=== Hull #3 Indicator ===]
InpHull3Enabled=true// Enable Hull #3 - [=== Hull #3 Indicator ===]
InpHull3Period= 245 // Hull #3 period - [=== Hull #3 Indicator ===]
InpHull3Divisor=12.2// Hull #3 divisor (speed) - [=== Hull #3 Indicator ===]
InpHull3Price= 6 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #3 price - [=== Hull #3 Indicator ===]
InpHull3Method=MODE_SMMA// Hull #3 MA method - [=== Hull #3 Indicator ===]
InpHull3Timeframe= 7 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3 source timeframe - [=== Hull #3 Indicator ===]
InpHull3FlatSensitivity=29.7// Hull #3 flat sensitivity (points) - [=== Hull #3 Indicator ===]
InpHull3FlatBars= 10 // Hull #3 flat bars - [=== Hull #3 Indicator ===]
InpHull3UseAdxFilter=false// Hull #3 useADXfilter - [=== Hull #3 Indicator ===]
InpHull3AdxTimeframe= 7 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3ADXtimeframe - [=== Hull #3 Indicator ===]
InpHull3AdxPeriod= 55 // Hull #3ADXperiod - [=== Hull #3 Indicator ===]
InpHull3AdxThreshold=28.0// Hull #3ADXthreshold - [=== Hull #3 Indicator ===]
InpHull3MomentumLookback= 21 // Hull #3 momentum lookback - [=== Hull #3 Indicator ===]
InpHull3MomentumPoints=47.0// Hull #3 momentum threshold (points) - [=== Hull #3 Indicator ===]
InpHull3UseAtrFilter=false// Hull #3 useATRfilter - [=== Hull #3 Indicator ===]
InpHull3AtrTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3ATRtimeframe - [=== Hull #3 Indicator ===]
InpHull3AtrPeriod= 14 // Hull #3ATRperiod - [=== Hull #3 Indicator ===]
InpHull3AtrMultiplier=1.5// Hull #3ATRmultiplier (points) - [=== Hull #3 Indicator ===]
InpHull3SlopePoints=0.0// Hull #3 slope threshold (points) - [=== Hull #3 Indicator ===]
InpHull3AtrZScoreLookback= 50 // Hull #3ATRZ-score lookback - [=== Hull #3 Indicator ===]
InpHull3AtrZScoreMinimum=1.0// Hull #3ATRZ-score minimum - [=== Hull #3 Indicator ===]
InpHull3SlopePercentLookback= 50 // Hull #3 slope percentile lookback - [=== Hull #3 Indicator ===]
InpHull3SlopePercentile=70.0// Hull #3 slope percentile - [=== Hull #3 Indicator ===]
InpHull3UseCompositeScore=false// Hull #3 use composite score - [=== Hull #3 Indicator ===]
InpHull3CompositeWeightAdx=1.0// Hull #3 composite weightADX - [=== Hull #3 Indicator ===]
InpHull3CompositeWeightAtr=1.0// Hull #3 composite weightATR - [=== Hull #3 Indicator ===]
InpHull3CompositeWeightMomentum=1.0// Hull #3 composite weight momentum - [=== Hull #3 Indicator ===]
InpHull3CompositeMinScore=1.0// Hull #3 composite minimum score - [=== Hull #3 Indicator ===]
InpHull3UseVolumeFilter=false// Hull #3 use volume filter - [=== Hull #3 Indicator ===]
InpHull3UseRealVolume=false// Hull #3 use real volume - [=== Hull #3 Indicator ===]
InpHull3VolumeLookback= 50 // Hull #3 volume lookback - [=== Hull #3 Indicator ===]
InpHull3VolumePercentile=70.0// Hull #3 volume percentile - [=== Hull #3 Indicator ===]
InpHull3CompositeWeightVolume=0.0// Hull #3 composite weight volume - [=== Hull #4 Indicator ===]
InpHull4Enabled=false// Enable Hull #4 - [=== Hull #4 Indicator ===]
InpHull4Period= 536 // Hull #4 period - [=== Hull #4 Indicator ===]
InpHull4Divisor=2.0// Hull #4 divisor (speed) - [=== Hull #4 Indicator ===]
InpHull4Price= 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #4 price - [=== Hull #4 Indicator ===]
InpHull4Method=MODE_LWMA// Hull #4 MA method - [=== Hull #4 Indicator ===]
InpHull4Timeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4 source timeframe - [=== Hull #4 Indicator ===]
InpHull4FlatSensitivity=3.0// Hull #4 flat sensitivity (points) - [=== Hull #4 Indicator ===]
InpHull4FlatBars= 3 // Hull #4 flat bars - [=== Hull #4 Indicator ===]
InpHull4UseAdxFilter=false// Hull #4 useADXfilter - [=== Hull #4 Indicator ===]
InpHull4AdxTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4ADXtimeframe - [=== Hull #4 Indicator ===]
InpHull4AdxPeriod= 14 // Hull #4ADXperiod - [=== Hull #4 Indicator ===]
InpHull4AdxThreshold=20.0// Hull #4ADXthreshold - [=== Hull #4 Indicator ===]
InpHull4MomentumLookback= 5 // Hull #4 momentum lookback - [=== Hull #4 Indicator ===]
InpHull4MomentumPoints=5.0// Hull #4 momentum threshold (points) - [=== Hull #4 Indicator ===]
InpHull4UseAtrFilter=false// Hull #4 useATRfilter - [=== Hull #4 Indicator ===]
InpHull4AtrTimeframe= 0 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4ATRtimeframe - [=== Hull #4 Indicator ===]
InpHull4AtrPeriod= 14 // Hull #4ATRperiod - [=== Hull #4 Indicator ===]
InpHull4AtrMultiplier=1.5// Hull #4ATRmultiplier (points) - [=== Hull #4 Indicator ===]
InpHull4SlopePoints=0.0// Hull #4 slope threshold (points) - [=== Hull #4 Indicator ===]
InpHull4AtrZScoreLookback= 50 // Hull #4ATRZ-score lookback - [=== Hull #4 Indicator ===]
InpHull4AtrZScoreMinimum=1.0// Hull #4ATRZ-score minimum - [=== Hull #4 Indicator ===]
InpHull4SlopePercentLookback= 50 // Hull #4 slope percentile lookback - [=== Hull #4 Indicator ===]
InpHull4SlopePercentile=70.0// Hull #4 slope percentile - [=== Hull #4 Indicator ===]
InpHull4UseCompositeScore=false// Hull #4 use composite score - [=== Hull #4 Indicator ===]
InpHull4CompositeWeightAdx=1.0// Hull #4 composite weightADX - [=== Hull #4 Indicator ===]
InpHull4CompositeWeightAtr=1.0// Hull #4 composite weightATR - [=== Hull #4 Indicator ===]
InpHull4CompositeWeightMomentum=1.0// Hull #4 composite weight momentum - [=== Hull #4 Indicator ===]
InpHull4CompositeMinScore=1.0// Hull #4 composite minimum score - [=== Hull #4 Indicator ===]
InpHull4UseVolumeFilter=false// Hull #4 use volume filter - [=== Hull #4 Indicator ===]
InpHull4UseRealVolume=false// Hull #4 use real volume - [=== Hull #4 Indicator ===]
InpHull4VolumeLookback= 50 // Hull #4 volume lookback - [=== Hull #4 Indicator ===]
InpHull4VolumePercentile=70.0// Hull #4 volume percentile - [=== Hull #4 Indicator ===]
InpHull4CompositeWeightVolume=0.0// Hull #4 composite weight volume
// Pipsgrowth EX16106 Trend — Execution Flow (from source analysis)
// Family: Trend
// Hull EA trades using four Hull indicators with ATR-based risk management, additional entries and multi-filter confirmation. 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 |
|---|---|---|
| InpAllowBuy | true | Allow buy trades |
| InpAllowSell | true | Allow sell trades |
| InpHullTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)// Indicator timeframe |
| InpUseNewBarSignals | true | Evaluate signals on new bar only |
| InpTrailingStepPoints | 210.0 | Trailing step (points) |
| InpTrailingStartPoints | 150.0 | Trailing start (points) |
| InpStopLossPoints | 300.0 | Static stop loss (points) |
| InpTakeProfitPoints | 300.0 | Static take profit (points) |
| InpMaxSpreadPoints | 25.0 | Maximum spread allowed (points) |
| InpLots | 0.01 | Fixed lot size |
| InpUseRiskPercentage | false | Use risk percentage for lot sizing |
| InpRiskPercentage | 1.0 | Risk percentage of balance |
| InpEnableDebugLogging | false | Enable debug logging |
| InpRequireHullAlignment | false | Require hull values to be aligned |
| InpMagicNumber | 22216106 | Magic number |
| InpTradeComment | "Psgrowth.com Expert_16106" | Trade comment |
| InpUseAtrStopLoss | false | Use ATR-based stop loss |
| InpAtrStopLossTf | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)// ATR stop-loss timeframe |
| InpAtrStopLossPeriod | 14 | ATR stop-loss period |
| InpAtrStopLossMultiplier | 1.5 | ATR stop-loss multiplier |
| InpUseAtrTakeProfit | false | Use ATR-based take profit |
| InpAtrTakeProfitTf | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)// ATR take-profit timeframe |
| InpAtrTakeProfitPeriod | 14 | ATR take-profit period |
| InpAtrTakeProfitMultiplier | 3.0 | ATR take-profit multiplier |
| InpEnableAdditionalEntries | false | Allow additional entries |
| InpMinHullAgreement | 2 | Minimum agreeing Hull indicators |
| InpMaxPositionsPerDirection | 0 | Max open positions per direction (0 = unlimited) |
| InpAdditionalEntryProfitPoints | 20.0 | Required profit per existing position (points) |
| InpSignalBarShift | 1 | Signal bar shift (0=current,1=closed) |
| InpMinIndicatorsAgree | 3 | Minimum Hulls agreeing |
| InpCloseOnOpposite | true | Close trades on opposite agreement if in profit |
| InpMinIndicatorsAgreeCloseProfit | 1 | Minimum Hulls to close in profit |
| InpCloseProfitPoints | 0.0 | Minimum profit (points) to close on opposite |
| InpCloseOnOppositeEvenIfInLose | false | Close trades on opposite agreement even if losing |
| InpMinIndicatorsAgreeCloseLoss | 1 | Minimum Hulls to close even if losing |
| InpHull1Enabled | true | Enable Hull #1 |
| InpHull1Period | 160 | Hull #1 period |
| InpHull1Divisor | 17.6 | Hull #1 divisor (speed) |
| InpHull1Price | 5 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #1 price |
| InpHull1Method | MODE_EMA | Hull #1 MA method |
| InpHull1Timeframe | 7 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1 source timeframe |
| InpHull1FlatSensitivity | 10.5 | Hull #1 flat sensitivity (points) |
| InpHull1FlatBars | 3 | Hull #1 flat bars |
| InpHull1UseAdxFilter | true | Hull #1 use ADX filter |
| InpHull1AdxTimeframe | 5 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1 ADX timeframe |
| InpHull1AdxPeriod | 20 | Hull #1 ADX period |
| InpHull1AdxThreshold | 26.0 | Hull #1 ADX threshold |
| InpHull1MomentumLookback | 5 | Hull #1 momentum lookback |
| InpHull1MomentumPoints | 16.5 | Hull #1 momentum threshold (points) |
| InpHull1UseAtrFilter | true | Hull #1 use ATR filter |
| InpHull1AtrTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #1 ATR timeframe |
| InpHull1AtrPeriod | 14 | Hull #1 ATR period |
| InpHull1AtrMultiplier | 1.5 | Hull #1 ATR multiplier (points) |
| InpHull1SlopePoints | 0.0 | Hull #1 slope threshold (points) |
| InpHull1AtrZScoreLookback | 50 | Hull #1 ATR Z-score lookback |
| InpHull1AtrZScoreMinimum | 1.0 | Hull #1 ATR Z-score minimum |
| InpHull1SlopePercentLookback | 50 | Hull #1 slope percentile lookback |
| InpHull1SlopePercentile | 70.0 | Hull #1 slope percentile |
| InpHull1UseCompositeScore | true | Hull #1 use composite score |
| InpHull1CompositeWeightAdx | 1.0 | Hull #1 composite weight ADX |
| InpHull1CompositeWeightAtr | 1.0 | Hull #1 composite weight ATR |
| InpHull1CompositeWeightMomentum | 1.0 | Hull #1 composite weight momentum |
| InpHull1CompositeMinScore | 1.0 | Hull #1 composite minimum score |
| InpHull1UseVolumeFilter | true | Hull #1 use volume filter |
| InpHull1UseRealVolume | false | Hull #1 use real volume |
| InpHull1VolumeLookback | 50 | Hull #1 volume lookback |
| InpHull1VolumePercentile | 70.0 | Hull #1 volume percentile |
| InpHull1CompositeWeightVolume | 0.0 | Hull #1 composite weight volume |
| InpHull2Enabled | true | Enable Hull #2 |
| InpHull2Period | 160 | Hull #2 period |
| InpHull2Divisor | 9.8 | Hull #2 divisor (speed) |
| InpHull2Price | 7 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #2 price |
| InpHull2Method | MODE_EMA | Hull #2 MA method |
| InpHull2Timeframe | 7 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2 source timeframe |
| InpHull2FlatSensitivity | 3.0 | Hull #2 flat sensitivity (points) |
| InpHull2FlatBars | 21 | Hull #2 flat bars |
| InpHull2UseAdxFilter | false | Hull #2 use ADX filter |
| InpHull2AdxTimeframe | 7 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2 ADX timeframe |
| InpHull2AdxPeriod | 100 | Hull #2 ADX period |
| InpHull2AdxThreshold | 60.0 | Hull #2 ADX threshold |
| InpHull2MomentumLookback | 50 | Hull #2 momentum lookback |
| InpHull2MomentumPoints | 34.0 | Hull #2 momentum threshold (points) |
| InpHull2UseAtrFilter | false | Hull #2 use ATR filter |
| InpHull2AtrTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #2 ATR timeframe |
| InpHull2AtrPeriod | 14 | Hull #2 ATR period |
| InpHull2AtrMultiplier | 1.5 | Hull #2 ATR multiplier (points) |
| InpHull2SlopePoints | 0.0 | Hull #2 slope threshold (points) |
| InpHull2AtrZScoreLookback | 50 | Hull #2 ATR Z-score lookback |
| InpHull2AtrZScoreMinimum | 1.0 | Hull #2 ATR Z-score minimum |
| InpHull2SlopePercentLookback | 50 | Hull #2 slope percentile lookback |
| InpHull2SlopePercentile | 70.0 | Hull #2 slope percentile |
| InpHull2UseCompositeScore | false | Hull #2 use composite score |
| InpHull2CompositeWeightAdx | 1.0 | Hull #2 composite weight ADX |
| InpHull2CompositeWeightAtr | 1.0 | Hull #2 composite weight ATR |
| InpHull2CompositeWeightMomentum | 1.0 | Hull #2 composite weight momentum |
| InpHull2CompositeMinScore | 1.0 | Hull #2 composite minimum score |
| InpHull2UseVolumeFilter | false | Hull #2 use volume filter |
| InpHull2UseRealVolume | false | Hull #2 use real volume |
| InpHull2VolumeLookback | 50 | Hull #2 volume lookback |
| InpHull2VolumePercentile | 70.0 | Hull #2 volume percentile |
| InpHull2CompositeWeightVolume | 0.0 | Hull #2 composite weight volume |
| InpHull3Enabled | true | Enable Hull #3 |
| InpHull3Period | 245 | Hull #3 period |
| InpHull3Divisor | 12.2 | Hull #3 divisor (speed) |
| InpHull3Price | 6 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #3 price |
| InpHull3Method | MODE_SMMA | Hull #3 MA method |
| InpHull3Timeframe | 7 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3 source timeframe |
| InpHull3FlatSensitivity | 29.7 | Hull #3 flat sensitivity (points) |
| InpHull3FlatBars | 10 | Hull #3 flat bars |
| InpHull3UseAdxFilter | false | Hull #3 use ADX filter |
| InpHull3AdxTimeframe | 7 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3 ADX timeframe |
| InpHull3AdxPeriod | 55 | Hull #3 ADX period |
| InpHull3AdxThreshold | 28.0 | Hull #3 ADX threshold |
| InpHull3MomentumLookback | 21 | Hull #3 momentum lookback |
| InpHull3MomentumPoints | 47.0 | Hull #3 momentum threshold (points) |
| InpHull3UseAtrFilter | false | Hull #3 use ATR filter |
| InpHull3AtrTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #3 ATR timeframe |
| InpHull3AtrPeriod | 14 | Hull #3 ATR period |
| InpHull3AtrMultiplier | 1.5 | Hull #3 ATR multiplier (points) |
| InpHull3SlopePoints | 0.0 | Hull #3 slope threshold (points) |
| InpHull3AtrZScoreLookback | 50 | Hull #3 ATR Z-score lookback |
| InpHull3AtrZScoreMinimum | 1.0 | Hull #3 ATR Z-score minimum |
| InpHull3SlopePercentLookback | 50 | Hull #3 slope percentile lookback |
| InpHull3SlopePercentile | 70.0 | Hull #3 slope percentile |
| InpHull3UseCompositeScore | false | Hull #3 use composite score |
| InpHull3CompositeWeightAdx | 1.0 | Hull #3 composite weight ADX |
| InpHull3CompositeWeightAtr | 1.0 | Hull #3 composite weight ATR |
| InpHull3CompositeWeightMomentum | 1.0 | Hull #3 composite weight momentum |
| InpHull3CompositeMinScore | 1.0 | Hull #3 composite minimum score |
| InpHull3UseVolumeFilter | false | Hull #3 use volume filter |
| InpHull3UseRealVolume | false | Hull #3 use real volume |
| InpHull3VolumeLookback | 50 | Hull #3 volume lookback |
| InpHull3VolumePercentile | 70.0 | Hull #3 volume percentile |
| InpHull3CompositeWeightVolume | 0.0 | Hull #3 composite weight volume |
| InpHull4Enabled | false | Enable Hull #4 |
| InpHull4Period | 536 | Hull #4 period |
| InpHull4Divisor | 2.0 | Hull #4 divisor (speed) |
| InpHull4Price | 1 | Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Hull #4 price |
| InpHull4Method | MODE_LWMA | Hull #4 MA method |
| InpHull4Timeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4 source timeframe |
| InpHull4FlatSensitivity | 3.0 | Hull #4 flat sensitivity (points) |
| InpHull4FlatBars | 3 | Hull #4 flat bars |
| InpHull4UseAdxFilter | false | Hull #4 use ADX filter |
| InpHull4AdxTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4 ADX timeframe |
| InpHull4AdxPeriod | 14 | Hull #4 ADX period |
| InpHull4AdxThreshold | 20.0 | Hull #4 ADX threshold |
| InpHull4MomentumLookback | 5 | Hull #4 momentum lookback |
| InpHull4MomentumPoints | 5.0 | Hull #4 momentum threshold (points) |
| InpHull4UseAtrFilter | false | Hull #4 use ATR filter |
| InpHull4AtrTimeframe | 0 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Hull #4 ATR timeframe |
| InpHull4AtrPeriod | 14 | Hull #4 ATR period |
| InpHull4AtrMultiplier | 1.5 | Hull #4 ATR multiplier (points) |
| InpHull4SlopePoints | 0.0 | Hull #4 slope threshold (points) |
| InpHull4AtrZScoreLookback | 50 | Hull #4 ATR Z-score lookback |
| InpHull4AtrZScoreMinimum | 1.0 | Hull #4 ATR Z-score minimum |
| InpHull4SlopePercentLookback | 50 | Hull #4 slope percentile lookback |
| InpHull4SlopePercentile | 70.0 | Hull #4 slope percentile |
| InpHull4UseCompositeScore | false | Hull #4 use composite score |
| InpHull4CompositeWeightAdx | 1.0 | Hull #4 composite weight ADX |
| InpHull4CompositeWeightAtr | 1.0 | Hull #4 composite weight ATR |
| InpHull4CompositeWeightMomentum | 1.0 | Hull #4 composite weight momentum |
| InpHull4CompositeMinScore | 1.0 | Hull #4 composite minimum score |
| InpHull4UseVolumeFilter | false | Hull #4 use volume filter |
| InpHull4UseRealVolume | false | Hull #4 use real volume |
| InpHull4VolumeLookback | 50 | Hull #4 volume lookback |
| InpHull4VolumePercentile | 70.0 | Hull #4 volume percentile |
| InpHull4CompositeWeightVolume | 0.0 | Hull #4 composite weight volume |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX16106 HullEA — four Hull indicator trend EA with ATR risk management, full 12-layer stack."
#include <Trade/Trade.mqh>
enum EHullSignal
{
HULL_SIGNAL_NONE = 0,
HULL_SIGNAL_BUY = 1,
HULL_SIGNAL_SELL = -1
};
//--- general trading inputs
input bool InpAllowBuy = true; // Allow buy trades
input bool InpAllowSell = true; // Allow sell trades
input int InpHullTimeframe = 0; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1)// Indicator timeframe
input bool InpUseNewBarSignals = true; // Evaluate signals on new bar only
input double InpTrailingStepPoints = 210.0; // Trailing step (points)
input double InpTrailingStartPoints = 150.0; // Trailing start (points)
input double InpStopLossPoints = 300.0; // Static stop loss (points)
input double InpTakeProfitPoints = 300.0; // Static take profit (points)
input double InpMaxSpreadPoints = 25.0; // Maximum spread allowed (points)
input double InpLots = 0.01; // Fixed lot size
input bool InpUseRiskPercentage = false; // Use risk percentage for lot sizing
input double InpRiskPercentage = 1.0; // Risk percentage of balance
input bool InpEnableDebugLogging = false; // Enable debug logging
input bool InpRequireHullAlignment = false; // Require hull values to be aligned
input uint InpMagicNumber = 22216106; // Magic number
input string InpTradeComment = "Psgrowth.com Expert_16106"; // Trade comment
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;
}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.