P
PipsGrowth
Trend FollowingOpen Source – Free

Pipsgrowth EX16085 Trend

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

Pipsgrowth.com EX16085 mu — Multi-indicator Hull MA trend EA, full 12-layer stack.

Overview

Pipsgrowth EX16085 is a build-your-own voting framework for MT5. The .mq5 ships with every entry and exit indicator turned off, so what lands on your chart is a registry of fourteen pluggable modules and a vote-tallying engine that converts their per-bar directions into a single long/short call. The fourteen entry modules are ATR Adaptive JMA, Zero-Lag T3, Zero-Lag TEMA, Jurik Moving Average, JMA Standard Deviation, JMA TRIX Log, JMA Z-Score, JP Oscillator, i-Movement, JP Trend, Kalman Filter, Heiken Ashi on AMA, Heiken Ashi Zone Trade, and a candlestick pattern recogniser. Each gets its own enable toggle and its own parameter block — JMA entry length and phase, Kalman period and applied price, the AMA fast/slow EMA pair for Heiken Ashi, the K1/K2 coefficients for the JMA StdDev bands — and the EA allocates an indicator handle per module inside RegisterIndicator(). Once you tick the boxes, BuildSignalSnapshot() walks the g_indicatorRegistry, calls each enabled adapter's EvaluateDirection() at the resolved signal bar shift, and totals the bullish, bearish, and neutral votes into an SDirectionCounts struct. The 14 exit modules mirror this layout one-for-one, so you can run a different indicator pack on the close logic than the one driving entries.

The vote tally turns into a trade through one of two gates selected by InpEntryVotingMode. ENTRY_VOTING_MIN_COUNT (the default) requires InpMinIndicatorsAgreeForInitialTrades=3 modules to agree on direction before the first position, and InpMinIndicatorsAgreeForAdditonalTrades=2 before any subsequent scaling-in. InpEntryMinOppositeIndicatorsReject=1 acts as a tripwire: a single opposite-direction indicator vetoes the entry outright, which is how the EA prevents a hairline 3-against-1 vote from sneaking through. ENTRY_VOTING_PERCENTAGE converts the same logic into ratios — 65% agreement of the considered set with the opposite side capped under 20%. Whichever mode you run, the signal must persist for InpEntryMinPersistenceBars=2 consecutive closed bars before TryOpenPositions() will route the order, and InpEntryUseClosedBarSignals=true forces ResolveEntrySignalShift() to read bar 1 instead of bar 0 so the vote is taken on a fully closed candle. A separate confirmation stack — Adaptive RSI, Adaptive Volume, Adaptive ATR, and CCI — runs alongside the entry vote. Each confirmation adapter has its own time frame, period, and threshold inputs (Adaptive RSI uses a 14-period base with 5/5 offsets modulated by a 14/50 ATR pair and a 3.0 ATR influence; CCI uses 18-period with 140/-140 extremes, slope lookback of 3 bars, and a 5-bar divergence veto). InpMinConfirmationsAgreeEntry=1 of the enabled confirmations must agree with the entry direction, so a bare-indicator vote can be promoted to a trade even with no confirmation, but a single-confirmation requirement keeps the door open for an additional sanity check.

Order routing follows a strict one-direction-at-a-time policy. CountSymbolPositions() checks the existing ticket count; if it equals InpMaxOpenPositions=2, TryOpenPositions() returns immediately. The hasBuy / hasSell flags then block new longs while a short is open and vice versa, so the registry never pyramids against itself. Lot sizing runs through CalculateLotSize(), which uses InpMoneyManagementMode (FIXED_LOTS=0 or PERCENT_RISK=1, the default) to read InpRiskPerTradePercent=0.5% of the current balance. The resulting volume passes through RoundLotsToStep() to align with the broker's volume step, NormalizeLot() to clean the value, and EnsureMarginAffordable() to bail out if the account can't cover the minimum lot at the current margin level. IsMarginLevelAcceptable() enforces the 250% margin floor from InpMinMarginLevelPerc before any new order, and ProfitGateAllowsEntries() walks the open positions and refuses to add a new one until every existing ticket is sitting on at least InpProfitGatePoints=5 points of unrealised gain. SL and TP come from CalculateStopLossPrice() and CalculateTakeProfitPrice() against InpStopLossPoints=90 and InpTakeProfitPoints=150 raw points, applied to the ask for buys and the bid for sells so the risk is always measured from the spread-realised entry side. CTrade wraps every fill with the magic 22216085 and the comment Psgrowth.com Expert_16085 for downstream journal filtering, and the slippage tolerance is set to InpSlippagePoints=10.

Position management is split into three independent passes that all run on every tick from ManageOpenPositions(). ApplyTrailingStop() ratchets the stop to currentPrice minus InpTrailingStepPts=40 once price has moved InpTrailingTriggerPts=25 in profit, only ever pulling the stop tighter, never loosening it. ApplyBreakEven() moves the stop to entry plus InpBreakEvenOffset=3 once price has travelled InpBreakEvenTrigger=25, locking the position in scratch-or-better territory. ApplyProfitLock() is wired but disabled by default; when enabled, it would move the stop to currentPrice minus InpProfitLockStep=15 every InpProfitLockIncrement=40 points of additional progress, creating a stepped ratchet. All three modify calls funnel through TryModify_EX16085(), which retries up to three times on requote, timeout, or price-change errors with a 100ms pause between attempts, and they all use the same InpMinDistanceFromPrice-style guard against a stop that would land on the wrong side of the entry.

The exit side has its own indicator engine in HandleIndicatorClosings(). After BuildExitSnapshot() and BuildExitConfirmationSnapshot() collect the exit vote and the exit confirmation tally, the function walks the open positions and, when the opposite-direction vote clears InpMinIndicatorsAgreeCloseLoss=2 and InpCloseOnOppositeEvenIfInLose=true (the default), closes the position even if it is at a loss. InpCloseOnOpposite toggles the more conservative mode where the position is only closed if it is in profit by at least InpCloseProfitPoints=6 points. A separate HandleEndOfDayActions() pass fires at InpEndOfDayCloseHour=23:InpEndOfDayCloseMinute=45, force-closes every symbol position (skipping losers if InpEndOfDayProfitOnly is set), and sets g_blockNewTradesForDay so no new entries are routed for the rest of the session. ResetDailyStateIfNeeded() rolls a day-key on each new calendar day to clear that flag at the next session open.

The session filter is the most configurable part of the framework. IsTradingSessionOpen() ORs the result of four independent windows — Asian (InpAsianSessionEnabled=true, default 00:00–08:00), European (true, 07:00–16:00), US (true, 12:00–21:00), and a Custom window (false by default, 22:00–23:59 if you turn it on). GetAdjustedMinutesOfDay() applies InpSessionUtcOffsetHours (default 0) plus InpSessionAdditionalOffsetMinutes (default 0) to the GMT clock so the windows can be aligned to your broker's server time without recompiling, and IsWithinSession() handles the wrap-around case where a session crosses midnight by switching from a start<=end check to a start>=end check. The whole layer is bypassed when InpEnableSessionFilters=false, so you can run the EA 24/7 by leaving the toggle off.

Two final details are worth knowing. First, the three Try*_EX16085 helpers at the bottom of the source — TryClose_EX16085, TryClosePartial_EX16085, and TryModify_EX16085 — are defined for code completeness but only TryModify is wired into the live OnTick path; the close helpers are dead code from the prior utility-EA pattern that the template is derived from. Second, every indicator the registry references is held in a CIndicatorAdapter pointer array, so adding or removing a module does not require recompiling the engine — you just set InpEnableAtrJmaForEntry, InpEnableKalmanForEntry, and so on in the inputs panel, restart the EA, and the new vote composition takes effect on the next new bar. The recommended starting configuration on a 5-minute gold chart is to enable 3-4 fast-responding modules (Zero-Lag T3, Jurik Moving Average, JMA Z-Score, and Kalman Filter) with a 3-of-N MIN_COUNT gate, Adaptive RSI as the lone confirmation, the European+US session windows active, and percent-risk money management at 0.5% per entry — and to leave the 14 exit modules off at first so the SL/TP and trailing stop drive the close logic on their own.

Strategy Deep Dive

