Pipsgrowth EX12044 MultiIndicatorConfluence
MT5 Expert Advisor (Open Source) · EURUSD · M5, H1
Pipsgrowth.com EX12044 EURUSD_v1_0_1 — adaptive scalping EA with AMA, RSI, Heiken Ashi and volatility filter, full 12-layer stack.
Overview
Pipsgrowth EX12044 MultiIndicatorConfluence is the same single-handle, 38-input template as EX12043 with one operational change: a different magic number, 22212044 instead of 22212043. The file is tagged v1.0.1, the property version is 2.00, and the source comment on line 176 still labels the EA as 'Version 1.1' (a reference to the RSI sub-system, not the file version). The point of having a bumped magic on identical code is portfolio parallelism: the trader can run two or more instances of the same template on the same account with separate ticket buckets, so a $1,000 deposit can carry two simultaneous 5-ticket-per-direction stacks without their position caps colliding. Because every gate, every retry, and every input has the same defaults as EX12043, what follows is a deployment walk-through of what the EA actually does tick by tick and bar by bar — not a feature inventory.
The decision cadence is once per new bar, not once per tick. OnTick() in the source runs three phases in order: UpdateAdaptiveIndicators() refreshes the four derived buffers (volatility, the windowed moving average, RSI, Heiken Ashi), ManagePositions() walks every open ticket through the profit walker, and CheckForEntry() only fires when totalBars != iBars(_Symbol, PERIOD_CURRENT). That last comparison is what gives the EA its native rate-limit: even if every one of the four signal conditions fires on every tick of a fast M5 bar, the entry check still runs at most once per bar. The bar ceiling is structural, not configured — there is no input that turns it off.
The live entry path is a strict four-condition gate. Condition one: the most recent bar's close — or haClose[0] when UseHeikenAshi is on (its default) — sits above the windowed moving average for buys, below it for sells. Condition two: a fresh MA crossover has just printed, with the previous bar at-or-below the MA and the latest bar above it, or a 'strong' Heiken Ashi body has formed, where the test is body > 50% of the bar's full range and the body direction agrees with the signal. Condition three: the volatility filter passes, meaning volatility[0] > VolatilityThreshold * pointValue with the threshold input sitting at 0.3 points by default. Condition four: the RSI sub-system fires on either a fresh cross up out of the 30 threshold (rsiBuffer[1] < 30 && rsiBuffer[0] > 30) or a three-bar rising run with rsiBuffer[0] in the 30-to-50 zone. The sell side mirrors the gate using the 70 overbought line and the symmetric 50-to-70 fall corridor.
The 'adaptive moving average' the parameter panel advertises is a windowed SMA whose period length floats. CalculateAdaptiveVolatility sums the high-minus-low range over a window equal to max(AdaptiveMA_Period, 10) bars and stores the result in volatility[0]. It then averages the most recent 20 entries from that buffer to set a baseline. The ratio volRatio = volatility[0] / avgVolatility is fed into the next period's window: adaptivePeriod = base / (1 + (volRatio - 1) * 2.0) with the 2.0 sensitivity multiplier exposed as the AdaptiveMA_Sensitivity input. The result is clamped to a 5-to-50 bar range. CalculateAdaptiveMA then sums the last adaptivePeriod closes and divides to write adaptiveMA[0]. There is no Kaufman efficiency ratio, no smoothing constant, no recursive term — the math recomputes a period from the volatility ratio and the next pass uses that period as a fixed SMA window. A calmer market lengthens the window; a choppier market shortens it.
Heiken Ashi is built in code. CalculateHeikenAshi walks the last 20 bars and writes haClose[i] = (open + high + low + close) / 4 for each bar. The recursive HA open starts at the seed (open + close) / 2 for the current bar, and for every older bar it averages the prior HA open with the prior HA close — propagating the seed backward through the buffer. The haHigh and haLow arrays take the max and min of the original bar's high/low unioned with the current HA open and HA close. The only native indicator handle the EA asks MetaTrader for is iRSI(_Symbol, PERIOD_CURRENT, 14, PRICE_CLOSE). CalculateRSI uses CopyBuffer on that handle and copies exactly three bars into rsiBuffer, which is the only state GetBuySignal, GetSellSignal, and GetConfirmationSignal ever read. The 5-bar divergence branch in GetConfirmationSignal reads rsiBuffer[1] and rsiBuffer[5] directly and returns false if the buffer has fewer than 10 elements — a guard for partial-bar warmup or a re-attach after a network drop.
GetConfirmationSignal is a separate gate with four modes. When both RSI_UseCrossoverSignals and RSI_UseDivergenceSignals are enabled, confirmation requires either a fresh 30/70 cross or a 5-bar price/RSI divergence. Crossover alone narrows the check to just the cross. Divergence alone narrows it to the divergence. Both off drops the function back to a plain 'RSI between 30 and 70' check. The volumeConfirm the source mentions is a placeholder returning true; the in-source comment notes that retail EURUSD rarely has reliable tick-volume data, so the EA does not require it. RequireToCheckForConfirmationBeforeAdding uses the same confirmation return value to gate pyramids — when any positions are open, the live confirmation must be true, otherwise new entries are denied regardless of how strong the primary signal reads.
Three pre-filters block entries before the signal path runs. IsMarketConditionsOK checks spread against MaxSpread (5 points) for a soft block, spread > 2 * MaxSpread for an extreme-spike hard-block, drawdown = (balance - equity) / balance * 100 against MaxDrawdownPercent (10%), and the open position count against MaxOpenTrades. IsPositionManagementOK walks every open position with this EA's magic, computes the per-ticket profit in points, and requires that all positions clear MinProfitInPointsPerTradeToAdd (20 points by default) for the pyramid to pass. IsOptimalTradingSession applies a London 8-16 / New York 13-21 / overlap 13-16 GMT window — but only when UseSessionFilter is true, which it is not by default. The strategy tester bypasses the filter via the isTester = MQLInfoInteger(MQL_TESTER) short-circuit at the top of the function, so backtests run across the full week regardless of the configured session window.
The profit walker inside ManageDynamicStopLoss is the only path that moves an open trade's stop-loss. Every tick, for every open ticket with magic 22212044, the function reads the current profit in points, updates lastHighestProfit[positionIndex] if the current reading beats the stored watermark, and computes lockSteps = floor(watermark / 30) and lockProfitPoints = lockSteps * 30 - 15. The new stop only applies if it is tighter than the current one — a buy's newSL must be higher than the existing stop, a sell's newSL must be lower. The walker only ever tightens; it never loosens a stop it has already pulled in. The 50-point initial stop and 100-point take-profit sit on the order ticket at open and are not modified by the walker until the watermark threshold (30 points of unrealized profit) is reached.
Pyramid-into-winners is the position-sizing policy. The first position in a direction opens regardless of the direction's existing profitability. Subsequent positions in the same direction only open if all of the existing positions in that direction are profitable by at least MinProfitInPointsPerTradeToAdd (20 points). MaxOpenTrades = 5 is enforced per direction — the account can hold up to 10 tickets at peak: 5 buys and 5 sells. The IsPositionDirectionProfitable function walks positions in the same direction only; mixed-direction profitability is not part of the test. A profitable buy basket does not let the EA add to a losing sell basket, and vice versa.
Three retry helpers wrap the order operations: TryClose_EX12044, TryClosePartial_EX12044, and TryModify_EX12044. Each runs a 3-attempt loop on REQUOTE, TIMEOUT, PRICE_OFF, or PRICE_CHANGED, sleeping 200 ms between attempts for the close and partial-close paths and 100 ms for the modify path. All three check the result retcode against TRADE_RETCODE_DONE and TRADE_RETCODE_DONE_PARTIAL before returning success. TryModify_EX12044 is invoked from ManageDynamicStopLoss; the two close helpers are defined but not currently called from the live path of this build, present for callers who want to wire in a basket-close or partial-close at the function-call level.
Debug logging is throttled at every layer. UpdateAdaptiveIndicators and CalculateRSI both use MathRand()%100 to gate their Print() output to roughly 1% of ticks. A separate tickCounter in OnTick triggers the full CheckAdditionalTradesConditions diagnostic walk every 50 ticks when EnableAdditionalPositionManagementDebug or EnableDebug is on, dumping the complete state — positions, signals, confirmation, market conditions, session — to the Experts tab. The five debug flags (EnableDebug, EnableRSI_Debug, EnableDynamicProfitManagementDebug, EnableAdditionalPositionManagementDebug, EnableIndicatorDebug) each gate their own subsystem; EnableDebug is the broad 'show me everything' master switch, the others are scoped.
In deployment the EA targets EURUSD on M5 or H1 with a recommended $100 starting balance and 0.01-lot scaling. The 5-point MaxSpread cap is the binding constraint on broker choice: a dealing-desk broker with 8-point spreads around rollover will block most entries, so the practical deployment is a raw-spread, sub-100ms-latency venue. The default config also reads at the file header: 'Suggested symbols: EURUSD (portable to other FX majors)' and 'Suggested timeframe: M5 (works M5-H1)'. Above H1 the volatility-bounded MA window stops responding meaningfully to intraday range changes, and below M5 the 5-point spread cap fails on most ticks during the rollover spread widening. M5 is where the .set files are tuned and where the documented backtests in the .mq5 header comments assume.
Strategy Deep Dive
EX12044's tick handler is split into a per-tick maintenance phase and a per-new-bar decision phase. On every tick UpdateAdaptiveIndicators refreshes the four derived buffers (volatility, the windowed MA, RSI, Heiken Ashi), and ManagePositions walks open tickets through the step-locking profit walker. CheckForEntry only fires on a new bar and chains three pre-filters (IsMarketConditionsOK for spread/drawdown/position count, IsPositionManagementOK for the 20-point pyramid floor, IsOptimalTradingSession for the London/NY window) before asking GetBuySignal and GetSellSignal for the four-condition gate answer and GetConfirmationSignal for the separate RSI confirmation. The 1-trade-per-new-bar ceiling is structural via the new-bar gate; the 5-trade-per-direction ceiling is enforced inside CheckForEntry against the MaxOpenTrades input. The 3-retry helper pattern — TryClose_EX12044, TryClosePartial_EX12044, TryModify_EX12044 — wraps order operations in 3-attempt loops with 200 ms (close) or 100 ms (modify) sleeps on REQUOTE / TIMEOUT / PRICE_OFF / PRICE_CHANGED. Debug logging is throttled at every layer via MathRand()%100 to roughly 1% of ticks, and a separate tickCounter triggers the full CheckAdditionalTradesConditions diagnostic dump every 50 ticks when the relevant debug flag is on.
A buy triggers when the Heiken Ashi close (or live price when UseHeikenAshi is off) sits above the volatility-windowed adaptive MA, AND a fresh MA crossover or a strong HA body has just printed, AND the bar range exceeds the 0.3-point volatility threshold, AND RSI has crossed up out of the 30 oversold line or is rising through the 30–50 zone. Sells mirror the four-condition gate using the 70 overbought line. GetConfirmationSignal is a separate gate that requires a fresh 30/70 crossover or 5-bar price/RSI divergence, or — with both RSI modes off — a plain RSI-in-30-to-70 check.
Exits run on three rails: the initial TP at 100 points (1:2 RR against the 50-point initial SL on the order ticket), the step-locking profit walker in ManageDynamicStopLoss that tightens the SL every 30 points of peak unrealized profit (less a 15-point buffer) and only ever tightens, and the standard TryClose/Modify retry helpers. There is no signal-reversal exit in the live path — exits are TP-driven, SL-driven, or ratchet-driven.
Initial stop-loss is 50 points on the order ticket for both buys and sells. The step-locking profit walker in ManageDynamicStopLoss tightens that stop every 30 points of peak unrealized profit (minus a 15-point buffer) and only ever tightens — it never loosens a stop it has already pulled in. A hard 10% account-drawdown cap in IsMarketConditionsOK blocks new entries once breached.
Take-profit is 100 points on the order ticket — exactly 1:2 against the 50-point initial SL. The TP sits on the order ticket rather than as a separate exit, so it executes as a single-ticket close at the broker. The profit walker is the only path by which the EA realizes profit at a price different from the initial TP — winners that trend more than 30 points get their stops walked up to lock 15 points below each 30-point step.
EURUSD on M5 or H1 only — the 5-point spread cap will not survive M1 scalping on a widening broker, and above H1 the volatility-bounded MA window stops responding meaningfully to intraday range changes. Minimum recommended balance is $100 with 0.01-lot scaling. Pair with a raw-spread ECN broker (IC Markets, Tickmill, Vantage) on a sub-100ms tick-to-trade round-trip; a dealing-desk broker with 8+ point spreads around rollover will block most entries.
Strategy Logic
Pipsgrowth EX12044 MultiIndicatorConfluence — Strategy Logic Analysis (from .mq5 source)
Family: MultiIndicatorConfluence
Magic: 22212044
Version: 2.00
BRIEF:
Adaptive forex scalping EA combining adaptive moving average, RSI crossover/divergence, Heiken Ashi, and volatility filter for entry signals, with dynamic profit locking and additional position management. 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
UpdateAdaptiveIndicators()CalculateAdaptiveVolatility()CalculateAdaptiveMA()CalculateRSI()CalculateHeikenAshi()CheckForEntry()GetBuySignal()GetSellSignal()GetConfirmationSignal()IsMarketConditionsOK()IsPositionManagementOK()ManagePositions()- ...and 9 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (38 total across 8 groups):
- [===
BASICSETTINGS===]EnableTrading=true// Enable trading - [===
BASICSETTINGS===]EnableDebug=false// Enable debug logging - [===
BASICSETTINGS===]AllowBuys=true// Allow opening buy orders - [===
BASICSETTINGS===]AllowSells=true// Allow opening sell orders - [===
BASICSETTINGS===]LotSize=1.0// Fixed lot size - [===
BASICSETTINGS===]MagicNumber=22212044// Magic number - [===
BASICSETTINGS===]InpTradeComment= "Psgrowth.com Expert_12044" // Trade comment - [===
BASICSETTINGS===] Slippage = 3 // Slippage in points - [===
RISKMANAGEMENT===]MaxSpread=5.0// Maximum spread in points - [===
RISKMANAGEMENT===]MaxDrawdownPercent=10.0// Maximum drawdown percentage - [===
RISKMANAGEMENT===]MaxRiskPerTrade=2.0// Maximum risk per trade % - [===
RISKMANAGEMENT===]MaxOpenTrades= 5 // Maximum open trades - [===
RISKMANAGEMENT===]StopLossPoints=50.0// Stop loss in points - [===
RISKMANAGEMENT===]TakeProfitPoints=100.0// Take profit in points - [===
DYNAMICPROFITMANAGEMENT===]EnableDynamicLockProfit=true// Enable dynamic profit locking - [===
DYNAMICPROFITMANAGEMENT===]LockProfitEvery_X_Points=30.0// Step: every X points profit - [===
DYNAMICPROFITMANAGEMENT===]LockMinusBuffer=15.0// Lock profit minus X point buffer - [===
DYNAMICPROFITMANAGEMENT===]EnableDynamicProfitManagementDebug=false// Enable debug logging for dynamic profit management - [=== Additional
POSITIONMANAGEMENT===]AllowOnlyProfitableAdditions=true// Only allow adding positions if existing trades are profitable - [=== Additional
POSITIONMANAGEMENT===]MinProfitInPointsPerTradeToAdd=20.0// Minimum profit required per existing trade in points - [=== Additional
POSITIONMANAGEMENT===]RequireToCheckForConfirmationBeforeAdding=true// Require to check active confirmation before adding new positions - [=== Additional
POSITIONMANAGEMENT===]EnableAdditionalPositionManagementDebug=false// Enable debug logging for additional position management - [===
ADAPTIVEINDICATORS===]AdaptiveMA_Period= 14 // Adaptive MA base period - [===
ADAPTIVEINDICATORS===]AdaptiveMA_Sensitivity=2.0// Adaptive sensitivity multiplier - [===
RSISETTINGS(V1.1) ===] RSI_Period = 14 //RSIperiod - [===
RSISETTINGS(V1.1) ===] RSI_Oversold =30.0//RSIoversoldlevel - [===
RSISETTINGS(V1.1) ===] RSI_Overbought =70.0//RSIoverboughtlevel - [===
RSISETTINGS(V1.1) ===] RSI_UseCrossoverSignals =true// UseRSIcrossover signals - [===
RSISETTINGS(V1.1) ===] RSI_UseDivergenceSignals =false// UseRSIdivergence signals - [===
RSISETTINGS(V1.1) ===]EnableRSI_Debug=false// EnableRSIdebug logging - [===
ADDITIONALINDICATORS===]UseHeikenAshi=true// Use Heiken Ashi for smoother signals - [===
ADDITIONALINDICATORS===]UseVolatilityFilter=true// Use volatility filter for entries - [===
ADDITIONALINDICATORS===]VolatilityThreshold=0.3// Minimum volatility threshold in points - [===
ADDITIONALINDICATORS===]EnableIndicatorDebug=false// Enable indicator debug logging - [===
SESSIONFILTER===]UseSessionFilter=false// Use trading session filter - [===
SESSIONFILTER===]TradeLondonSession=true// Trade during London session (8-16GMT) - [===
SESSIONFILTER===]TradeNewYorkSession=true// Trade during New York session (13-21GMT) - [===
SESSIONFILTER===]TradeOverlapSession=true// Trade during London/NY overlap (13-16GMT)
// Pipsgrowth EX12044 MultiIndicatorConfluence — Execution Flow (from source analysis)
// Family: MultiIndicatorConfluence
// Adaptive forex scalping EA combining adaptive moving average, RSI crossover/divergence, Heiken Ashi, and volatility filter for entry signals, with dynamic profit locking and additional position 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
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 a chart matching the recommended timeframe
- 7Configure parameters according to the table on this page
- 8Enable Allow Algo Trading and click OK
EA Parameters
| Parameter | Default | Description |
|---|---|---|
| EnableTrading | true | Enable trading |
| EnableDebug | false | Enable debug logging |
| AllowBuys | true | Allow opening buy orders |
| AllowSells | true | Allow opening sell orders |
| LotSize | 1.0 | Fixed lot size |
| MagicNumber | 22212044 | Magic number |
| InpTradeComment | "Psgrowth.com Expert_12044" | Trade comment |
| Slippage | 3 | Slippage in points |
| MaxSpread | 5.0 | Maximum spread in points |
| MaxDrawdownPercent | 10.0 | Maximum drawdown percentage |
| MaxRiskPerTrade | 2.0 | Maximum risk per trade % |
| MaxOpenTrades | 5 | Maximum open trades |
| StopLossPoints | 50.0 | Stop loss in points |
| TakeProfitPoints | 100.0 | Take profit in points |
| EnableDynamicLockProfit | true | Enable dynamic profit locking |
| LockProfitEvery_X_Points | 30.0 | Step: every X points profit |
| LockMinusBuffer | 15.0 | Lock profit minus X point buffer |
| EnableDynamicProfitManagementDebug | false | Enable debug logging for dynamic profit management |
| AllowOnlyProfitableAdditions | true | Only allow adding positions if existing trades are profitable |
| MinProfitInPointsPerTradeToAdd | 20.0 | Minimum profit required per existing trade in points |
| RequireToCheckForConfirmationBeforeAdding | true | Require to check active confirmation before adding new positions |
| EnableAdditionalPositionManagementDebug | false | Enable debug logging for additional position management |
| AdaptiveMA_Period | 14 | Adaptive MA base period |
| AdaptiveMA_Sensitivity | 2.0 | Adaptive sensitivity multiplier |
| RSI_Period | 14 | RSI period |
| RSI_Oversold | 30.0 | RSI oversold level |
| RSI_Overbought | 70.0 | RSI overbought level |
| RSI_UseCrossoverSignals | true | Use RSI crossover signals |
| RSI_UseDivergenceSignals | false | Use RSI divergence signals |
| EnableRSI_Debug | false | Enable RSI debug logging |
| UseHeikenAshi | true | Use Heiken Ashi for smoother signals |
| UseVolatilityFilter | true | Use volatility filter for entries |
| VolatilityThreshold | 0.3 | Minimum volatility threshold in points |
| EnableIndicatorDebug | false | Enable indicator debug logging |
| UseSessionFilter | false | Use trading session filter |
| TradeLondonSession | true | Trade during London session (8-16 GMT) |
| TradeNewYorkSession | true | Trade during New York session (13-21 GMT) |
| TradeOverlapSession | true | Trade during London/NY overlap (13-16 GMT) |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX12044 EURUSD_v1_0_1 — adaptive scalping EA with AMA, RSI, Heiken Ashi and volatility filter, full 12-layer stack."
#include <Trade/Trade.mqh>
#include <Trade/PositionInfo.mqh>
#include <Trade/AccountInfo.mqh>
//--- Global objects
CTrade trade;
CPositionInfo position;
CAccountInfo account;
//--- Input parameters
input group "=== BASIC SETTINGS ==="
input bool EnableTrading = true; // Enable trading
input bool EnableDebug = false; // Enable debug logging
input bool AllowBuys = true; // Allow opening buy orders
input bool AllowSells = true; // Allow opening sell orders
input double LotSize = 1.0; // Fixed lot size
input int MagicNumber = 22212044; // Magic number
input string InpTradeComment = "Psgrowth.com Expert_12044"; // Trade comment
input int Slippage = 3; // Slippage in points
input group "=== RISK MANAGEMENT ==="
input double MaxSpread = 5.0; // Maximum spread in points
input double MaxDrawdownPercent = 10.0; // Maximum drawdown percentage
input double MaxRiskPerTrade = 2.0; // Maximum risk per trade %
input int MaxOpenTrades = 5; // Maximum open trades
input double StopLossPoints = 50.0; // Stop loss in points
input double TakeProfitPoints = 100.0; // Take profit in points
input group "=== DYNAMIC PROFIT MANAGEMENT ==="
input bool EnableDynamicLockProfit = true; // Enable dynamic profit locking
input double LockProfitEvery_X_Points = 30.0; // Step: every X points profit
input double LockMinusBuffer = 15.0; // Lock profit minus X point buffer
input bool EnableDynamicProfitManagementDebug = false; // Enable debug logging for dynamic profit management
input group "=== Additional POSITION MANAGEMENT ==="
input bool AllowOnlyProfitableAdditions = true; // Only allow adding positions if existing trades are profitable
input double MinProfitInPointsPerTradeToAdd = 20.0; // Minimum profit required per existing trade in points
input bool RequireToCheckForConfirmationBeforeAdding = true; // Require to check active confirmation before adding new positions
input bool EnableAdditionalPositionManagementDebug = false; // Enable debug logging for additional position management
input group "=== ADAPTIVE INDICATORS ==="
input int AdaptiveMA_Period = 14; // Adaptive MA base period
input double AdaptiveMA_Sensitivity = 2.0; // Adaptive sensitivity multiplier
input group "=== RSI SETTINGS (V1.1) ==="
input int RSI_Period = 14; // RSI period
input double RSI_Oversold = 30.0; // RSI oversold level
input double RSI_Overbought = 70.0; // RSI overbought level
input bool RSI_UseCrossoverSignals = true; // Use RSI crossover signals
input bool RSI_UseDivergenceSignals = false; // Use RSI divergence signals
input bool EnableRSI_Debug = false; // Enable RSI debug logging
input group "=== ADDITIONAL INDICATORS ==="
input bool UseHeikenAshi = true; // Use Heiken Ashi for smoother signals
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 Other strategy EAs from our library
Pipsgrowth EX01007 Adaptive
Pipsgrowth.com EX01007 Adaptive XAUUSD 5M — multi-indicator signal scorer with regime filter, full 12-layer stack, configurable timeframe, trailing/BE/profit-lock toggles, pyramid gate, spread filter, new-bar gate, filling mode detection.
Pipsgrowth EX01019 Adaptive
Pipsgrowth.com EX01019 Self-Adaptive Market EA Fixed — multi-regime adaptive EA, full 12-layer stack.
Pipsgrowth EX15029 SMC-OrderBlock
Pipsgrowth.com EX15029 SMCBreakoutEA — SMC breakout CHOCH/liquidity sweep EA, full 12-layer stack.
Community
Educational purposes only. Do NOT use with real money. Test on demo accounts only.