EX16085 runs as a registry-driven vote engine where the user enables any subset of fourteen entry modules and a parallel confirmation stack of four, then the EA tallies their per-bar directions into bullish and bearish vote counts on every new bar. Two voting modes — MIN_COUNT (default 3-of-N with a 1-opposite veto) and PERCENTAGE (65% agreement, 20% opposite veto) — collapse the count into a single directional call that must persist for two consecutive closed bars. TryOpenPositions() then enforces a 2-position cap, blocks entries in the direction opposite to any existing trade, requires a 250% margin level, and refuses to add unless the existing ticket is in profit. ManageOpenPositions() layers three independent stop-management passes (trailing, break-even, and the optional profit-lock ratchet) around every open position on every tick, while HandleIndicatorClosings closes on opposite vote once the confirmation stack also flips. Four configurable session windows (Asian, European, US, Custom) with a UTC offset gate the entire signal flow, and a 23:45 end-of-day pass force-closes whatever is left.

Entry Signal

Each closed bar the EA iterates the entry indicator registry, asks every enabled module for a bullish/bearish/neutral direction, and converts the tally into a trade via ENTRY_VOTING_MIN_COUNT (default 3-of-N agreement with a 1-opposite veto) or ENTRY_VOTING_PERCENTAGE (65% agreement, 20% opposite veto). The resulting direction must persist for InpEntryMinPersistenceBars=2 consecutive bars and pass the parallel confirmation vote (InpMinConfirmationsAgreeEntry of Adaptive RSI/Volume/ATR/CCI agreeing). A new BUY or SELL is dispatched only when no opposite position is open on the symbol, the total position count is under InpMaxOpenPositions=2, the margin level exceeds 250%, and the ProfitGate confirms any existing ticket is at least 5 points in profit.

Exit Signal

Exit logic runs on three tracks. The trade-management track applies ApplyTrailingStop (trigger 25 points, step 40), ApplyBreakEven (trigger 25 points, offset 3 points), and the optional ApplyProfitLock (increment 40, step 15). The indicator-driven HandleIndicatorClosings track closes on opposite vote when the opposite-direction indicator count clears InpMinIndicatorsAgreeCloseLoss=2 and the confirmation vote flips too — either unconditionally (InpCloseOnOppositeEvenIfInLose=true) or only when in profit by InpCloseProfitPoints=6. HandleEndOfDayActions then force-closes every position at 23:45 server time, with an option to skip losers.

Stop Loss

Every entry is dispatched with a fixed stop loss of InpStopLossPoints=90 raw points (on XAUUSD with point=0.01 this is 900 ticks / $0.9 per lot of room), and the stop is then ratcheted by ApplyTrailingStop to current-price minus 40 points once the trade is 25 points in profit and by ApplyBreakEven to entry plus 3 points once the trade is 25 points in profit. The optional ApplyProfitLock ratchet (disabled by default) would step the stop to current-price minus 15 every 40 points of further progress, and HandleEndOfDayActions force-closes the remainder at 23:45.

Take Profit

Each entry places a fixed take profit of InpTakeProfitPoints=150 raw points, calculated by CalculateTakeProfitPrice() against the bid/ask at fill time and held in the position's TP field for the lifetime of the ticket. The indicator-driven exit can close the position earlier when the opposite vote clears InpMinIndicatorsAgreeCloseProfit and the trade is in profit by at least InpCloseProfitPoints=6, and the 23:45 end-of-day pass provides a hard daily cut that captures any open P&L before the broker rollover.

Best For

Best deployed on XAUUSD M5 or H1 with a low-spread ECN broker (raw spreads under 25 points on gold are recommended since the SL/TP/trailing/break-even thresholds are measured in raw points), and the suggested minimum balance of $100 reflects the 0.5% default per-trade risk plus the 2-position cap. The session defaults are tuned to the European and US cash hours (07:00–16:00 and 12:00–21:00 server), and every window is UTC-offset adjustable so the EA can be aligned to your broker's server time without code changes. The MEDIUM risk rating reflects the 0.5% risk per trade, the 2-position cap, the 250% margin guard, and the ProfitGate — together they prevent the EA from doubling into a losing position and keep a single bad session from cascading. Because the EA ships with all 14 entry modules and all 14 exit modules disabled, it suits a trader who wants to test which indicator combination fits their symbol and timeframe before committing real capital.

Strategy Logic

Pipsgrowth EX16085 Trend — Strategy Logic Analysis (from .mq5 source)

Family: Trend Magic: 22216085 Version: 2.00

BRIEF: Multi-indicator trend EA using four Hull MA variants with JMA, T3, TEMA, Kalman filter, and pattern recognition entries. Features voting-based entry/exit, session filters, trailing, break-even, and profit lock management. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester

INDICATOR STACK:

  • Standard MT5 indicators

KEY FUNCTIONS:

  • ResetDailyStateIfNeeded()
  • UpdateBarState()
  • BuildEntrySnapshot()
  • BuildExitSnapshot()
  • BuildEntryConfirmationSnapshot()
  • BuildExitConfirmationSnapshot()
  • BuildConfirmationSnapshot()
  • IsTradingSessionOpen()
  • IsWithinSession()
  • GetAdjustedMinutesOfDay()
  • HandleEndOfDayActions()
  • ManageOpenPositions()
  • ...and 36 more

INTERNAL CONSTANTS (0 total):

INPUT PARAMETERS (249 total across 44 groups):

  • [=== Trade Settings ===] InpLots = 0.10 // Fixed lot size (0.01,0.01,50.0)
  • [=== Trade Settings ===] InpSlippagePoints = 10 // Max slippage (points) (0,1,100)
  • [=== Trade Settings ===] InpMagicNumber = 22216085 // Magic number (1,1,99999999)
  • [=== Trade Settings ===] InpTradeComment = "Psgrowth.com Expert_16085" // Trade comment for new positions
  • [=== Money Management ===] InpMoneyManagementMode = MM_MODE_PERCENT_RISK // Money management mode
  • [=== Money Management ===] InpRiskPerTradePercent = 0.5 // Risk per trade (% of balance) (0.1,0.1,10.0)
  • [=== Money Management ===] InpLotRoundingMode = LOT_ROUND_DOWN // Lot rounding mode
  • [=== Risk Management ===] InpStopLossPoints = 90.0 // Initial stop loss (points) (10.0,1.0,5000.0)
  • [=== Risk Management ===] InpTakeProfitPoints = 150.0 // Initial take profit (points) (10.0,1.0,10000.0)
  • [=== Risk Management ===] InpEnableMarginGuard = true // Enforce minimum margin level before new trades
  • [=== Risk Management ===] InpMinMarginLevelPerc = 250.0 // Minimum margin level (%) (100.0,1.0,1000.0)
  • [=== Trailing Management ===] InpEnableTrailingStop = true // Master toggle for trailing stop management
  • [=== Trailing Management ===] InpTrailingTriggerPts = 25.0 // Trailing stop trigger (points) (5.0,1.0,500.0)
  • [=== Trailing Management ===] InpTrailingStepPts = 40.0 // Trailing stop step (points) (10.0,1.0,2000.0)
  • [=== Break-Even ===] InpEnableBreakEven = true // Move SL to break-even
  • [=== Break-Even ===] InpBreakEvenTrigger = 25.0 // Profit trigger (points) (5.0,1.0,500.0)
  • [=== Break-Even ===] InpBreakEvenOffset = 3.0 // Offset from entry (points) (0.0,1.0,100.0)
  • [=== Lock Profit ===] InpEnableProfitLock = false // Lock profits
  • [=== Lock Profit ===] InpProfitLockIncrement = 40.0 // Lock every X points (10.0,1.0,500.0)
  • [=== Lock Profit ===] InpProfitLockStep = 15.0 // Distance from current price (1.0,1.0,200.0)
  • [=== Additional Trade Controls ===] InpEnableProfitGate = true // Require existing trades be in profit
  • [=== Additional Trade Controls ===] InpProfitGatePoints = 5.0 // Minimum profit (points) per trade (1.0,1.0,500.0)
  • [=== Additional Trade Controls ===] InpMaxOpenPositions = 2 // Maximum open positions (0=unlimited) (0,1,100)
  • [=== Trading Sessions Control ===] InpEnableSessionFilters = true // Enable session-based trading
  • [=== Trading Sessions Control ===] InpSessionUtcOffsetHours = 0.0 // Session timezone offset from UTC (-14.0,0.25,14.0)
  • [=== Trading Sessions Control ===] InpSessionAdditionalOffsetMinutes = 0 // Extra manual offset minutes for DST (-180,1,180)
  • [=== Trading Sessions Control ===] InpAsianSessionEnabled = true // Enable trading during Asian session
  • [=== Trading Sessions Control ===] InpAsianSessionStartHour = 0 // Asian session start hour (0,1,23)
  • [=== Trading Sessions Control ===] InpAsianSessionStartMinute = 0 // Asian session start minute (0,1,59)
  • [=== Trading Sessions Control ===] InpAsianSessionEndHour = 8 // Asian session end hour (0,1,23)
  • [=== Trading Sessions Control ===] InpAsianSessionEndMinute = 0 // Asian session end minute (0,1,59)
  • [=== Trading Sessions Control ===] InpEuropeanSessionEnabled = true // Enable trading during European session
  • [=== Trading Sessions Control ===] InpEuropeanSessionStartHour = 7 // European session start hour (0,1,23)
  • [=== Trading Sessions Control ===] InpEuropeanSessionStartMinute = 0 // European session start minute (0,1,59)
  • [=== Trading Sessions Control ===] InpEuropeanSessionEndHour = 16 // European session end hour (0,1,23)
  • [=== Trading Sessions Control ===] InpEuropeanSessionEndMinute = 0 // European session end minute (0,1,59)
  • [=== Trading Sessions Control ===] InpUSSessionEnabled = true // Enable trading during US session
  • [=== Trading Sessions Control ===] InpUSSessionStartHour = 12 // US session start hour (0,1,23)
  • [=== Trading Sessions Control ===] InpUSSessionStartMinute = 0 // US session start minute (0,1,59)
  • [=== Trading Sessions Control ===] InpUSSessionEndHour = 21 // US session end hour (0,1,23)
  • [=== Trading Sessions Control ===] InpUSSessionEndMinute = 0 // US session end minute (0,1,59)
  • [=== Trading Sessions Control ===] InpCustomSessionEnabled = false // Enable trading during custom session
  • [=== Trading Sessions Control ===] InpCustomSessionStartHour = 22 // Custom session start hour (0,1,23)
  • [=== Trading Sessions Control ===] InpCustomSessionStartMinute = 0 // Custom session start minute (0,1,59)
  • [=== Trading Sessions Control ===] InpCustomSessionEndHour = 23 // Custom session end hour (0,1,23)
  • [=== Trading Sessions Control ===] InpCustomSessionEndMinute = 59 // Custom session end minute (0,1,59)
  • [=== Trading Sessions Control ===] InpEnableEndOfDayClose = false // Close all trades at specific time
  • [=== Trading Sessions Control ===] InpEndOfDayCloseHour = 23 // Close hour (0,1,23)
  • [=== Trading Sessions Control ===] InpEndOfDayCloseMinute = 45 // Close minute (0,1,59)
  • [=== Trading Sessions Control ===] InpEndOfDayProfitOnly = false // Only close profitable positions
  • [=== Trading Sessions Control ===] InpEndOfDayBlockNewTrades = true // Block new trades after close time
  • [=== Signal Entry Settings ===] InpSignalBarShift = 1 // Signal bar shift base (0=current,1=closed)
  • [=== Signal Entry Settings ===] InpEntryUseClosedBarSignals = true // Force using closed bar signals
  • [=== Signal Entry Settings ===] InpEntryVotingMode = ENTRY_VOTING_MIN_COUNT // Entry voting evaluation mode
  • [=== Signal Entry Settings ===] InpMinIndicatorsAgreeForInitialTrades = 3 // Minimum indicators agreeing for initial entries (1,1,8)
  • [=== Signal Entry Settings ===] InpMinIndicatorsAgreeForAdditonalTrades = 2 // Minimum indicators agreeing for additional entries (1,1,8)
  • [=== Signal Entry Settings ===] InpEntryMinOppositeIndicatorsReject = 1 // Minimum opposite indicators to reject entry (0,1,8)
  • [=== Signal Entry Settings ===] InpEntryAgreePercentThreshold = 65.0 // Percent of agreeing indicators required (percentage mode)
  • [=== Signal Entry Settings ===] InpEntryOppositeRejectPercent = 20.0 // Percent of opposite indicators to reject (percentage mode)
  • [=== Signal Entry Settings ===] InpEntryMinPersistenceBars = 2 // Required consecutive bars meeting criteria (1,1,10)
  • [=== Entry: ATR Adaptive JMA ===] InpEnableAtrJmaForEntry = false // Use ATR adaptive JMA for entries
  • [=== Entry: ATR Adaptive JMA ===] InpAtrJmaEntryPeriod = 10 // ATR adaptive JMA entry period
  • [=== Entry: ATR Adaptive JMA ===] InpAtrJmaEntryPhase = 0.0 // ATR adaptive JMA entry phase
  • [=== Entry: ATR Adaptive JMA ===] InpAtrJmaEntryPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // ATR adaptive JMA entry price source
  • [=== Entry: Zero Lag T3 ===] InpEnableZlT3ForEntry = false // Use Zero lag T3 for entries
  • [=== Entry: Zero Lag T3 ===] InpZlT3EntryPeriod = 14.0 // Zero lag T3 entry period
  • [=== Entry: Zero Lag T3 ===] InpZlT3EntryHot = 0.7 // Zero lag T3 entry hot
  • [=== Entry: Zero Lag T3 ===] InpZlT3EntryType = T3_FULKSMAT // Zero lag T3 entry calculation type
  • [=== Entry: Zero Lag T3 ===] InpZlT3EntryPrice = 5 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag T3 entry price source
  • [=== Entry: Zero Lag TEMA ===] InpEnableZlTemaForEntry = false // Use Zero lag TEMA for entries
  • [=== Entry: Zero Lag TEMA ===] InpZlTemaEntryPeriod = 20.0 // Zero lag TEMA entry period
  • [=== Entry: Zero Lag TEMA ===] InpZlTemaEntryPrice = 5 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag TEMA entry price source
  • [=== Entry: Jurik Moving Average ===] InpEnableJmaForEntry = false // Use JMA for entries
  • [=== Entry: Jurik Moving Average ===] InpJmaEntryLength = 7 // JMA entry length
  • [=== Entry: Jurik Moving Average ===] InpJmaEntryPhase = 100 // JMA entry phase (-100..100)
  • [=== Entry: Jurik Moving Average ===] InpJmaEntryShift = 0 // JMA entry horizontal shift (bars)
  • [=== Entry: Jurik Moving Average ===] InpJmaEntryPriceShift = 0 // JMA entry vertical shift (points)
  • [=== Entry: Jurik Moving Average ===] InpJmaEntryPrice = JMA_PRICE_CLOSE // JMA entry price source
  • [=== Entry: JMA Standard Deviation ===] InpEnableJmaStDevForEntry = false // Use JMA StdDev for entries
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryLength = 7 // StdDev JMA entry length
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryPhase = 100 // StdDev JMA entry phase
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryK1 = 1.5 // StdDev entry coefficient 1
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryK2 = 2.5 // StdDev entry coefficient 2
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryPeriod = 9 // StdDev entry period
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryShift = 0 // StdDev entry horizontal shift
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryPriceShift = 0 // StdDev entry vertical shift
  • [=== Entry: JMA Standard Deviation ===] InpJmaStDevEntryPrice = JMA_PRICE_CLOSE // StdDev entry price source
  • [=== Entry: JMA TRIX Log ===] InpEnableJmaTrixForEntry = false // Use JMA TRIX for entries
  • [=== Entry: JMA TRIX Log ===] InpJmaTrixEntryPeriod = 14 // JMA TRIX entry period
  • [=== Entry: JMA TRIX Log ===] InpJmaTrixEntryPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA TRIX entry price source
  • [=== Entry: JMA Z-Score ===] InpEnableJmaZScoreForEntry = false // Use JMA Z-Score for entries
  • [=== Entry: JMA Z-Score ===] InpJmaZScoreEntryPeriod = 14 // JMA Z-Score entry smooth period
  • [=== Entry: JMA Z-Score ===] InpJmaZScoreEntryPhase = 0.0 // JMA Z-Score entry phase
  • [=== Entry: JMA Z-Score ===] InpJmaZScoreEntryZsPeriod = 30 // JMA Z-Score entry Z-score period
  • [=== Entry: JMA Z-Score ===] InpJmaZScoreEntryPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA Z-Score entry price source
  • [=== Entry: JP Oscillator ===] InpEnableJpOscForEntry = false // Use JP Oscillator for entries
  • [=== Entry: JP Oscillator ===] InpJpOscEntryPeriod = 5 // JP Oscillator entry period
  • [=== Entry: JP Oscillator ===] InpJpOscEntryMethod = MODE_SMA // JP Oscillator entry smoothing method
  • [=== Entry: JP Oscillator ===] InpJpOscEntrySmoothing = true // JP Oscillator entry smoothing flag
  • [=== Entry: i-Movment ===] InpEnableIMovmentForEntry = false // Use i-Movment for entries
  • [=== Entry: i-Movment ===] InpIMovmentEntryMovement = 70 // Movement threshold (points)
  • [=== Entry: i-Movment ===] InpIMovmentEntryUpColor = clrBlue // Uptrend candle color
  • [=== Entry: i-Movment ===] InpIMovmentEntryUpBackColor = clrWhite // Uptrend retracement color
  • [=== Entry: i-Movment ===] InpIMovmentEntryDownColor = clrRed // Downtrend candle color
  • [=== Entry: i-Movment ===] InpIMovmentEntryDownBackColor = clrWhite // Downtrend retracement color
  • [=== Entry: i-Movment ===] InpIMovmentEntryAuto5Digits = true // Auto-scale for 5/3 digit symbols
  • [=== Entry: JP Trend ===] InpEnableJpTrendForEntry = false // Use JP Trend for entries
  • [=== Entry: JP Trend ===] InpJpTrendEntryDimMaxPos = 150 // JP Trend max bars analyzed
  • [=== Entry: JP Trend ===] InpJpTrendEntryAlertAuto = false // Enable JP Trend auto alerts
  • [=== Entry: JP Trend ===] InpJpTrendEntryAlertThreshold = 0.0002 // JP Trend alert threshold
  • [=== Entry: JP Trend ===] InpJpTrendEntrySupportColor = clrRed // JP Trend support color
  • [=== Entry: JP Trend ===] InpJpTrendEntryResistanceColor = clrBlue // JP Trend resistance color
  • [=== Entry: Kalman Filter ===] InpEnableKalmanForEntry = false // Use Kalman filter for entries
  • [=== Entry: Kalman Filter ===] InpKalmanEntryTimeframe = KALMAN_TF_CURRENT // Kalman timeframe option
  • [=== Entry: Kalman Filter ===] InpKalmanEntryPeriod = 1.0 // Kalman filter period
  • [=== Entry: Kalman Filter ===] InpKalmanEntryPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Kalman filter price source
  • [=== Entry: Kalman Filter ===] InpKalmanEntryInterpolate = true // Kalman interpolation flag
  • [=== Entry: Heiken Ashi on AMA ===] InpEnableHaAmaForEntry = false // Use Heiken Ashi on AMA for entries
  • [=== Entry: Heiken Ashi on AMA ===] InpHaAmaEntryAmaPeriod = 8 // AMA period for Heiken Ashi entries
  • [=== Entry: Heiken Ashi on AMA ===] InpHaAmaEntryFastEma = 2 // Fast EMA for AMA smoothing (entry)
  • [=== Entry: Heiken Ashi on AMA ===] InpHaAmaEntrySlowEma = 24 // Slow EMA for AMA smoothing (entry)
  • [=== Entry: Heiken Ashi on AMA ===] InpHaAmaEntryAmaShift = 0 // AMA shift applied to Heiken Ashi (entry)
  • [=== Entry: Heiken Ashi Zone Trade ===] InpEnableHaZoneForEntry = false // Use Heiken Ashi zone trade for entries
  • [=== Entry: Heiken Ashi Zone Trade ===] InpHaZoneEntryAcTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Accelerator Oscillator timeframe (entry)
  • [=== Entry: Heiken Ashi Zone Trade ===] InpHaZoneEntryAoTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Awesome Oscillator timeframe (entry)
  • [=== Entry: Pattern Recognition ===] InpEnablePatternForEntry = false // Use pattern recognition for entries
  • [=== Entry: Pattern Recognition ===] InpPatternEntryUseExtraDigit = false // Pattern recognition extra digit mode
  • [=== Entry: Pattern Recognition ===] InpPatternEntryShowAlert = false // Allow indicator alerts when used for entries
  • [=== Confirmation Voting ===] InpEnableConfirmationVoting = true // Enable confirmation-based voting
  • [=== Confirmation Voting ===] InpMinConfirmationsAgreeEntry = 1 // Minimum confirmations required for entries (1,1,3)
  • [=== Confirmation Voting ===] InpMinConfirmationsAgreeExit = 1 // Minimum confirmations required for exits (1,1,3)
  • [=== - Confirmation: Adaptive RSI ===] InpEnableAdaptiveRsiConfirm = false // Enable adaptive RSI confirmation for entries
  • [=== - Confirmation: Adaptive RSI ===] InpEnableAdaptiveRsiConfirmForExit = false // Enable adaptive RSI confirmation for exits
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive RSI
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiPeriod = 14 // Adaptive RSI period
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiUpperOffset = 5.0 // Adaptive RSI bullish offset from 50
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiLowerOffset = 5.0 // Adaptive RSI bearish offset from 50
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiAtrFastPeriod = 14 // Fast ATR period for RSI adaptation
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiAtrSlowPeriod = 50 // Slow ATR period for RSI adaptation
  • [=== - Confirmation: Adaptive RSI ===] InpConfirmRsiAtrInfluence = 3.0 // ATR influence on RSI thresholds
  • [=== - Confirmation: Adaptive Volume ===] InpEnableAdaptiveVolumeConfirm = false // Enable adaptive volume confirmation for entries
  • [=== - Confirmation: Adaptive Volume ===] InpEnableAdaptiveVolumeConfirmForExit = false // Enable adaptive volume confirmation for exits
  • [=== - Confirmation: Adaptive Volume ===] InpConfirmVolumeTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive volume
  • [=== - Confirmation: Adaptive Volume ===] InpConfirmVolumeLookback = 20 // Volume lookback for adaptation
  • [=== - Confirmation: Adaptive Volume ===] InpConfirmVolumeMultiplier = 1.2 // Required volume multiplier over average
  • [=== - Confirmation: Adaptive ATR ===] InpEnableAdaptiveAtrConfirm = false // Enable adaptive ATR confirmation for entries
  • [=== - Confirmation: Adaptive ATR ===] InpEnableAdaptiveAtrConfirmForExit = false // Enable adaptive ATR confirmation for exits
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive ATR
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrFastPeriod = 14 // Fast ATR period
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrSlowPeriod = 50 // Slow ATR period
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrMinRatio = 1.2 // Minimum ATR ratio fast/slow
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrTrendPeriod = 50 // Trend MA period for ATR confirmation
  • [=== - Confirmation: Adaptive ATR ===] InpConfirmAtrTrendPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted)// Price source for trend MA
  • [=== - Confirmation: CCI ===] InpEnableCCIConfirm = false // Enable CCI confirmation for entries
  • [=== - Confirmation: CCI ===] InpEnableCCIConfirmForExit = false // Enable CCI confirmation for exits
  • [=== - Confirmation: CCI ===] InpConfirmCCITimeframe = 4 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // CCI confirmation timeframe
  • [=== - Confirmation: CCI ===] InpConfirmCCIPeriod = 18 // CCI confirmation period (10,1,50)
  • [=== - Confirmation: CCI ===] InpConfirmCCIPrice = 6 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Applied price for CCI confirmation
  • [=== - Confirmation: CCI ===] InpConfirmCCIOverbought = 140.0 // Overbought threshold for confirmation (100.0,10.0,300.0)
  • [=== - Confirmation: CCI ===] InpConfirmCCIOversold = -140.0 // Oversold threshold for confirmation (-300.0,10.0,-100.0)
  • [=== - Confirmation: CCI ===] InpConfirmCCIVetoExtremes = true // Veto entries at extremes
  • [=== - Confirmation: CCI ===] InpConfirmCCICheckSlope = true // Require CCI slope alignment
  • [=== - Confirmation: CCI ===] InpConfirmCCISlopeLookback = 3 // Slope lookback bars (1,1,5)
  • [=== - Confirmation: CCI ===] InpConfirmCCIUseDivergence = true // Block trades on CCI divergence
  • [=== - Confirmation: CCI ===] InpConfirmCCIDivergenceBars = 5 // Divergence lookback bars (3,1,20)
  • [=== Signal Exit Settings using Indicators ===] InpCloseOnOpposite = false // Close trades on opposite agreement if in profit
  • [=== Signal Exit Settings using Indicators ===] InpMinIndicatorsAgreeCloseProfit = 1 // Minimum Indicators to close in profit (1,1,4)
  • [=== Signal Exit Settings using Indicators ===] InpCloseProfitPoints = 6.0 // Minimum profit (points) to close on opposite (0.0,1.0,200.0)
  • [=== Signal Exit Settings using Indicators ===] InpCloseOnOppositeEvenIfInLose = true // Close trades on opposite agreement even if losing
  • [=== Signal Exit Settings using Indicators ===] InpMinIndicatorsAgreeCloseLoss = 2 // Minimum Indicators to close even if losing (1,1,4)
  • [=== - Exit: ATR Adaptive JMA ===] InpEnableAtrJmaForExit = false // Use ATR adaptive JMA for exits
  • [=== - Exit: ATR Adaptive JMA ===] InpAtrJmaExitPeriod = 10 // ATR adaptive JMA exit period
  • [=== - Exit: ATR Adaptive JMA ===] InpAtrJmaExitPhase = 0.0 // ATR adaptive JMA exit phase
  • [=== - Exit: ATR Adaptive JMA ===] InpAtrJmaExitPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // ATR adaptive JMA exit price source
  • [=== - Exit: Zero Lag T3 ===] InpEnableZlT3ForExit = false // Use Zero lag T3 for exits
  • [=== - Exit: Zero Lag T3 ===] InpZlT3ExitPeriod = 14.0 // Zero lag T3 exit period
  • [=== - Exit: Zero Lag T3 ===] InpZlT3ExitHot = 0.7 // Zero lag T3 exit hot
  • [=== - Exit: Zero Lag T3 ===] InpZlT3ExitType = T3_FULKSMAT // Zero lag T3 exit calculation type
  • [=== - Exit: Zero Lag T3 ===] InpZlT3ExitPrice = 5 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag T3 exit price source
  • [=== - Exit: Zero Lag TEMA ===] InpEnableZlTemaForExit = false // Use Zero lag TEMA for exits
  • [=== - Exit: Zero Lag TEMA ===] InpZlTemaExitPeriod = 20.0 // Zero lag TEMA exit period
  • [=== - Exit: Zero Lag TEMA ===] InpZlTemaExitPrice = 5 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag TEMA exit price source
  • [=== - Exit: Jurik Moving Average ===] InpEnableJmaForExit = false // Use JMA for exits
  • [=== - Exit: Jurik Moving Average ===] InpJmaExitLength = 7 // JMA exit length
  • [=== - Exit: Jurik Moving Average ===] InpJmaExitPhase = 100 // JMA exit phase (-100..100)
  • [=== - Exit: Jurik Moving Average ===] InpJmaExitShift = 0 // JMA exit horizontal shift (bars)
  • [=== - Exit: Jurik Moving Average ===] InpJmaExitPriceShift = 0 // JMA exit vertical shift (points)
  • [=== - Exit: Jurik Moving Average ===] InpJmaExitPrice = JMA_PRICE_CLOSE // JMA exit price source
  • [=== - Exit: JMA Standard Deviation ===] InpEnableJmaStDevForExit = false // Use JMA StdDev for exits
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitLength = 7 // StdDev JMA exit length
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitPhase = 100 // StdDev JMA exit phase
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitK1 = 1.5 // StdDev exit coefficient 1
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitK2 = 2.5 // StdDev exit coefficient 2
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitPeriod = 9 // StdDev exit period
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitShift = 0 // StdDev exit horizontal shift
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitPriceShift = 0 // StdDev exit vertical shift
  • [=== - Exit: JMA Standard Deviation ===] InpJmaStDevExitPrice = JMA_PRICE_CLOSE // StdDev exit price source
  • [=== - Exit: JMA TRIX Log ===] InpEnableJmaTrixForExit = false // Use JMA TRIX for exits
  • [=== - Exit: JMA TRIX Log ===] InpJmaTrixExitPeriod = 14 // JMA TRIX exit period
  • [=== - Exit: JMA TRIX Log ===] InpJmaTrixExitPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA TRIX exit price source
  • [=== - Exit: JMA Z-Score ===] InpEnableJmaZScoreForExit = false // Use JMA Z-Score for exits
  • [=== - Exit: JMA Z-Score ===] InpJmaZScoreExitPeriod = 14 // JMA Z-Score exit smooth period
  • [=== - Exit: JMA Z-Score ===] InpJmaZScoreExitPhase = 0.0 // JMA Z-Score exit phase
  • [=== - Exit: JMA Z-Score ===] InpJmaZScoreExitZsPeriod = 30 // JMA Z-Score exit Z-score period
  • [=== - Exit: JMA Z-Score ===] InpJmaZScoreExitPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA Z-Score exit price source
  • [=== - Exit: JP Oscillator ===] InpEnableJpOscForExit = false // Use JP Oscillator for exits
  • [=== - Exit: JP Oscillator ===] InpJpOscExitPeriod = 5 // JP Oscillator exit period
  • [=== - Exit: JP Oscillator ===] InpJpOscExitMethod = MODE_SMA // JP Oscillator exit smoothing method
  • [=== - Exit: JP Oscillator ===] InpJpOscExitSmoothing = true // JP Oscillator exit smoothing flag
  • [=== - Exit: i-Movment ===] InpEnableIMovmentForExit = false // Use i-Movment for exits
  • [=== - Exit: i-Movment ===] InpIMovmentExitMovement = 70 // Movement threshold (points)
  • [=== - Exit: i-Movment ===] InpIMovmentExitUpColor = clrBlue // Uptrend candle color (exit)
  • [=== - Exit: i-Movment ===] InpIMovmentExitUpBackColor = clrWhite // Uptrend retracement color (exit)
  • [=== - Exit: i-Movment ===] InpIMovmentExitDownColor = clrRed // Downtrend candle color (exit)
  • [=== - Exit: i-Movment ===] InpIMovmentExitDownBackColor = clrWhite // Downtrend retracement color (exit)
  • [=== - Exit: i-Movment ===] InpIMovmentExitAuto5Digits = true // Auto-scale for exits
  • [=== - Exit: JP Trend ===] InpEnableJpTrendForExit = false // Use JP Trend for exits
  • [=== - Exit: JP Trend ===] InpJpTrendExitDimMaxPos = 150 // JP Trend max bars analyzed (exit)
  • [=== - Exit: JP Trend ===] InpJpTrendExitAlertAuto = false // Enable JP Trend auto alerts (exit)
  • [=== - Exit: JP Trend ===] InpJpTrendExitAlertThreshold = 0.0002 // JP Trend alert threshold (exit)
  • [=== - Exit: JP Trend ===] InpJpTrendExitSupportColor = clrRed // JP Trend support color (exit)
  • [=== - Exit: JP Trend ===] InpJpTrendExitResistanceColor = clrBlue // JP Trend resistance color (exit)
  • [=== - Exit: Kalman Filter ===] InpEnableKalmanForExit = false // Use Kalman filter for exits
  • [=== - Exit: Kalman Filter ===] InpKalmanExitTimeframe = KALMAN_TF_CURRENT // Kalman timeframe option (exit)
  • [=== - Exit: Kalman Filter ===] InpKalmanExitPeriod = 1.0 // Kalman filter period (exit)
  • [=== - Exit: Kalman Filter ===] InpKalmanExitPrice = 1 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Kalman filter price source (exit)
  • [=== - Exit: Kalman Filter ===] InpKalmanExitInterpolate = true // Kalman interpolation flag (exit)
  • [=== - Exit: Heiken Ashi on AMA ===] InpEnableHaAmaForExit = false // Use Heiken Ashi on AMA for exits
  • [=== - Exit: Heiken Ashi on AMA ===] InpHaAmaExitAmaPeriod = 8 // AMA period for Heiken Ashi exits
  • [=== - Exit: Heiken Ashi on AMA ===] InpHaAmaExitFastEma = 2 // Fast EMA for AMA smoothing (exit)
  • [=== - Exit: Heiken Ashi on AMA ===] InpHaAmaExitSlowEma = 24 // Slow EMA for AMA smoothing (exit)
  • [=== - Exit: Heiken Ashi on AMA ===] InpHaAmaExitAmaShift = 0 // AMA shift applied to Heiken Ashi (exit)
  • [=== - Exit: Heiken Ashi Zone Trade ===] InpEnableHaZoneForExit = false // Use Heiken Ashi zone trade for exits
  • [=== - Exit: Heiken Ashi Zone Trade ===] InpHaZoneExitAcTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Accelerator Oscillator timeframe (exit)
  • [=== - Exit: Heiken Ashi Zone Trade ===] InpHaZoneExitAoTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Awesome Oscillator timeframe (exit)
  • [=== - Exit: CCI Exhaustion ===] InpEnableCCIForExit = false // Use CCI exhaustion for exits
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitTimeframe = 0 // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // CCI timeframe for exits
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitPeriod = 18 // CCI period for exits (10,1,50)
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitPrice = 6 // Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // CCI applied price for exits
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitOverbought = 140.0 // Overbought threshold for exits (100.0,10.0,300.0)
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitOversold = -140.0 // Oversold threshold for exits (-300.0,10.0,-100.0)
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitUseDivergence = true // Detect divergence for exits
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitDivergenceBars = 5 // Divergence lookback bars (3,1,20)
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitCloseProfit = true // Allow closing profitable positions via CCI
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitCloseLoss = false // Allow closing losing positions via CCI
  • [=== - Exit: CCI Exhaustion ===] InpCCIExitMinProfitPoints = 6.0 // Minimum profit before closing (0.0,1.0,100.0)
  • [=== - Exit: Pattern Recognition ===] InpEnablePatternForExit = false // Use pattern recognition for exits
  • [=== - Exit: Pattern Recognition ===] InpPatternExitUseExtraDigit = false // Pattern recognition extra digit mode (exit)
  • [=== - Exit: Pattern Recognition ===] InpPatternExitShowAlert = false // Allow indicator alerts when used for exits
Pseudocode
// Pipsgrowth EX16085 Trend — Execution Flow (from source analysis)
// Family: Trend
// Multi-indicator trend EA using four Hull MA variants with JMA, T3, TEMA, Kalman filter, and pattern recognition entries. Features voting-based entry/exit, session filters, trailing, break-even, and profit lock management. 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:
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
InpLots0.10Fixed lot size (0.01,0.01,50.0)
InpSlippagePoints10Max slippage (points) (0,1,100)
InpMagicNumber22216085Magic number (1,1,99999999)
InpTradeComment"Psgrowth.com Expert_16085"Trade comment for new positions
InpMoneyManagementModeMM_MODE_PERCENT_RISKMoney management mode
InpRiskPerTradePercent0.5Risk per trade (% of balance) (0.1,0.1,10.0)
InpLotRoundingModeLOT_ROUND_DOWNLot rounding mode
InpStopLossPoints90.0Initial stop loss (points) (10.0,1.0,5000.0)
InpTakeProfitPoints150.0Initial take profit (points) (10.0,1.0,10000.0)
InpEnableMarginGuardtrueEnforce minimum margin level before new trades
InpMinMarginLevelPerc250.0Minimum margin level (%) (100.0,1.0,1000.0)
InpEnableTrailingStoptrueMaster toggle for trailing stop management
InpTrailingTriggerPts25.0Trailing stop trigger (points) (5.0,1.0,500.0)
InpTrailingStepPts40.0Trailing stop step (points) (10.0,1.0,2000.0)
InpEnableBreakEventrueMove SL to break-even
InpBreakEvenTrigger25.0Profit trigger (points) (5.0,1.0,500.0)
InpBreakEvenOffset3.0Offset from entry (points) (0.0,1.0,100.0)
InpEnableProfitLockfalseLock profits
InpProfitLockIncrement40.0Lock every X points (10.0,1.0,500.0)
InpProfitLockStep15.0Distance from current price (1.0,1.0,200.0)
InpEnableProfitGatetrueRequire existing trades be in profit
InpProfitGatePoints5.0Minimum profit (points) per trade (1.0,1.0,500.0)
InpMaxOpenPositions2Maximum open positions (0=unlimited) (0,1,100)
InpEnableSessionFilterstrueEnable session-based trading
InpSessionUtcOffsetHours0.0Session timezone offset from UTC (-14.0,0.25,14.0)
InpSessionAdditionalOffsetMinutes0Extra manual offset minutes for DST (-180,1,180)
InpAsianSessionEnabledtrueEnable trading during Asian session
InpAsianSessionStartHour0Asian session start hour (0,1,23)
InpAsianSessionStartMinute0Asian session start minute (0,1,59)
InpAsianSessionEndHour8Asian session end hour (0,1,23)
InpAsianSessionEndMinute0Asian session end minute (0,1,59)
InpEuropeanSessionEnabledtrueEnable trading during European session
InpEuropeanSessionStartHour7European session start hour (0,1,23)
InpEuropeanSessionStartMinute0European session start minute (0,1,59)
InpEuropeanSessionEndHour16European session end hour (0,1,23)
InpEuropeanSessionEndMinute0European session end minute (0,1,59)
InpUSSessionEnabledtrueEnable trading during US session
InpUSSessionStartHour12US session start hour (0,1,23)
InpUSSessionStartMinute0US session start minute (0,1,59)
InpUSSessionEndHour21US session end hour (0,1,23)
InpUSSessionEndMinute0US session end minute (0,1,59)
InpCustomSessionEnabledfalseEnable trading during custom session
InpCustomSessionStartHour22Custom session start hour (0,1,23)
InpCustomSessionStartMinute0Custom session start minute (0,1,59)
InpCustomSessionEndHour23Custom session end hour (0,1,23)
InpCustomSessionEndMinute59Custom session end minute (0,1,59)
InpEnableEndOfDayClosefalseClose all trades at specific time
InpEndOfDayCloseHour23Close hour (0,1,23)
InpEndOfDayCloseMinute45Close minute (0,1,59)
InpEndOfDayProfitOnlyfalseOnly close profitable positions
InpEndOfDayBlockNewTradestrueBlock new trades after close time
InpSignalBarShift1Signal bar shift base (0=current,1=closed)
InpEntryUseClosedBarSignalstrueForce using closed bar signals
InpEntryVotingModeENTRY_VOTING_MIN_COUNTEntry voting evaluation mode
InpMinIndicatorsAgreeForInitialTrades3Minimum indicators agreeing for initial entries (1,1,8)
InpMinIndicatorsAgreeForAdditonalTrades2Minimum indicators agreeing for additional entries (1,1,8)
InpEntryMinOppositeIndicatorsReject1Minimum opposite indicators to reject entry (0,1,8)
InpEntryAgreePercentThreshold65.0Percent of agreeing indicators required (percentage mode)
InpEntryOppositeRejectPercent20.0Percent of opposite indicators to reject (percentage mode)
InpEntryMinPersistenceBars2Required consecutive bars meeting criteria (1,1,10)
InpEnableAtrJmaForEntryfalseUse ATR adaptive JMA for entries
InpAtrJmaEntryPeriod10ATR adaptive JMA entry period
InpAtrJmaEntryPhase0.0ATR adaptive JMA entry phase
InpAtrJmaEntryPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // ATR adaptive JMA entry price source
InpEnableZlT3ForEntryfalseUse Zero lag T3 for entries
InpZlT3EntryPeriod14.0Zero lag T3 entry period
InpZlT3EntryHot0.7Zero lag T3 entry hot
InpZlT3EntryTypeT3_FULKSMATZero lag T3 entry calculation type
InpZlT3EntryPrice5Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag T3 entry price source
InpEnableZlTemaForEntryfalseUse Zero lag TEMA for entries
InpZlTemaEntryPeriod20.0Zero lag TEMA entry period
InpZlTemaEntryPrice5Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag TEMA entry price source
InpEnableJmaForEntryfalseUse JMA for entries
InpJmaEntryLength7JMA entry length
InpJmaEntryPhase100JMA entry phase (-100..100)
InpJmaEntryShift0JMA entry horizontal shift (bars)
InpJmaEntryPriceShift0JMA entry vertical shift (points)
InpJmaEntryPriceJMA_PRICE_CLOSEJMA entry price source
InpEnableJmaStDevForEntryfalseUse JMA StdDev for entries
InpJmaStDevEntryLength7StdDev JMA entry length
InpJmaStDevEntryPhase100StdDev JMA entry phase
InpJmaStDevEntryK11.5StdDev entry coefficient 1
InpJmaStDevEntryK22.5StdDev entry coefficient 2
InpJmaStDevEntryPeriod9StdDev entry period
InpJmaStDevEntryShift0StdDev entry horizontal shift
InpJmaStDevEntryPriceShift0StdDev entry vertical shift
InpJmaStDevEntryPriceJMA_PRICE_CLOSEStdDev entry price source
InpEnableJmaTrixForEntryfalseUse JMA TRIX for entries
InpJmaTrixEntryPeriod14JMA TRIX entry period
InpJmaTrixEntryPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA TRIX entry price source
InpEnableJmaZScoreForEntryfalseUse JMA Z-Score for entries
InpJmaZScoreEntryPeriod14JMA Z-Score entry smooth period
InpJmaZScoreEntryPhase0.0JMA Z-Score entry phase
InpJmaZScoreEntryZsPeriod30JMA Z-Score entry Z-score period
InpJmaZScoreEntryPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA Z-Score entry price source
InpEnableJpOscForEntryfalseUse JP Oscillator for entries
InpJpOscEntryPeriod5JP Oscillator entry period
InpJpOscEntryMethodMODE_SMAJP Oscillator entry smoothing method
InpJpOscEntrySmoothingtrueJP Oscillator entry smoothing flag
InpEnableIMovmentForEntryfalseUse i-Movment for entries
InpIMovmentEntryMovement70Movement threshold (points)
InpIMovmentEntryUpColorclrBlueUptrend candle color
InpIMovmentEntryUpBackColorclrWhiteUptrend retracement color
InpIMovmentEntryDownColorclrRedDowntrend candle color
InpIMovmentEntryDownBackColorclrWhiteDowntrend retracement color
InpIMovmentEntryAuto5DigitstrueAuto-scale for 5/3 digit symbols
InpEnableJpTrendForEntryfalseUse JP Trend for entries
InpJpTrendEntryDimMaxPos150JP Trend max bars analyzed
InpJpTrendEntryAlertAutofalseEnable JP Trend auto alerts
InpJpTrendEntryAlertThreshold0.0002JP Trend alert threshold
InpJpTrendEntrySupportColorclrRedJP Trend support color
InpJpTrendEntryResistanceColorclrBlueJP Trend resistance color
InpEnableKalmanForEntryfalseUse Kalman filter for entries
InpKalmanEntryTimeframeKALMAN_TF_CURRENTKalman timeframe option
InpKalmanEntryPeriod1.0Kalman filter period
InpKalmanEntryPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Kalman filter price source
InpKalmanEntryInterpolatetrueKalman interpolation flag
InpEnableHaAmaForEntryfalseUse Heiken Ashi on AMA for entries
InpHaAmaEntryAmaPeriod8AMA period for Heiken Ashi entries
InpHaAmaEntryFastEma2Fast EMA for AMA smoothing (entry)
InpHaAmaEntrySlowEma24Slow EMA for AMA smoothing (entry)
InpHaAmaEntryAmaShift0AMA shift applied to Heiken Ashi (entry)
InpEnableHaZoneForEntryfalseUse Heiken Ashi zone trade for entries
InpHaZoneEntryAcTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Accelerator Oscillator timeframe (entry)
InpHaZoneEntryAoTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Awesome Oscillator timeframe (entry)
InpEnablePatternForEntryfalseUse pattern recognition for entries
InpPatternEntryUseExtraDigitfalsePattern recognition extra digit mode
InpPatternEntryShowAlertfalseAllow indicator alerts when used for entries
InpEnableConfirmationVotingtrueEnable confirmation-based voting
InpMinConfirmationsAgreeEntry1Minimum confirmations required for entries (1,1,3)
InpMinConfirmationsAgreeExit1Minimum confirmations required for exits (1,1,3)
InpEnableAdaptiveRsiConfirmfalseEnable adaptive RSI confirmation for entries
InpEnableAdaptiveRsiConfirmForExitfalseEnable adaptive RSI confirmation for exits
InpConfirmRsiTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive RSI
InpConfirmRsiPeriod14Adaptive RSI period
InpConfirmRsiUpperOffset5.0Adaptive RSI bullish offset from 50
InpConfirmRsiLowerOffset5.0Adaptive RSI bearish offset from 50
InpConfirmRsiAtrFastPeriod14Fast ATR period for RSI adaptation
InpConfirmRsiAtrSlowPeriod50Slow ATR period for RSI adaptation
InpConfirmRsiAtrInfluence3.0ATR influence on RSI thresholds
InpEnableAdaptiveVolumeConfirmfalseEnable adaptive volume confirmation for entries
InpEnableAdaptiveVolumeConfirmForExitfalseEnable adaptive volume confirmation for exits
InpConfirmVolumeTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive volume
InpConfirmVolumeLookback20Volume lookback for adaptation
InpConfirmVolumeMultiplier1.2Required volume multiplier over average
InpEnableAdaptiveAtrConfirmfalseEnable adaptive ATR confirmation for entries
InpEnableAdaptiveAtrConfirmForExitfalseEnable adaptive ATR confirmation for exits
InpConfirmAtrTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Timeframe for adaptive ATR
InpConfirmAtrFastPeriod14Fast ATR period
InpConfirmAtrSlowPeriod50Slow ATR period
InpConfirmAtrMinRatio1.2Minimum ATR ratio fast/slow
InpConfirmAtrTrendPeriod50Trend MA period for ATR confirmation
InpConfirmAtrTrendPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted)// Price source for trend MA
InpEnableCCIConfirmfalseEnable CCI confirmation for entries
InpEnableCCIConfirmForExitfalseEnable CCI confirmation for exits
InpConfirmCCITimeframe4Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // CCI confirmation timeframe
InpConfirmCCIPeriod18CCI confirmation period (10,1,50)
InpConfirmCCIPrice6Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Applied price for CCI confirmation
InpConfirmCCIOverbought140.0Overbought threshold for confirmation (100.0,10.0,300.0)
InpConfirmCCIOversold-140.0Oversold threshold for confirmation (-300.0,10.0,-100.0)
InpConfirmCCIVetoExtremestrueVeto entries at extremes
InpConfirmCCICheckSlopetrueRequire CCI slope alignment
InpConfirmCCISlopeLookback3Slope lookback bars (1,1,5)
InpConfirmCCIUseDivergencetrueBlock trades on CCI divergence
InpConfirmCCIDivergenceBars5Divergence lookback bars (3,1,20)
InpCloseOnOppositefalseClose trades on opposite agreement if in profit
InpMinIndicatorsAgreeCloseProfit1Minimum Indicators to close in profit (1,1,4)
InpCloseProfitPoints6.0Minimum profit (points) to close on opposite (0.0,1.0,200.0)
InpCloseOnOppositeEvenIfInLosetrueClose trades on opposite agreement even if losing
InpMinIndicatorsAgreeCloseLoss2Minimum Indicators to close even if losing (1,1,4)
InpEnableAtrJmaForExitfalseUse ATR adaptive JMA for exits
InpAtrJmaExitPeriod10ATR adaptive JMA exit period
InpAtrJmaExitPhase0.0ATR adaptive JMA exit phase
InpAtrJmaExitPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // ATR adaptive JMA exit price source
InpEnableZlT3ForExitfalseUse Zero lag T3 for exits
InpZlT3ExitPeriod14.0Zero lag T3 exit period
InpZlT3ExitHot0.7Zero lag T3 exit hot
InpZlT3ExitTypeT3_FULKSMATZero lag T3 exit calculation type
InpZlT3ExitPrice5Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag T3 exit price source
InpEnableZlTemaForExitfalseUse Zero lag TEMA for exits
InpZlTemaExitPeriod20.0Zero lag TEMA exit period
InpZlTemaExitPrice5Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Zero lag TEMA exit price source
InpEnableJmaForExitfalseUse JMA for exits
InpJmaExitLength7JMA exit length
InpJmaExitPhase100JMA exit phase (-100..100)
InpJmaExitShift0JMA exit horizontal shift (bars)
InpJmaExitPriceShift0JMA exit vertical shift (points)
InpJmaExitPriceJMA_PRICE_CLOSEJMA exit price source
InpEnableJmaStDevForExitfalseUse JMA StdDev for exits
InpJmaStDevExitLength7StdDev JMA exit length
InpJmaStDevExitPhase100StdDev JMA exit phase
InpJmaStDevExitK11.5StdDev exit coefficient 1
InpJmaStDevExitK22.5StdDev exit coefficient 2
InpJmaStDevExitPeriod9StdDev exit period
InpJmaStDevExitShift0StdDev exit horizontal shift
InpJmaStDevExitPriceShift0StdDev exit vertical shift
InpJmaStDevExitPriceJMA_PRICE_CLOSEStdDev exit price source
InpEnableJmaTrixForExitfalseUse JMA TRIX for exits
InpJmaTrixExitPeriod14JMA TRIX exit period
InpJmaTrixExitPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA TRIX exit price source
InpEnableJmaZScoreForExitfalseUse JMA Z-Score for exits
InpJmaZScoreExitPeriod14JMA Z-Score exit smooth period
InpJmaZScoreExitPhase0.0JMA Z-Score exit phase
InpJmaZScoreExitZsPeriod30JMA Z-Score exit Z-score period
InpJmaZScoreExitPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // JMA Z-Score exit price source
InpEnableJpOscForExitfalseUse JP Oscillator for exits
InpJpOscExitPeriod5JP Oscillator exit period
InpJpOscExitMethodMODE_SMAJP Oscillator exit smoothing method
InpJpOscExitSmoothingtrueJP Oscillator exit smoothing flag
InpEnableIMovmentForExitfalseUse i-Movment for exits
InpIMovmentExitMovement70Movement threshold (points)
InpIMovmentExitUpColorclrBlueUptrend candle color (exit)
InpIMovmentExitUpBackColorclrWhiteUptrend retracement color (exit)
InpIMovmentExitDownColorclrRedDowntrend candle color (exit)
InpIMovmentExitDownBackColorclrWhiteDowntrend retracement color (exit)
InpIMovmentExitAuto5DigitstrueAuto-scale for exits
InpEnableJpTrendForExitfalseUse JP Trend for exits
InpJpTrendExitDimMaxPos150JP Trend max bars analyzed (exit)
InpJpTrendExitAlertAutofalseEnable JP Trend auto alerts (exit)
InpJpTrendExitAlertThreshold0.0002JP Trend alert threshold (exit)
InpJpTrendExitSupportColorclrRedJP Trend support color (exit)
InpJpTrendExitResistanceColorclrBlueJP Trend resistance color (exit)
InpEnableKalmanForExitfalseUse Kalman filter for exits
InpKalmanExitTimeframeKALMAN_TF_CURRENTKalman timeframe option (exit)
InpKalmanExitPeriod1.0Kalman filter period (exit)
InpKalmanExitPrice1Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // Kalman filter price source (exit)
InpKalmanExitInterpolatetrueKalman interpolation flag (exit)
InpEnableHaAmaForExitfalseUse Heiken Ashi on AMA for exits
InpHaAmaExitAmaPeriod8AMA period for Heiken Ashi exits
InpHaAmaExitFastEma2Fast EMA for AMA smoothing (exit)
InpHaAmaExitSlowEma24Slow EMA for AMA smoothing (exit)
InpHaAmaExitAmaShift0AMA shift applied to Heiken Ashi (exit)
InpEnableHaZoneForExitfalseUse Heiken Ashi zone trade for exits
InpHaZoneExitAcTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Accelerator Oscillator timeframe (exit)
InpHaZoneExitAoTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Awesome Oscillator timeframe (exit)
InpEnableCCIForExitfalseUse CCI exhaustion for exits
InpCCIExitTimeframe0Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // CCI timeframe for exits
InpCCIExitPeriod18CCI period for exits (10,1,50)
InpCCIExitPrice6Applied price (1=close,2=open,3=high,4=low,5=median,6=typical,7=weighted) // CCI applied price for exits
InpCCIExitOverbought140.0Overbought threshold for exits (100.0,10.0,300.0)
InpCCIExitOversold-140.0Oversold threshold for exits (-300.0,10.0,-100.0)
InpCCIExitUseDivergencetrueDetect divergence for exits
InpCCIExitDivergenceBars5Divergence lookback bars (3,1,20)
InpCCIExitCloseProfittrueAllow closing profitable positions via CCI
InpCCIExitCloseLossfalseAllow closing losing positions via CCI
InpCCIExitMinProfitPoints6.0Minimum profit before closing (0.0,1.0,100.0)
InpEnablePatternForExitfalseUse pattern recognition for exits
InpPatternExitUseExtraDigitfalsePattern recognition extra digit mode (exit)
InpPatternExitShowAlertfalseAllow indicator alerts when used for exits
Source Code (.mq5)Open Source
Pipsgrowth_com_EX16085.mq5
#property copyright "Pipsgrowth.com"
#property link      "https://pipsgrowth.com"
#property version   "2.00"
#property strict
#property description "Pipsgrowth.com EX16085 mu — Multi-indicator Hull MA trend EA, full 12-layer stack."
 
#include <Trade/Trade.mqh>
#include <Trade/PositionInfo.mqh>

enum ENUM_MM_MODE
{
	MM_MODE_FIXED_LOTS = 0,
	MM_MODE_PERCENT_RISK = 1
};

enum ENUM_LOT_ROUNDING
{
	LOT_ROUND_DOWN = 0,
	LOT_ROUND_NEAREST = 1,
	LOT_ROUND_UP = 2
};

enum ENUM_ENTRY_VOTING_MODE
{
	ENTRY_VOTING_MIN_COUNT = 0,
	ENTRY_VOTING_PERCENTAGE = 1
};

enum ENUM_JMA_PRICE_SOURCE
{
	JMA_PRICE_CLOSE        = 1,
	JMA_PRICE_OPEN         = 2,
	JMA_PRICE_HIGH         = 3,
	JMA_PRICE_LOW          = 4,
	JMA_PRICE_MEDIAN       = 5,
	JMA_PRICE_TYPICAL      = 6,
	JMA_PRICE_WEIGHTED     = 7,
	JMA_PRICE_SIMPLE       = 8,
	JMA_PRICE_QUARTER      = 9,
	JMA_PRICE_TRENDFOLLOW0 = 10,
	JMA_PRICE_TRENDFOLLOW1 = 11,
	JMA_PRICE_DEMARK       = 12
};

enum ENUM_KALMAN_TF_OPTION
{
	KALMAN_TF_CURRENT        = PERIOD_CURRENT,
	KALMAN_TF_M1             = PERIOD_M1,
	KALMAN_TF_M2             = PERIOD_M2,
	KALMAN_TF_M3             = PERIOD_M3,
	KALMAN_TF_M4             = PERIOD_M4,
	KALMAN_TF_M5             = PERIOD_M5,
	KALMAN_TF_M6             = PERIOD_M6,
	KALMAN_TF_M10            = PERIOD_M10,
	KALMAN_TF_M12            = PERIOD_M12,
	KALMAN_TF_M15            = PERIOD_M15,
	KALMAN_TF_M20            = PERIOD_M20,
	KALMAN_TF_M30            = PERIOD_M30,
	KALMAN_TF_H1             = PERIOD_H1,
	KALMAN_TF_H2             = PERIOD_H2,

Full source code available on download

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

Tags:ex16085trendpipsgrowthfreemt5xauusd

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_EX16085.mq5
File Size207.6 KB
Versionv2.00
PlatformMetaTrader 5
File Type.mq5 Source
StrategyTrend Following
Risk LevelMedium Risk
Timeframes
M5H1
Currency Pairs
XAUUSD
Min. Deposit$100