//+------------------------------------------------------------------+ //| UnitedEA.mq5 | //| Copyright 2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.26" #property strict #property description "LOT_* nominal at ORCH_ReferenceBalance; scale = balance/equity ÷ reference (clamped). No performance-evaluator ranking." #include #include #include #include #include "MagicNumberHelpers.mqh" #include "GapGuard.mqh" #define UNITED_V2_DYNAMIC_LOTS double g_DB_LotSize; // Include strategy implementations early so structs are available #include "Strategies/DarvasBoxStrategy.mqh" #include "Strategies/EMASlopeDistanceStrategy.mqh" #include "Strategies/RSICrossOverReversalStrategy.mqh" #include "Strategies/RSIMidPointHijackStrategy.mqh" #include "Strategies/RSIScalpingStrategy.mqh" #include "Strategies/SuperEMAStrategy.mqh" #include "Strategies/RSIReversalAsianStrategy.mqh" #include "Strategies/RSIConsolidationStrategy.mqh" #include "Strategies/SimpleTrendlineStrategy.mqh" #include "Strategies/RSISecretSauceStrategy.mqh" #include "Strategies/USDJPYBusterStrategy.mqh" #include "Strategies/XAUBearTrendStrategy.mqh" #include "Strategies/XAUMomentumBreakdownStrategy.mqh" //+------------------------------------------------------------------+ //| Global Lot Size Variables (for dynamic lot sizing) | //+------------------------------------------------------------------+ double g_ES_LotSize; // EMA Slope Distance lot size double g_RC_LotSize; // RSI CrossOver Reversal lot size double g_RM_LotSize; // RSI MidPoint Hijack lot size double g_Pos_RS_APPL; double g_Pos_RS_ADBE; double g_Pos_RS_BTCUSD; double g_Pos_RS_NVDA; double g_Pos_RS_TSLA; double g_Pos_RS_XAUUSD; double g_Pos_RS_MU; double g_Pos_RRA_EURUSD; double g_Pos_RRA_AUDUSD; double g_Pos_SE; double g_Pos_RCO; double g_Pos_ST_BTCUSD; double g_Pos_ST_XAUUSD; double g_Pos_ST_GER40; double g_RSS_LotSize; double g_Pos_UB_USDJPY; double g_Pos_XBT_XAUUSD; double g_Pos_XMB_XAUUSD; double g_Pos_RRA_GBPUSD; double g_Pos_GB_GER40; double g_Pos_RS_NAS100; double g_Pos_RS_US500; double g_Pos_RRA_USDCHF; double g_Pos_RRA_NZDUSD; double g_Pos_NB_NAS100; double g_Pos_U5B_US500; double g_Pos_RS_US30; double g_Pos_RS_XAGUSD; double g_Pos_RS_EURJPY; double g_Pos_RS_GBPJPY; double g_Pos_U30B_US30; double g_Pos_UKB_UK100; double g_Pos_XGB_XAGUSD; double g_Pos_RS_F; double g_Pos_RS_SOFI; double g_Pos_RS_SNAP; double g_Pos_RS_WBD; input group "=== Signal Replacement — close unprofitable on new signal (per strategy) ===" input bool DB_CloseUnprofitableOnNewSignal = false; input bool ES_CloseUnprofitableOnNewSignal = true; // audit 2026-07 +174 net / +1.46 sharpe input bool RC_CloseUnprofitableOnNewSignal = false; input bool RM_CloseUnprofitableOnNewSignal = false; input bool RS_APPL_CloseUnprofitableOnNewSignal = false; input bool RS_ADBE_CloseUnprofitableOnNewSignal = false; input bool RS_BTCUSD_CloseUnprofitableOnNewSignal = false; input bool RS_NVDA_CloseUnprofitableOnNewSignal = false; input bool RS_TSLA_CloseUnprofitableOnNewSignal = false; // audit 2026-07 NEUTRAL (-11 net) input bool RS_XAUUSD_CloseUnprofitableOnNewSignal = true; // audit 2026-07 +677 net / +1.92 sharpe input bool RS_MU_CloseUnprofitableOnNewSignal = false; input bool RRA_EURUSD_CloseUnprofitableOnNewSignal = false; input bool RRA_AUDUSD_CloseUnprofitableOnNewSignal = false; input bool SE_CloseUnprofitableOnNewSignal = false; input bool RCO_CloseUnprofitableOnNewSignal = false; input bool ST_BTC_CloseUnprofitableOnNewSignal = false; input bool ST_XAU_CloseUnprofitableOnNewSignal = false; input bool ST_GER_CloseUnprofitableOnNewSignal = false; input bool RSS_CloseUnprofitableOnNewSignal = false; input bool UB_CloseUnprofitableOnNewSignal = false; input bool XBT_CloseUnprofitableOnNewSignal = false; input bool XMB_CloseUnprofitableOnNewSignal = false; input bool RRA_GBPUSD_CloseUnprofitableOnNewSignal = false; input bool GB_CloseUnprofitableOnNewSignal = false; input bool RS_NAS100_CloseUnprofitableOnNewSignal = false; input bool RS_US500_CloseUnprofitableOnNewSignal = false; input bool RRA_USDCHF_CloseUnprofitableOnNewSignal = false; input bool RRA_NZDUSD_CloseUnprofitableOnNewSignal = false; input bool NB_CloseUnprofitableOnNewSignal = false; input bool U5B_CloseUnprofitableOnNewSignal = false; input bool RS_US30_CloseUnprofitableOnNewSignal = true; // audit 2026-07 +92 net / +0.68 sharpe input bool RS_XAGUSD_CloseUnprofitableOnNewSignal = false; input bool RS_EURJPY_CloseUnprofitableOnNewSignal = false; input bool RS_GBPJPY_CloseUnprofitableOnNewSignal = false; input bool U30B_CloseUnprofitableOnNewSignal = false; input bool UKB_CloseUnprofitableOnNewSignal = false; input bool XGB_CloseUnprofitableOnNewSignal = false; input bool RS_F_CloseUnprofitableOnNewSignal = false; input bool RS_SOFI_CloseUnprofitableOnNewSignal = false; input bool RS_SNAP_CloseUnprofitableOnNewSignal = false; input bool RS_WBD_CloseUnprofitableOnNewSignal = false; bool United_MayOpenNewEntry(const string symbol, const ulong magic, const bool isBuy, CTrade &trade, const bool closeUnprofitableOnNewSignal) { if(!United_PrepareEntrySlot(trade, symbol, magic, closeUnprofitableOnNewSignal)) return false; if(United_IsGapRiskWindow(symbol)) return false; return true; } //+------------------------------------------------------------------+ //| Strategy Enable/Disable Switches | //+------------------------------------------------------------------+ input group "=== Strategy Enable/Disable ===" input bool EnableDarvasBox = true; input bool EnableEMASlopeDistance = true; input bool EnableRSICrossOverReversal = true; input bool EnableRSIMidPointHijack = true; input bool EnableRSIScalpingAPPL = false; input bool EnableRSIScalpingADBE = false; input bool EnableRSIScalpingBTCUSD = true; input bool EnableRSIScalpingNVDA = true; input bool EnableRSIScalpingTSLA = true; input bool EnableRSIScalpingXAUUSD = true; input bool EnableRSIScalpingMU = false; // high share price (~$1000+) — margin risk input bool EnableSuperEMA = true; input bool EnableRSIConsolidation = false; input bool EnableRSIReversalAsianEURUSD = false; input bool EnableRSIReversalAsianAUDUSD = true; input bool EnableSimpleTrendlineBTCUSD = true; input bool EnableSimpleTrendlineXAUUSD = true; input bool EnableSimpleTrendlineGER40 = false; input bool EnableRSISecretSauce = false; input bool EnableUSDJPYBuster = true; input bool EnableXAUBearTrend = false; input bool EnableXAUMomentumBreakdown = false; input bool EnableRSIReversalAsianGBPUSD = true; input bool EnableGER40Buster = true; input bool EnableRSIScalpingNAS100 = true; input bool EnableRSIScalpingUS500 = false; input bool EnableRSIReversalAsianUSDCHF = false; input bool EnableRSIReversalAsianNZDUSD = false; input bool EnableNAS100Buster = false; input bool EnableUS500Buster = true; input bool EnableRSIScalpingUS30 = true; input bool EnableRSIScalpingXAGUSD = false; input bool EnableRSIScalpingEURJPY = false; input bool EnableRSIScalpingGBPJPY = false; input bool EnableUS30Buster = false; input bool EnableUK100Buster = true; input bool EnableXAGUSDBuster = false; input bool EnableRSIScalpingF = false; input bool EnableRSIScalpingSOFI = false; input bool EnableRSIScalpingSNAP = false; input bool EnableRSIScalpingWBD = false; input bool OPT_GuardOptimizationMode = true; // legacy compatibility with 123.set input group "=== Centralized Lot Size (Granular Per Robot) ===" input double LOT_DB_DarvasBox = 0.01; input double LOT_ES_EMASlopeDistance = 0.07; input double LOT_RC_RSICrossOver = 0.1; input double LOT_RM_RSIMidPointHijack = 0.01; input double LOT_RS_APPL = 5; input double LOT_RS_ADBE = 5; input double LOT_RS_BTCUSD = 0.06; input double LOT_RS_NVDA = 5; input double LOT_RS_TSLA = 5; input double LOT_RS_XAUUSD = 0.04; input double LOT_RS_MU = 5.0; input double LOT_RRA_EURUSD = 0.03; input double LOT_RRA_AUDUSD = 0.05; input double LOT_SE_SuperEMA = 0.01; input double LOT_RCO_RSIConsolidation = 0.1; input double LOT_ST_BTCUSD = 0.01; input double LOT_ST_XAUUSD = 0.01; input double LOT_ST_GER40 = 0.10; input double LOT_RSS_SecretSauce = 0.1; input double LOT_UB_USDJPY = 0.03; input double LOT_XBT_XAUUSD = 0.02; input double LOT_XMB_XAUUSD = 0.02; input double LOT_RRA_GBPUSD = 0.03; input double LOT_GB_GER40 = 0.01; input double LOT_RS_NAS100 = 0.03; input double LOT_RS_US500 = 0.1; input double LOT_RRA_USDCHF = 0.1; input double LOT_RRA_NZDUSD = 0.1; input double LOT_NB_NAS100 = 0.05; input double LOT_U5B_US500 = 0.05; input double LOT_RS_US30 = 0.02; input double LOT_RS_XAGUSD = 0.05; input double LOT_RS_EURJPY = 0.08; input double LOT_RS_GBPJPY = 0.08; input double LOT_U30B_US30 = 0.05; input double LOT_UKB_UK100 = 0.01; input double LOT_XGB_XAGUSD = 0.05; input double LOT_RS_F = 10.0; // ~$14 stock, ~$7 margin @ 10 sh input double LOT_RS_SOFI = 10.0; input double LOT_RS_SNAP = 10.0; input double LOT_RS_WBD = 10.0; input group "=== Balance-based position sizing ===" input bool ORCH_ScaleLotsByBalance = true; input bool ORCH_UseEquityInsteadOfBalance = false; input double ORCH_ReferenceBalance = 3000.0; input double ORCH_MinBalanceScale = 0.1; input double ORCH_MaxBalanceScale = 100000.0; input group "=== Gap Loss Prevention (跳空) ===" input bool GAP_Enable = false; // match 123.set / audit backtests (true = more session flats) input bool GAP_CloseBeforeSessionEnd = true; input int GAP_MinutesBeforeClose = 15; input bool GAP_CloseBeforeWeekend = true; input int GAP_FridayCloseHour = 20; input bool GAP_CloseOnBarGapThroughSL = true; input double GAP_MinGapPoints = 0.0; input int GAP_EquityDailyFlatHour = 21; //+------------------------------------------------------------------+ //| Strategy 1: DarvasBoxXAUUSD | //+------------------------------------------------------------------+ input group "=== DarvasBox Strategy ===" input string DB_Symbol = "XAUUSD"; input int DB_BoxPeriod = 165; input double DB_BoxDeviation = 30000; // Increased to allow larger ranges (was 25140) input int DB_VolumeThreshold = 0; // Set to 0 to disable volume threshold check. Volume data from indicator used instead. input double DB_StopLoss = 1665; input double DB_TakeProfit = 3685; input bool DB_EnableLogging = false; input color DB_BoxColor = (color)16711680; input int DB_BoxWidth = 1; input ENUM_TIMEFRAMES DB_TrendTimeframe = PERIOD_H2; input int DB_MA_Period = 125; input ENUM_MA_METHOD DB_MA_Method = MODE_EMA; input ENUM_APPLIED_PRICE DB_MA_Price = PRICE_WEIGHTED; input double DB_TrendThreshold = 4.94; input int DB_VolumeMA_Period = 110; input double DB_VolumeThresholdMultiplier = 1.5; input bool DB_UseVolumeSpikeFilter = true; input bool DB_UseTrendFilter = true; input int DB_MagicNumber = 135790; //+------------------------------------------------------------------+ //| Strategy 2: EMASlopeDistanceCocktailXAUUSD | //| PEPPERSTONE US: Gold symbol is typically "XAUUSD" or "GOLD" | //+------------------------------------------------------------------+ input group "=== EMA Slope Distance Strategy ===" input string ES_Symbol = "XAUUSD"; input int ES_EMA_Periode = 46; input double ES_PreisSchwelle = 600.0; input double ES_SteigungSchwelle = 80.0; input int ES_ÜberwachungTimeout = 800; input double ES_TrailingStop = 370.0; input bool ES_UseTrailingStop = true; input double ES_TrailingActivationPips = 0.0; input bool ES_UseStaleStopLossExit = false; input int ES_StaleStopLossSeconds = 33800; input double ES_LotGröße = 0.07; input int ES_MagicNumber = 12350; input bool ES_UseSpreadAdjustment = true; input ENUM_TIMEFRAMES ES_Timeframe = PERIOD_H1; input bool ES_UseBarData = true; input int ES_MaxTradesPerCrossover = 9; input int ES_ProfitCheckBars = 18; input bool ES_CloseUnprofitableTrades = true; input bool ES_UseWeeklyADXFilter = true; input int ES_WeeklyADXPeriod = 15; input double ES_WeeklyADXMin = 40.0; input int ES_WeeklyADXBarShift = 2; input bool ES_WeeklyADXUseDirection = true; //+------------------------------------------------------------------+ //| Strategy 3: RSICrossOverReversalXAUUSD | //| PEPPERSTONE US: Gold symbol is typically "XAUUSD" or "GOLD" | //+------------------------------------------------------------------+ input group "=== RSI CrossOver Reversal Strategy ===" input string RC_Symbol = "XAUUSD"; input int RC_MagicNumber = 7; input int RC_rsiPeriod = 19; input int RC_overboughtLevel = 93; input int RC_oversoldLevel = 22; input double RC_entryRSIBuySpread = 0; input double RC_entryRSISellSpread = 0; input double RC_lotSize = 0.1; input int RC_slippage = 3; input int RC_cooldownSeconds = 209; input ENUM_TIMEFRAMES RC_TimeFrame1 = PERIOD_M1; input ENUM_TIMEFRAMES RC_TimeFrame2 = PERIOD_M1; input ENUM_TIMEFRAMES RC_BarTimeFrame = PERIOD_M12; input int RC_emaPeriod = 140; input double RC_emaSlopeThreshold = 105; input double RC_exitBuyRSI = 86; input double RC_exitSellRSI = 10; input double RC_TrailingStop = 295; input double RC_emaDistanceThreshold = 165; input bool RC_UseTrendStrengthFilter = true; input int RC_tradingHourOneBegin = 24; input int RC_tradingHourOneEnd = 22; input int RC_tradingHourTwoBegin = 6; input int RC_tradingHourTwoEnd = 19; input bool RC_Sunday = false; input bool RC_Monday = false; input bool RC_Tuesday = true; input bool RC_Wednesday = true; input bool RC_Thursday = true; input bool RC_Friday = false; input bool RC_Saturday = false; //+------------------------------------------------------------------+ //| Strategy 4: RSIMidPointHijackXAUUSD | //| PEPPERSTONE US: Gold symbol is typically "XAUUSD" or "GOLD" | //+------------------------------------------------------------------+ input group "=== RSI MidPoint Hijack Strategy ===" input string RM_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES RM_InpTimeframe = PERIOD_H1; input double RM_InpLotSize = 0.1; input int RM_InpMagicNumberRSIFollow = 1001; input int RM_InpMagicNumberRSIReverse = 1002; input int RM_InpMagicNumberEMACross = 1003; input bool RM_InpEnableRSIFollow = true; input bool RM_InpEnableRSIReverse = true; input bool RM_InpEnableEMACross = true; input bool RM_InpEnableStrategyLock = false; input double RM_InpLockProfitThreshold = 0.0; input bool RM_InpCloseOppositeTrades = false; input int RM_InpRSIPeriod = 32; input int RM_InpRSIOverbought = 78; input int RM_InpRSIOversold = 46; input int RM_InpRSIExitLevel = 44; input int RM_InpRSIFollowStartHour = 23; input int RM_InpRSIFollowEndHour = 8; input bool RM_InpRSIFollowCloseOutsideHours = false; input int RM_InpRSIReversePeriod = 59; input int RM_InpRSIReverseOverbought = 51; input int RM_InpRSIReverseOversold = 49; input int RM_InpRSIReverseCrossLevel = 53; input int RM_InpRSIReverseExitLevel = 48; input int RM_InpRSIReverseStartHour = 7; input int RM_InpRSIReverseEndHour = 13; input bool RM_InpRSIReverseCloseOutsideHours = false; input int RM_InpRSIReverseCooldownBars = 15; input bool RM_InpRSIReverseCooldownOnLoss = true; input int RM_InpEMAPeriod = 120; input int RM_InpEMACrossStartHour = 8; input int RM_InpEMACrossEndHour = 14; input bool RM_InpEMACrossCloseOutsideHours = true; input bool RM_InpUseEMADistanceEntry = true; input double RM_InpEMADistancePips = 160.0; input int RM_InpEMADistancePeriod = 26; //+------------------------------------------------------------------+ //| Strategy 5-10: RSI Scalping Strategies | //| Each RSI Scalping strategy trades on its own symbol: | //| - APPL: Apple stock (AAPL) | //| - BTCUSD: Bitcoin/USD | //| - NVDA: NVIDIA stock | //| - TSLA: Tesla stock | //| - XAUUSD: Gold/USD | //| | //| PEPPERSTONE US SYMBOL FORMATS: | //| - Stocks may use: "AAPL.US", "NASDAQ:AAPL", or just "AAPL" | //| - To find correct symbols: | //| 1. Open Market Watch (Ctrl+M) | //| 2. Right-click > Show All | //| 3. Search for the stock name | //| 4. Use the exact symbol name shown | //+------------------------------------------------------------------+ input group "=== RSI Scalping APPL (AAPL) - Pepperstone US ===" input string RS_APPL_Symbol = "AAPL.NAS"; input ENUM_TIMEFRAMES RS_APPL_TimeFrame = PERIOD_M10; input int RS_APPL_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_APPL_RSI_Applied_Price = PRICE_CLOSE; input double RS_APPL_RSI_Overbought = 80; input double RS_APPL_RSI_Oversold = 78; input double RS_APPL_RSI_Target_Buy = 94; input double RS_APPL_RSI_Target_Sell = 44; input int RS_APPL_BarsToWait = 7; input double RS_APPL_LotSize = 25; input int RS_APPL_MagicNumber = 20001; input int RS_APPL_Slippage = 3; input group "=== RSI Scalping ADBE - Pepperstone US ===" input string RS_ADBE_Symbol = "ADBE.NAS"; input ENUM_TIMEFRAMES RS_ADBE_TimeFrame = (ENUM_TIMEFRAMES)6; input int RS_ADBE_RSI_Period = 15; input ENUM_APPLIED_PRICE RS_ADBE_RSI_Applied_Price = PRICE_OPEN; input double RS_ADBE_RSI_Overbought = 16; input double RS_ADBE_RSI_Oversold = 42; input double RS_ADBE_RSI_Target_Buy = 67; input double RS_ADBE_RSI_Target_Sell = 62; input int RS_ADBE_BarsToWait = 8; input double RS_ADBE_LotSize = 5.0; input int RS_ADBE_MagicNumber = 12345; input int RS_ADBE_Slippage = 3; input group "=== RSI Scalping BTCUSD ===" input string RS_BTCUSD_Symbol = "BTCUSD"; // Pepperstone may use: "BTCUSD", "BTC/USD", or "BTCUSD.c" input ENUM_TIMEFRAMES RS_BTCUSD_TimeFrame = PERIOD_H1; input int RS_BTCUSD_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_BTCUSD_RSI_Applied_Price = PRICE_CLOSE; input double RS_BTCUSD_RSI_Overbought = 90; input double RS_BTCUSD_RSI_Oversold = 73; input double RS_BTCUSD_RSI_Target_Buy = 88; input double RS_BTCUSD_RSI_Target_Sell = 48; input int RS_BTCUSD_BarsToWait = 6; input double RS_BTCUSD_LotSize = 0.1; input int RS_BTCUSD_MagicNumber = 123459123; input int RS_BTCUSD_Slippage = 3; input group "=== RSI Scalping NVDA - Pepperstone US ===" input string RS_NVDA_Symbol = "NVDA.NAS"; input ENUM_TIMEFRAMES RS_NVDA_TimeFrame = PERIOD_M15; input int RS_NVDA_RSI_Period = 8; input ENUM_APPLIED_PRICE RS_NVDA_RSI_Applied_Price = PRICE_CLOSE; input double RS_NVDA_RSI_Overbought = 36; input double RS_NVDA_RSI_Oversold = 38; input double RS_NVDA_RSI_Target_Buy = 90; input double RS_NVDA_RSI_Target_Sell = 70; input int RS_NVDA_BarsToWait = 5; input double RS_NVDA_LotSize = 5; input int RS_NVDA_MagicNumber = 20003; input int RS_NVDA_Slippage = 3; input group "=== RSI Scalping TSLA - Pepperstone US ===" input string RS_TSLA_Symbol = "TSLA.NAS"; input ENUM_TIMEFRAMES RS_TSLA_TimeFrame = PERIOD_H1; input int RS_TSLA_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_TSLA_RSI_Applied_Price = PRICE_CLOSE; input double RS_TSLA_RSI_Overbought = 54; input double RS_TSLA_RSI_Oversold = 73; input double RS_TSLA_RSI_Target_Buy = 87; input double RS_TSLA_RSI_Target_Sell = 33; input int RS_TSLA_BarsToWait = 1; input double RS_TSLA_LotSize = 5; input int RS_TSLA_MagicNumber = 125421321; input int RS_TSLA_Slippage = 3; input group "=== RSI Scalping XAUUSD ===" input string RS_XAUUSD_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES RS_XAUUSD_TimeFrame = PERIOD_H1; input int RS_XAUUSD_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_XAUUSD_RSI_Applied_Price = PRICE_CLOSE; input double RS_XAUUSD_RSI_Overbought = 71; input double RS_XAUUSD_RSI_Oversold = 57; input double RS_XAUUSD_RSI_Target_Buy = 80; input double RS_XAUUSD_RSI_Target_Sell = 57; input int RS_XAUUSD_BarsToWait = 4; input double RS_XAUUSD_LotSize = 0.1; input int RS_XAUUSD_MagicNumber = 129102315; input int RS_XAUUSD_Slippage = 3; input group "=== RSI Scalping MU ===" input string RS_MU_Symbol = "MU.NAS"; input ENUM_TIMEFRAMES RS_MU_TimeFrame = PERIOD_M20; input int RS_MU_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_MU_RSI_Applied_Price = PRICE_CLOSE; input double RS_MU_RSI_Overbought = 32; input double RS_MU_RSI_Oversold = 86; input double RS_MU_RSI_Target_Buy = 100; input double RS_MU_RSI_Target_Sell = 24; input int RS_MU_BarsToWait = 34; input double RS_MU_LotSize = 5.0; input int RS_MU_MagicNumber = 129102316; input int RS_MU_Slippage = 3; input group "=== RSI Scalping NAS100 ===" input string RS_NAS100_Symbol = "NAS100"; input ENUM_TIMEFRAMES RS_NAS100_TimeFrame = PERIOD_H1; input int RS_NAS100_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_NAS100_RSI_Applied_Price = PRICE_CLOSE; input double RS_NAS100_RSI_Overbought = 58; input double RS_NAS100_RSI_Oversold = 42; input double RS_NAS100_RSI_Target_Buy = 78; input double RS_NAS100_RSI_Target_Sell = 46; input int RS_NAS100_BarsToWait = 4; input int RS_NAS100_MagicNumber = 20005; input int RS_NAS100_Slippage = 5; input group "=== RSI Scalping US500 ===" input string RS_US500_Symbol = "US500"; input ENUM_TIMEFRAMES RS_US500_TimeFrame = PERIOD_H1; input int RS_US500_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_US500_RSI_Applied_Price = PRICE_CLOSE; input double RS_US500_RSI_Overbought = 62; input double RS_US500_RSI_Oversold = 38; input double RS_US500_RSI_Target_Buy = 80; input double RS_US500_RSI_Target_Sell = 44; input int RS_US500_BarsToWait = 5; input int RS_US500_MagicNumber = 20006; input int RS_US500_Slippage = 5; input group "=== RSI Scalping US30 ===" input string RS_US30_Symbol = "US30"; input ENUM_TIMEFRAMES RS_US30_TimeFrame = PERIOD_H1; input int RS_US30_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_US30_RSI_Applied_Price = PRICE_CLOSE; input double RS_US30_RSI_Overbought = 56; input double RS_US30_RSI_Oversold = 44; input double RS_US30_RSI_Target_Buy = 76; input double RS_US30_RSI_Target_Sell = 48; input int RS_US30_BarsToWait = 4; input int RS_US30_MagicNumber = 20007; input int RS_US30_Slippage = 5; input group "=== RSI Scalping XAGUSD ===" input string RS_XAGUSD_Symbol = "XAGUSD"; input ENUM_TIMEFRAMES RS_XAGUSD_TimeFrame = PERIOD_H1; input int RS_XAGUSD_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_XAGUSD_RSI_Applied_Price = PRICE_CLOSE; input double RS_XAGUSD_RSI_Overbought = 65; input double RS_XAGUSD_RSI_Oversold = 35; input double RS_XAGUSD_RSI_Target_Buy = 82; input double RS_XAGUSD_RSI_Target_Sell = 42; input int RS_XAGUSD_BarsToWait = 5; input int RS_XAGUSD_MagicNumber = 20008; input int RS_XAGUSD_Slippage = 5; input group "=== RSI Scalping EURJPY ===" input string RS_EURJPY_Symbol = "EURJPY"; input ENUM_TIMEFRAMES RS_EURJPY_TimeFrame = PERIOD_M30; input int RS_EURJPY_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_EURJPY_RSI_Applied_Price = PRICE_CLOSE; input double RS_EURJPY_RSI_Overbought = 60; input double RS_EURJPY_RSI_Oversold = 40; input double RS_EURJPY_RSI_Target_Buy = 75; input double RS_EURJPY_RSI_Target_Sell = 45; input int RS_EURJPY_BarsToWait = 4; input int RS_EURJPY_MagicNumber = 20009; input int RS_EURJPY_Slippage = 3; input group "=== RSI Scalping GBPJPY ===" input string RS_GBPJPY_Symbol = "GBPJPY"; input ENUM_TIMEFRAMES RS_GBPJPY_TimeFrame = PERIOD_M30; input int RS_GBPJPY_RSI_Period = 14; input ENUM_APPLIED_PRICE RS_GBPJPY_RSI_Applied_Price = PRICE_CLOSE; input double RS_GBPJPY_RSI_Overbought = 62; input double RS_GBPJPY_RSI_Oversold = 38; input double RS_GBPJPY_RSI_Target_Buy = 78; input double RS_GBPJPY_RSI_Target_Sell = 44; input int RS_GBPJPY_BarsToWait = 4; input int RS_GBPJPY_MagicNumber = 20010; input int RS_GBPJPY_Slippage = 3; input group "=== RSI Scalping Reversal Escape (XAUUSD only) ===" input bool RS_UseReversalEscape = true; input int RS_ReversalATRPeriod = 14; input double RS_ReversalAdverseAtrMult = 5.25; input int RS_ReversalSignsRequired = 2; input double RS_ReversalRsiVelocity = 16.0; input double RS_ReversalBodyAtrMult = 5.1; input group "=== RSI Scalping APPL — Trailing (cluster-fuck BTC-style defaults) ===" input bool RS_APPL_UseTrailingStop = true; input double RS_APPL_TrailDistancePoints = 120.0; input double RS_APPL_TrailActivationPoints = 0.0; input group "=== RSI Scalping ADBE — Trailing ===" input bool RS_ADBE_UseTrailingStop = true; input double RS_ADBE_TrailDistancePoints = 425.0; input double RS_ADBE_TrailActivationPoints = 18.5; input group "=== RSI Scalping BTCUSD — Trailing ===" input bool RS_BTCUSD_UseTrailingStop = true; input double RS_BTCUSD_TrailDistancePoints = 120.0; input double RS_BTCUSD_TrailActivationPoints = 0.0; input group "=== RSI Scalping NVDA — Trailing ===" input bool RS_NVDA_UseTrailingStop = true; input double RS_NVDA_TrailDistancePoints = 375.0; input double RS_NVDA_TrailActivationPoints = 75.0; input group "=== RSI Scalping TSLA — Trailing ===" input bool RS_TSLA_UseTrailingStop = true; input double RS_TSLA_TrailDistancePoints = 900.0; input double RS_TSLA_TrailActivationPoints = 500.0; input group "=== RSI Scalping XAUUSD — Trailing ===" input bool RS_XAUUSD_UseTrailingStop = true; input double RS_XAUUSD_TrailDistancePoints = 71.0; input double RS_XAUUSD_TrailActivationPoints = 41.0; input group "=== RSI Scalping NAS100 — Trailing ===" input bool RS_NAS100_UseTrailingStop = true; input double RS_NAS100_TrailDistancePoints = 180.0; input double RS_NAS100_TrailActivationPoints = 60.0; input group "=== RSI Scalping US500 — Trailing ===" input bool RS_US500_UseTrailingStop = true; input double RS_US500_TrailDistancePoints = 150.0; input double RS_US500_TrailActivationPoints = 50.0; input group "=== RSI Scalping US30 — Trailing ===" input bool RS_US30_UseTrailingStop = true; input double RS_US30_TrailDistancePoints = 200.0; input double RS_US30_TrailActivationPoints = 70.0; input group "=== RSI Scalping XAGUSD — Trailing ===" input bool RS_XAGUSD_UseTrailingStop = true; input double RS_XAGUSD_TrailDistancePoints = 90.0; input double RS_XAGUSD_TrailActivationPoints = 35.0; input group "=== RSI Scalping EURJPY — Trailing ===" input bool RS_EURJPY_UseTrailingStop = true; input double RS_EURJPY_TrailDistancePoints = 45.0; input double RS_EURJPY_TrailActivationPoints = 20.0; input group "=== RSI Scalping GBPJPY — Trailing ===" input bool RS_GBPJPY_UseTrailingStop = true; input double RS_GBPJPY_TrailDistancePoints = 55.0; input double RS_GBPJPY_TrailActivationPoints = 25.0; input group "=== RSI Scalping F (Ford, low margin) ===" input string RS_F_Symbol = "F.NYS"; input ENUM_TIMEFRAMES RS_F_TimeFrame = PERIOD_M15; input int RS_F_RSI_Period = 8; input ENUM_APPLIED_PRICE RS_F_RSI_Applied_Price = PRICE_CLOSE; input double RS_F_RSI_Overbought = 36; input double RS_F_RSI_Oversold = 38; input double RS_F_RSI_Target_Buy = 90; input double RS_F_RSI_Target_Sell = 70; input int RS_F_BarsToWait = 5; input int RS_F_MagicNumber = 20011; input int RS_F_Slippage = 5; input group "=== RSI Scalping SOFI (low margin) ===" input string RS_SOFI_Symbol = "SOFI.NAS"; input ENUM_TIMEFRAMES RS_SOFI_TimeFrame = PERIOD_M15; input int RS_SOFI_RSI_Period = 8; input ENUM_APPLIED_PRICE RS_SOFI_RSI_Applied_Price = PRICE_CLOSE; input double RS_SOFI_RSI_Overbought = 36; input double RS_SOFI_RSI_Oversold = 38; input double RS_SOFI_RSI_Target_Buy = 90; input double RS_SOFI_RSI_Target_Sell = 70; input int RS_SOFI_BarsToWait = 5; input int RS_SOFI_MagicNumber = 20012; input int RS_SOFI_Slippage = 5; input group "=== RSI Scalping SNAP (Snap, ultra-low margin) ===" input string RS_SNAP_Symbol = "SNAP.NYS"; input ENUM_TIMEFRAMES RS_SNAP_TimeFrame = PERIOD_M15; input int RS_SNAP_RSI_Period = 8; input ENUM_APPLIED_PRICE RS_SNAP_RSI_Applied_Price = PRICE_CLOSE; input double RS_SNAP_RSI_Overbought = 36; input double RS_SNAP_RSI_Oversold = 38; input double RS_SNAP_RSI_Target_Buy = 90; input double RS_SNAP_RSI_Target_Sell = 70; input int RS_SNAP_BarsToWait = 5; input int RS_SNAP_MagicNumber = 20013; input int RS_SNAP_Slippage = 5; input group "=== RSI Scalping WBD (Warner Bros, low margin) ===" input string RS_WBD_Symbol = "WBD.NAS"; input ENUM_TIMEFRAMES RS_WBD_TimeFrame = PERIOD_M15; input int RS_WBD_RSI_Period = 8; input ENUM_APPLIED_PRICE RS_WBD_RSI_Applied_Price = PRICE_CLOSE; input double RS_WBD_RSI_Overbought = 36; input double RS_WBD_RSI_Oversold = 38; input double RS_WBD_RSI_Target_Buy = 90; input double RS_WBD_RSI_Target_Sell = 70; input int RS_WBD_BarsToWait = 5; input int RS_WBD_MagicNumber = 20014; input int RS_WBD_Slippage = 5; input group "=== RSI Scalping F — Trailing ===" input bool RS_F_UseTrailingStop = true; input double RS_F_TrailDistancePoints = 375.0; input double RS_F_TrailActivationPoints = 75.0; input group "=== RSI Scalping SOFI — Trailing ===" input bool RS_SOFI_UseTrailingStop = true; input double RS_SOFI_TrailDistancePoints = 375.0; input double RS_SOFI_TrailActivationPoints = 75.0; input group "=== RSI Scalping SNAP — Trailing ===" input bool RS_SNAP_UseTrailingStop = true; input double RS_SNAP_TrailDistancePoints = 375.0; input double RS_SNAP_TrailActivationPoints = 75.0; input group "=== RSI Scalping WBD — Trailing ===" input bool RS_WBD_UseTrailingStop = true; input double RS_WBD_TrailDistancePoints = 375.0; input double RS_WBD_TrailActivationPoints = 75.0; //+------------------------------------------------------------------+ //| Strategy 11-12: RSI Reversal Asian Strategies | //| Each RSI Reversal Asian strategy trades on its own symbol: | //| - EURUSD: Euro/USD | //| - AUDUSD: Australian Dollar/USD | //+------------------------------------------------------------------+ input group "=== RSI Reversal Asian EURUSD ===" input string RRA_EURUSD_Symbol = "EURUSD"; input int RRA_EURUSD_RSIPeriod = 28; input double RRA_EURUSD_OverboughtLevel = 60; input double RRA_EURUSD_OversoldLevel = 8; input int RRA_EURUSD_TakeProfitPips = 175; input int RRA_EURUSD_StopLossPips = 5; input double RRA_EURUSD_MaxLotSize = 0.1; input int RRA_EURUSD_MaxSpread = 1000; input int RRA_EURUSD_MaxDuration = 270; input bool RRA_EURUSD_UseStopLoss = false; input bool RRA_EURUSD_UseTakeProfit = false; input bool RRA_EURUSD_UseRSIExit = true; input double RRA_EURUSD_RSIExitLevel = 55; input bool RRA_EURUSD_CloseOutsideSession = false; input ENUM_TIMEFRAMES RRA_EURUSD_TimeFrame = PERIOD_M15; input int RRA_EURUSD_MagicNumber = 30001; input int RRA_EURUSD_Slippage = 3; input group "=== RSI Reversal Asian AUDUSD ===" input string RRA_AUDUSD_Symbol = "AUDUSD"; input int RRA_AUDUSD_RSIPeriod = 28; input double RRA_AUDUSD_OverboughtLevel = 68; input double RRA_AUDUSD_OversoldLevel = 30; input int RRA_AUDUSD_TakeProfitPips = 175; input int RRA_AUDUSD_StopLossPips = 5; input double RRA_AUDUSD_MaxLotSize = 0.2; input int RRA_AUDUSD_MaxSpread = 1000; input int RRA_AUDUSD_MaxDuration = 340; input bool RRA_AUDUSD_UseStopLoss = false; input bool RRA_AUDUSD_UseTakeProfit = false; input bool RRA_AUDUSD_UseRSIExit = true; input double RRA_AUDUSD_RSIExitLevel = 48; input bool RRA_AUDUSD_CloseOutsideSession = true; input ENUM_TIMEFRAMES RRA_AUDUSD_TimeFrame = PERIOD_M15; input int RRA_AUDUSD_MagicNumber = 30002; input int RRA_AUDUSD_Slippage = 3; input group "=== SuperEMA (EMA + CCI + MACD) ===" input string SE_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES SE_Timeframe = PERIOD_M15; input double SE_LotSize = 0.01; input int SE_SlippagePoints = 55; input int SE_MagicNumber = 940001; input int SE_EmaFast = 40; input int SE_EmaMid = 180; input int SE_EmaSlow = 125; input int SE_EmaTrendBars = 3; input int SE_CciPeriod = 17; input double SE_CciOverbought = 80.0; input double SE_CciOversold = -140.0; input int SE_PullbackCciLookback = 20; input int SE_MacdFast = 14; input int SE_MacdSlow = 38; input int SE_MacdSignal = 9; input ENUM_SE_ENTRY_STYLE SE_EntryStyle = SE_ENTRY_LAMBERT; input bool SE_OneTradeOnly = true; input bool SE_UseStructuralSL = false; input double SE_SlBufferPoints = 110; input bool SE_ExitOnTrendFlip = false; input bool SE_ExitOnMacdFlip = false; input bool SE_ExitOnCciZeroCross = true; input int SE_MaxHoldingBars = 168; input bool SE_ExitBelowMidEma = false; input bool SE_DebugLogs = false; input group "=== RSI Consolidation (ranging / mean-reversion) ===" input string RCO_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES RCO_SignalTF = PERIOD_M15; input bool RCO_EntryOnNewBarOnly = true; input int RCO_ADX_Period = 23; input double RCO_ADX_Max = 29.0; input bool RCO_UseATRRatioFilter = true; input int RCO_ATR_Period = 8; input int RCO_ATR_SMA_Period = 35; input double RCO_ATR_Ratio_Max = 1.36; input bool RCO_UseFlatEMAFilter = true; input int RCO_EMA_Fast = 13; input int RCO_EMA_Slow = 17; input double RCO_EMA_Separation_MaxPct = 0.26; input int RCO_RSI_Period = 8; input ENUM_APPLIED_PRICE RCO_RSI_Price = PRICE_OPEN; input double RCO_RSI_Oversold = 22.0; input double RCO_RSI_Overbought = 63.0; input bool RCO_UseRSI_MeanExit = true; input double RCO_RSI_Exit_Long = 48.0; input double RCO_RSI_Exit_Short = 52.0; input double RCO_SL_ATR_Mult = 2.15; input double RCO_TP_ATR_Mult = 2.40; input int RCO_MaxBarsInTrade = 54; input double RCO_Lots = 0.10; input ulong RCO_MagicNumber = 20250420; input int RCO_Slippage = 10; input int RCO_MaxSpreadPoints = 28; input group "=== SimpleTrendline BTCUSD ===" input string ST_BTC_Symbol = "BTCUSD"; input ENUM_TIMEFRAMES ST_BTC_SignalTF = PERIOD_H1; input ENUM_TIMEFRAMES ST_BTC_HigherTF = PERIOD_H4; input int ST_BTC_MAPeriod = 150; input ENUM_MA_METHOD ST_BTC_MAMethod = MODE_SMMA; input ENUM_APPLIED_PRICE ST_BTC_AppliedPrice = PRICE_OPEN; input int ST_BTC_HTFBarsToScan = 1200; input double ST_BTC_LineTouchTolerance = 170.0; input double ST_BTC_BreakBuffer = 90.0; input ulong ST_BTC_MagicNumber = 26042501; input bool ST_BTC_DrawTrendline = true; input group "=== SimpleTrendline XAUUSD ===" input string ST_XAU_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES ST_XAU_SignalTF = PERIOD_H1; input ENUM_TIMEFRAMES ST_XAU_HigherTF = PERIOD_M10; input int ST_XAU_MAPeriod = 65; input ENUM_MA_METHOD ST_XAU_MAMethod = MODE_EMA; input ENUM_APPLIED_PRICE ST_XAU_AppliedPrice = PRICE_OPEN; input int ST_XAU_HTFBarsToScan = 500; input double ST_XAU_LineTouchTolerance = 220.0; input double ST_XAU_BreakBuffer = 110.0; input ulong ST_XAU_MagicNumber = 26042501; input bool ST_XAU_DrawTrendline = true; input group "=== SimpleTrendline GER40 ===" input string ST_GER_Symbol = "GER40"; input ENUM_TIMEFRAMES ST_GER_SignalTF = PERIOD_M15; input ENUM_TIMEFRAMES ST_GER_HigherTF = PERIOD_M15; input int ST_GER_MAPeriod = 65; input ENUM_MA_METHOD ST_GER_MAMethod = MODE_LWMA; input ENUM_APPLIED_PRICE ST_GER_AppliedPrice = PRICE_OPEN; input int ST_GER_HTFBarsToScan = 1200; input double ST_GER_LineTouchTolerance = 100.0; input double ST_GER_BreakBuffer = 80.0; input ulong ST_GER_MagicNumber = 26042502; input bool ST_GER_DrawTrendline = true; input group "=== RSI Secret Sauce XAUUSD ===" input string RSS_Symbol = "XAUUSD"; input int RSS_MagicNumber = 789012; input int RSS_Slippage = 10; input ENUM_TIMEFRAMES RSS_Timeframe = PERIOD_M30; input int RSS_RSIPeriod = 16; input double RSS_RSIOverbought = 72.5; input double RSS_RSIOversold = 32.5; input int RSS_RSILookback = 60; input int RSS_PeakBars = 2; input double RSS_StopLossATR = 2.75; input double RSS_TakeProfitATR = 5.0; input int RSS_ATRPeriod = 14; input bool RSS_UseSwingStopLoss = false; input int RSS_SwingLookback = 30; input int RSS_MaxPositions = 1; input int RSS_MinBarsBetweenTrades = 7; input group "=== USDJPY Buster (Asian range breakout) ===" input string UB_Symbol = "USDJPY"; input int UB_RangeStartHour = 3; input int UB_RangeEndHour = 6; input int UB_CloseHour = 18; input ENUM_TIMEFRAMES UB_RangeTF = PERIOD_M20; input int UB_MinRangePoints = 15; input double UB_OrderBufferPoints = 4.75; input bool UB_FirstTradeOnly = false; input bool UB_AllowLong = true; input bool UB_AllowShort = true; input bool UB_UseTakeProfit = false; input double UB_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE UB_RiskMode = UB_RISK_FIXED_LOTS; input double UB_FixedRiskMoney = 250.0; input double UB_RiskPercent = 0.1; input double UB_FixedLots = 0.01; input int UB_MagicNumber = 927002; input int UB_Slippage = 20; input int UB_MaxSpreadPoints = 20; input bool UB_DrawRange = false; input bool UB_DebugLog = false; input group "=== XAU Bear Trend (short-only hedge) ===" input string XBT_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES XBT_RegimeTF = PERIOD_D1; input ENUM_TIMEFRAMES XBT_EntryTF = PERIOD_H1; input int XBT_RegimeEmaPeriod = 100; input int XBT_RsiPeriod = 14; input double XBT_RsiArmLevel = 54.0; input double XBT_RsiTriggerLevel = 50.0; input int XBT_AtrPeriod = 14; input double XBT_SlAtrMult = 0.45; input double XBT_TpAtrMult = 2.5; input bool XBT_UseTrailing = true; input double XBT_TrailAtrMult = 1.5; input ulong XBT_MagicNumber = 928101; input int XBT_Slippage = 20; input int XBT_MaxSpreadPoints = 50; input group "=== XAU Momentum Breakdown (short-only hedge) ===" input string XMB_Symbol = "XAUUSD"; input ENUM_TIMEFRAMES XMB_RegimeTF = PERIOD_D1; input ENUM_TIMEFRAMES XMB_EntryTF = PERIOD_H4; input int XMB_RegimeEmaPeriod = 100; input int XMB_BbPeriod = 20; input double XMB_BbDeviation = 2.0; input int XMB_AtrPeriod = 14; input double XMB_SlAtrMult = 0.4; input double XMB_TpAtrMult = 2.8; input bool XMB_UseTrailing = true; input double XMB_TrailAtrMult = 1.4; input ulong XMB_MagicNumber = 928102; input int XMB_Slippage = 20; input int XMB_MaxSpreadPoints = 50; input group "=== RSI Reversal Asian GBPUSD ===" input string RRA_GBPUSD_Symbol = "GBPUSD"; input int RRA_GBPUSD_RSIPeriod = 32; input double RRA_GBPUSD_OverboughtLevel = 80; input double RRA_GBPUSD_OversoldLevel = 37; input int RRA_GBPUSD_TakeProfitPips = 225; input int RRA_GBPUSD_StopLossPips = 45; input double RRA_GBPUSD_MaxLotSize = 0.2; input int RRA_GBPUSD_MaxSpread = 1800; input int RRA_GBPUSD_MaxDuration = 480; input bool RRA_GBPUSD_UseStopLoss = false; input bool RRA_GBPUSD_UseTakeProfit = false; input bool RRA_GBPUSD_UseRSIExit = true; input double RRA_GBPUSD_RSIExitLevel = 43; input bool RRA_GBPUSD_CloseOutsideSession = true; input ENUM_TIMEFRAMES RRA_GBPUSD_TimeFrame = PERIOD_M15; input int RRA_GBPUSD_MagicNumber = 30003; input int RRA_GBPUSD_Slippage = 3; input group "=== GER40 Buster (European session range breakout) ===" input string GB_Symbol = "GER40"; input int GB_RangeStartHour = 8; input int GB_RangeEndHour = 10; input int GB_CloseHour = 20; input ENUM_TIMEFRAMES GB_RangeTF = PERIOD_M15; input int GB_MinRangePoints = 80; input double GB_OrderBufferPoints = 12.0; input bool GB_FirstTradeOnly = false; input bool GB_AllowLong = true; input bool GB_AllowShort = true; input bool GB_UseTakeProfit = false; input double GB_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE GB_RiskMode = UB_RISK_FIXED_LOTS; input double GB_FixedRiskMoney = 250.0; input double GB_RiskPercent = 0.1; input double GB_FixedLots = 0.01; input int GB_MagicNumber = 927102; input int GB_Slippage = 30; input int GB_MaxSpreadPoints = 120; input bool GB_DrawRange = false; input bool GB_DebugLog = false; input group "=== RSI Reversal Asian USDCHF ===" input string RRA_USDCHF_Symbol = "USDCHF"; input int RRA_USDCHF_RSIPeriod = 30; input double RRA_USDCHF_OverboughtLevel = 72; input double RRA_USDCHF_OversoldLevel = 22; input int RRA_USDCHF_TakeProfitPips = 200; input int RRA_USDCHF_StopLossPips = 40; input double RRA_USDCHF_MaxLotSize = 0.2; input int RRA_USDCHF_MaxSpread = 1200; input int RRA_USDCHF_MaxDuration = 420; input bool RRA_USDCHF_UseStopLoss = false; input bool RRA_USDCHF_UseTakeProfit = false; input bool RRA_USDCHF_UseRSIExit = true; input double RRA_USDCHF_RSIExitLevel = 50; input bool RRA_USDCHF_CloseOutsideSession = true; input ENUM_TIMEFRAMES RRA_USDCHF_TimeFrame = PERIOD_M15; input int RRA_USDCHF_MagicNumber = 30004; input int RRA_USDCHF_Slippage = 3; input group "=== RSI Reversal Asian NZDUSD ===" input string RRA_NZDUSD_Symbol = "NZDUSD"; input int RRA_NZDUSD_RSIPeriod = 28; input double RRA_NZDUSD_OverboughtLevel = 66; input double RRA_NZDUSD_OversoldLevel = 28; input int RRA_NZDUSD_TakeProfitPips = 200; input int RRA_NZDUSD_StopLossPips = 40; input double RRA_NZDUSD_MaxLotSize = 0.2; input int RRA_NZDUSD_MaxSpread = 1200; input int RRA_NZDUSD_MaxDuration = 400; input bool RRA_NZDUSD_UseStopLoss = false; input bool RRA_NZDUSD_UseTakeProfit = false; input bool RRA_NZDUSD_UseRSIExit = true; input double RRA_NZDUSD_RSIExitLevel = 50; input bool RRA_NZDUSD_CloseOutsideSession = true; input ENUM_TIMEFRAMES RRA_NZDUSD_TimeFrame = PERIOD_M15; input int RRA_NZDUSD_MagicNumber = 30005; input int RRA_NZDUSD_Slippage = 3; input group "=== NAS100 Buster (US cash open range) ===" input string NB_Symbol = "NAS100"; input int NB_RangeStartHour = 14; input int NB_RangeEndHour = 16; input int NB_CloseHour = 21; input ENUM_TIMEFRAMES NB_RangeTF = PERIOD_M15; input int NB_MinRangePoints = 120; input double NB_OrderBufferPoints = 18.0; input bool NB_FirstTradeOnly = false; input bool NB_AllowLong = true; input bool NB_AllowShort = true; input bool NB_UseTakeProfit = false; input double NB_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE NB_RiskMode = UB_RISK_FIXED_LOTS; input double NB_FixedRiskMoney = 250.0; input double NB_RiskPercent = 0.1; input double NB_FixedLots = 0.01; input int NB_MagicNumber = 927103; input int NB_Slippage = 40; input int NB_MaxSpreadPoints = 200; input bool NB_DrawRange = false; input bool NB_DebugLog = false; input group "=== US500 Buster (US cash open range) ===" input string U5B_Symbol = "US500"; input int U5B_RangeStartHour = 14; input int U5B_RangeEndHour = 16; input int U5B_CloseHour = 21; input ENUM_TIMEFRAMES U5B_RangeTF = PERIOD_M15; input int U5B_MinRangePoints = 80; input double U5B_OrderBufferPoints = 12.0; input bool U5B_FirstTradeOnly = false; input bool U5B_AllowLong = true; input bool U5B_AllowShort = true; input bool U5B_UseTakeProfit = false; input double U5B_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE U5B_RiskMode = UB_RISK_FIXED_LOTS; input double U5B_FixedRiskMoney = 250.0; input double U5B_RiskPercent = 0.1; input double U5B_FixedLots = 0.01; input int U5B_MagicNumber = 927104; input int U5B_Slippage = 35; input int U5B_MaxSpreadPoints = 150; input bool U5B_DrawRange = false; input bool U5B_DebugLog = false; input group "=== US30 Buster (US cash open range) ===" input string U30B_Symbol = "US30"; input int U30B_RangeStartHour = 14; input int U30B_RangeEndHour = 16; input int U30B_CloseHour = 21; input ENUM_TIMEFRAMES U30B_RangeTF = PERIOD_M15; input int U30B_MinRangePoints = 150; input double U30B_OrderBufferPoints = 22.0; input bool U30B_FirstTradeOnly = false; input bool U30B_AllowLong = true; input bool U30B_AllowShort = true; input bool U30B_UseTakeProfit = false; input double U30B_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE U30B_RiskMode = UB_RISK_FIXED_LOTS; input double U30B_FixedRiskMoney = 250.0; input double U30B_RiskPercent = 0.1; input double U30B_FixedLots = 0.01; input int U30B_MagicNumber = 927105; input int U30B_Slippage = 45; input int U30B_MaxSpreadPoints = 250; input bool U30B_DrawRange = false; input bool U30B_DebugLog = false; input group "=== UK100 Buster (London open range) ===" input string UKB_Symbol = "UK100"; input int UKB_RangeStartHour = 8; input int UKB_RangeEndHour = 10; input int UKB_CloseHour = 20; input ENUM_TIMEFRAMES UKB_RangeTF = PERIOD_M15; input int UKB_MinRangePoints = 60; input double UKB_OrderBufferPoints = 10.0; input bool UKB_FirstTradeOnly = false; input bool UKB_AllowLong = true; input bool UKB_AllowShort = true; input bool UKB_UseTakeProfit = false; input double UKB_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE UKB_RiskMode = UB_RISK_FIXED_LOTS; input double UKB_FixedRiskMoney = 250.0; input double UKB_RiskPercent = 0.1; input double UKB_FixedLots = 0.01; input int UKB_MagicNumber = 927106; input int UKB_Slippage = 35; input int UKB_MaxSpreadPoints = 180; input bool UKB_DrawRange = false; input bool UKB_DebugLog = false; input group "=== XAGUSD Buster (London silver range) ===" input string XGB_Symbol = "XAGUSD"; input int XGB_RangeStartHour = 8; input int XGB_RangeEndHour = 10; input int XGB_CloseHour = 20; input ENUM_TIMEFRAMES XGB_RangeTF = PERIOD_M15; input int XGB_MinRangePoints = 25; input double XGB_OrderBufferPoints = 4.0; input bool XGB_FirstTradeOnly = false; input bool XGB_AllowLong = true; input bool XGB_AllowShort = true; input bool XGB_UseTakeProfit = false; input double XGB_TakeProfitPoints = 0.0; input ENUM_UB_RISK_MODE XGB_RiskMode = UB_RISK_FIXED_LOTS; input double XGB_FixedRiskMoney = 250.0; input double XGB_RiskPercent = 0.1; input double XGB_FixedLots = 0.01; input int XGB_MagicNumber = 927107; input int XGB_Slippage = 25; input int XGB_MaxSpreadPoints = 80; input bool XGB_DrawRange = false; input bool XGB_DebugLog = false; //+------------------------------------------------------------------+ //| Balance scaling: LOT_* = nominal size at ORCH_ReferenceBalance | //+------------------------------------------------------------------+ double United_BalanceScaleFactor() { if(!ORCH_ScaleLotsByBalance || ORCH_ReferenceBalance <= 0.0) return 1.0; const double money = ORCH_UseEquityInsteadOfBalance ? AccountInfoDouble(ACCOUNT_EQUITY) : AccountInfoDouble(ACCOUNT_BALANCE); double raw = money / ORCH_ReferenceBalance; if(raw < ORCH_MinBalanceScale) raw = ORCH_MinBalanceScale; if(raw > ORCH_MaxBalanceScale) raw = ORCH_MaxBalanceScale; return raw; } double United_ScaledLot(const double baseLot) { const double lot = baseLot * United_BalanceScaleFactor(); return (lot > 0.0 ? lot : 0.0); } void United_RefreshScaledLots() { g_DB_LotSize = United_ScaledLot(LOT_DB_DarvasBox); g_ES_LotSize = United_ScaledLot(LOT_ES_EMASlopeDistance); g_RC_LotSize = United_ScaledLot(LOT_RC_RSICrossOver); g_RM_LotSize = United_ScaledLot(LOT_RM_RSIMidPointHijack); g_Pos_RS_APPL = United_ScaledLot(LOT_RS_APPL); g_Pos_RS_ADBE = United_ScaledLot(LOT_RS_ADBE); g_Pos_RS_BTCUSD = United_ScaledLot(LOT_RS_BTCUSD); g_Pos_RS_NVDA = United_ScaledLot(LOT_RS_NVDA); g_Pos_RS_TSLA = United_ScaledLot(LOT_RS_TSLA); g_Pos_RS_XAUUSD = United_ScaledLot(LOT_RS_XAUUSD); g_Pos_RS_MU = United_ScaledLot(LOT_RS_MU); g_Pos_RRA_EURUSD = United_ScaledLot(LOT_RRA_EURUSD); g_Pos_RRA_AUDUSD = United_ScaledLot(LOT_RRA_AUDUSD); g_Pos_SE = United_ScaledLot(LOT_SE_SuperEMA); g_Pos_RCO = United_ScaledLot(LOT_RCO_RSIConsolidation); g_Pos_ST_BTCUSD = United_ScaledLot(LOT_ST_BTCUSD); g_Pos_ST_XAUUSD = United_ScaledLot(LOT_ST_XAUUSD); g_Pos_ST_GER40 = United_ScaledLot(LOT_ST_GER40); g_RSS_LotSize = United_ScaledLot(LOT_RSS_SecretSauce); g_Pos_UB_USDJPY = United_ScaledLot(LOT_UB_USDJPY); g_Pos_XBT_XAUUSD = United_ScaledLot(LOT_XBT_XAUUSD); g_Pos_XMB_XAUUSD = United_ScaledLot(LOT_XMB_XAUUSD); g_Pos_RRA_GBPUSD = United_ScaledLot(LOT_RRA_GBPUSD); g_Pos_GB_GER40 = United_ScaledLot(LOT_GB_GER40); g_Pos_RS_NAS100 = United_ScaledLot(LOT_RS_NAS100); g_Pos_RS_US500 = United_ScaledLot(LOT_RS_US500); g_Pos_RRA_USDCHF = United_ScaledLot(LOT_RRA_USDCHF); g_Pos_RRA_NZDUSD = United_ScaledLot(LOT_RRA_NZDUSD); g_Pos_NB_NAS100 = United_ScaledLot(LOT_NB_NAS100); g_Pos_U5B_US500 = United_ScaledLot(LOT_U5B_US500); g_Pos_RS_US30 = United_ScaledLot(LOT_RS_US30); g_Pos_RS_XAGUSD = United_ScaledLot(LOT_RS_XAGUSD); g_Pos_RS_EURJPY = United_ScaledLot(LOT_RS_EURJPY); g_Pos_RS_GBPJPY = United_ScaledLot(LOT_RS_GBPJPY); g_Pos_U30B_US30 = United_ScaledLot(LOT_U30B_US30); g_Pos_UKB_UK100 = United_ScaledLot(LOT_UKB_UK100); g_Pos_XGB_XAGUSD = United_ScaledLot(LOT_XGB_XAGUSD); g_Pos_RS_F = United_ScaledLot(LOT_RS_F); g_Pos_RS_SOFI = United_ScaledLot(LOT_RS_SOFI); g_Pos_RS_SNAP = United_ScaledLot(LOT_RS_SNAP); g_Pos_RS_WBD = United_ScaledLot(LOT_RS_WBD); } //+------------------------------------------------------------------+ //| Global Variables - DarvasBox | //+------------------------------------------------------------------+ struct DarvasBoxData { string symbol; bool isInitialized; double boxHigh; double boxLow; bool boxFormed; datetime lastBoxTime; string boxName; double minStopLevel; double point; CTrade trade; int maHandle; int volumeHandle; datetime lastBarTime; }; //+------------------------------------------------------------------+ //| Global Variables - EMA Slope Distance | //+------------------------------------------------------------------+ struct EMASlopeData { string symbol; bool isInitialized; int ema_handle; double ema_array[]; datetime letzte_überwachung_zeit; bool überwachung_aktiv; bool preis_trigger_aktiv; bool steigung_trigger_aktiv; int ticket; CTrade trade; int trades_in_current_crossover; bool crossover_detected; datetime trade_open_time; datetime last_bar_time; datetime es_last_sl_adjust_success_time; }; //+------------------------------------------------------------------+ //| Global Variables - RSI CrossOver Reversal | //+------------------------------------------------------------------+ struct RSICrossOverData { string symbol; bool isInitialized; int rsiHandle; int emaHandle; double previousRSIDef; CTrade trade; datetime lastTradeTime; datetime bartime; bool WeekDays[7]; datetime lastBarTime; }; //+------------------------------------------------------------------+ //| Global Variables - RSI MidPoint Hijack | //+------------------------------------------------------------------+ struct RSIMidPointData { string symbol; bool isInitialized; int rsiHandle; int rsiReverseHandle; int emaHandle; bool rsiOverbought; bool rsiOversold; bool rsiReverseOverbought; bool rsiReverseOversold; CTrade trade; CPositionInfo positionInfo; bool emaCrossBuySignal; bool emaCrossSellSignal; int emaCrossSignalBar; datetime lastBarTime; datetime rsiReverseLastCloseTime; bool rsiReverseInCooldown; double lastBarRSI; double lastBarRSIReverse; double lastBarEMA; double lastBarClose; double lastBarEMAPrev; double lastBarClosePrev; }; //+------------------------------------------------------------------+ //| Global Strategy Instances | //+------------------------------------------------------------------+ DarvasBoxData dbData; EMASlopeData esData; RSICrossOverData rcData; RSIMidPointData rmData; RSIScalpingData rsAPPLData; RSIScalpingData rsADBEData; RSIScalpingData rsBTCUSDData; RSIScalpingData rsNVDAData; RSIScalpingData rsTSLAData; RSIScalpingData rsXAUUSDData; RSIScalpingData rsMUData; RSIScalpingData rsNAS100Data; RSIScalpingData rsUS500Data; RSIScalpingData rsUS30Data; RSIScalpingData rsXAGUSDData; RSIScalpingData rsEURJPYData; RSIScalpingData rsGBPJPYData; RSIScalpingData rsFData; RSIScalpingData rsSOFIData; RSIScalpingData rsSNAPData; RSIScalpingData rsWBDData; SuperEMAData seData; RSIConsolidationData rcoData; SimpleTrendlineData stBTCData; SimpleTrendlineData stXAUData; SimpleTrendlineData stGERData; RSISecretSauceOrcData rssData; //+------------------------------------------------------------------+ //| Global Variables - RSI Reversal Asian | //+------------------------------------------------------------------+ RSIReversalAsianData rraEURUSDData; RSIReversalAsianData rraAUDUSDData; RSIReversalAsianData rraGBPUSDData; RSIReversalAsianData rraUSDCHFData; RSIReversalAsianData rraNZDUSDData; USDJPYBusterData ubData; USDJPYBusterData gbData; USDJPYBusterData nbData; USDJPYBusterData u5bData; USDJPYBusterData u30bData; USDJPYBusterData ukbData; USDJPYBusterData xgbData; XAUBearTrendData xbtData; XAUMomentumBreakdownData xmbData; CTrade g_gapTrade; void United_GapGuardSetup() { GapGuardConfig cfg; cfg.enable = GAP_Enable; cfg.closeBeforeSessionEnd = GAP_CloseBeforeSessionEnd; cfg.minutesBeforeClose = GAP_MinutesBeforeClose; cfg.closeBeforeWeekend = GAP_CloseBeforeWeekend; cfg.fridayCloseHour = GAP_FridayCloseHour; cfg.closeOnBarGapThroughSL = GAP_CloseOnBarGapThroughSL; cfg.minGapPoints = GAP_MinGapPoints; cfg.equityDailyFlatHour = GAP_EquityDailyFlatHour; GapGuard_Init(cfg); if(EnableDarvasBox) { GapGuard_RegisterMagic((ulong)DB_MagicNumber); GapGuard_RegisterSymbol(DB_Symbol); } if(EnableEMASlopeDistance) { GapGuard_RegisterMagic((ulong)ES_MagicNumber); GapGuard_RegisterSymbol(ES_Symbol); } if(EnableRSICrossOverReversal) { GapGuard_RegisterMagic((ulong)RC_MagicNumber); GapGuard_RegisterSymbol(RC_Symbol); } if(EnableRSIMidPointHijack) { GapGuard_RegisterMagic((ulong)RM_InpMagicNumberRSIFollow); GapGuard_RegisterMagic((ulong)RM_InpMagicNumberRSIReverse); GapGuard_RegisterMagic((ulong)RM_InpMagicNumberEMACross); GapGuard_RegisterSymbol(RM_Symbol); } if(EnableRSIScalpingAPPL) { GapGuard_RegisterMagic((ulong)RS_APPL_MagicNumber); GapGuard_RegisterSymbol(RS_APPL_Symbol); } if(EnableRSIScalpingADBE) { GapGuard_RegisterMagic((ulong)RS_ADBE_MagicNumber); GapGuard_RegisterSymbol(RS_ADBE_Symbol); } if(EnableRSIScalpingBTCUSD) { GapGuard_RegisterMagic((ulong)RS_BTCUSD_MagicNumber); GapGuard_RegisterSymbol(RS_BTCUSD_Symbol); } if(EnableRSIScalpingNVDA) { GapGuard_RegisterMagic((ulong)RS_NVDA_MagicNumber); GapGuard_RegisterSymbol(RS_NVDA_Symbol); } if(EnableRSIScalpingTSLA) { GapGuard_RegisterMagic((ulong)RS_TSLA_MagicNumber); GapGuard_RegisterSymbol(RS_TSLA_Symbol); } if(EnableRSIScalpingXAUUSD) { GapGuard_RegisterMagic((ulong)RS_XAUUSD_MagicNumber); GapGuard_RegisterSymbol(RS_XAUUSD_Symbol); } if(EnableRSIScalpingMU) { GapGuard_RegisterMagic((ulong)RS_MU_MagicNumber); GapGuard_RegisterSymbol(RS_MU_Symbol); } if(EnableRSISecretSauce) { GapGuard_RegisterMagic((ulong)RSS_MagicNumber); GapGuard_RegisterSymbol(RSS_Symbol); } if(EnableSuperEMA) { GapGuard_RegisterMagic((ulong)SE_MagicNumber); GapGuard_RegisterSymbol(SE_Symbol); } if(EnableRSIConsolidation) { GapGuard_RegisterMagic(RCO_MagicNumber); GapGuard_RegisterSymbol(RCO_Symbol); } if(EnableRSIReversalAsianEURUSD) { GapGuard_RegisterMagic((ulong)RRA_EURUSD_MagicNumber); GapGuard_RegisterSymbol(RRA_EURUSD_Symbol); } if(EnableRSIReversalAsianAUDUSD) { GapGuard_RegisterMagic((ulong)RRA_AUDUSD_MagicNumber); GapGuard_RegisterSymbol(RRA_AUDUSD_Symbol); } if(EnableSimpleTrendlineBTCUSD) { GapGuard_RegisterMagic(ST_BTC_MagicNumber); GapGuard_RegisterSymbol(ST_BTC_Symbol); } if(EnableSimpleTrendlineXAUUSD) { GapGuard_RegisterMagic(ST_XAU_MagicNumber); GapGuard_RegisterSymbol(ST_XAU_Symbol); } if(EnableSimpleTrendlineGER40) { GapGuard_RegisterMagic(ST_GER_MagicNumber); GapGuard_RegisterSymbol(ST_GER_Symbol); } if(EnableUSDJPYBuster) { GapGuard_RegisterMagic((ulong)UB_MagicNumber); GapGuard_RegisterSymbol(UB_Symbol); } if(EnableXAUBearTrend) { GapGuard_RegisterMagic(XBT_MagicNumber); GapGuard_RegisterSymbol(XBT_Symbol); } if(EnableXAUMomentumBreakdown) { GapGuard_RegisterMagic(XMB_MagicNumber); GapGuard_RegisterSymbol(XMB_Symbol); } if(EnableRSIReversalAsianGBPUSD) { GapGuard_RegisterMagic((ulong)RRA_GBPUSD_MagicNumber); GapGuard_RegisterSymbol(RRA_GBPUSD_Symbol); } if(EnableGER40Buster) { GapGuard_RegisterMagic((ulong)GB_MagicNumber); GapGuard_RegisterSymbol(GB_Symbol); } if(EnableRSIScalpingNAS100) { GapGuard_RegisterMagic((ulong)RS_NAS100_MagicNumber); GapGuard_RegisterSymbol(RS_NAS100_Symbol); } if(EnableRSIScalpingUS500) { GapGuard_RegisterMagic((ulong)RS_US500_MagicNumber); GapGuard_RegisterSymbol(RS_US500_Symbol); } if(EnableRSIReversalAsianUSDCHF) { GapGuard_RegisterMagic((ulong)RRA_USDCHF_MagicNumber); GapGuard_RegisterSymbol(RRA_USDCHF_Symbol); } if(EnableRSIReversalAsianNZDUSD) { GapGuard_RegisterMagic((ulong)RRA_NZDUSD_MagicNumber); GapGuard_RegisterSymbol(RRA_NZDUSD_Symbol); } if(EnableNAS100Buster) { GapGuard_RegisterMagic((ulong)NB_MagicNumber); GapGuard_RegisterSymbol(NB_Symbol); } if(EnableUS500Buster) { GapGuard_RegisterMagic((ulong)U5B_MagicNumber); GapGuard_RegisterSymbol(U5B_Symbol); } if(EnableRSIScalpingUS30) { GapGuard_RegisterMagic((ulong)RS_US30_MagicNumber); GapGuard_RegisterSymbol(RS_US30_Symbol); } if(EnableRSIScalpingXAGUSD) { GapGuard_RegisterMagic((ulong)RS_XAGUSD_MagicNumber); GapGuard_RegisterSymbol(RS_XAGUSD_Symbol); } if(EnableRSIScalpingEURJPY) { GapGuard_RegisterMagic((ulong)RS_EURJPY_MagicNumber); GapGuard_RegisterSymbol(RS_EURJPY_Symbol); } if(EnableRSIScalpingGBPJPY) { GapGuard_RegisterMagic((ulong)RS_GBPJPY_MagicNumber); GapGuard_RegisterSymbol(RS_GBPJPY_Symbol); } if(EnableUS30Buster) { GapGuard_RegisterMagic((ulong)U30B_MagicNumber); GapGuard_RegisterSymbol(U30B_Symbol); } if(EnableUK100Buster) { GapGuard_RegisterMagic((ulong)UKB_MagicNumber); GapGuard_RegisterSymbol(UKB_Symbol); } if(EnableXAGUSDBuster) { GapGuard_RegisterMagic((ulong)XGB_MagicNumber); GapGuard_RegisterSymbol(XGB_Symbol); } if(EnableRSIScalpingF) { GapGuard_RegisterMagic((ulong)RS_F_MagicNumber); GapGuard_RegisterSymbol(RS_F_Symbol); } if(EnableRSIScalpingSOFI) { GapGuard_RegisterMagic((ulong)RS_SOFI_MagicNumber); GapGuard_RegisterSymbol(RS_SOFI_Symbol); } if(EnableRSIScalpingSNAP) { GapGuard_RegisterMagic((ulong)RS_SNAP_MagicNumber); GapGuard_RegisterSymbol(RS_SNAP_Symbol); } if(EnableRSIScalpingWBD) { GapGuard_RegisterMagic((ulong)RS_WBD_MagicNumber); GapGuard_RegisterSymbol(RS_WBD_Symbol); } } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { int initResult = INIT_SUCCEEDED; United_RefreshScaledLots(); United_GapGuardSetup(); // Initialize strategies - log warnings but don't fail entire EA if symbol unavailable if(EnableDarvasBox) if(!InitDarvasBox(DB_Symbol)) Print("Warning: DarvasBox strategy failed to initialize for symbol '", DB_Symbol, "'"); if(EnableEMASlopeDistance) if(!InitEMASlopeDistance(ES_Symbol)) Print("Warning: EMASlopeDistance strategy failed to initialize for symbol '", ES_Symbol, "'"); if(EnableRSICrossOverReversal) if(!InitRSICrossOverReversal(RC_Symbol)) Print("Warning: RSICrossOverReversal strategy failed to initialize for symbol '", RC_Symbol, "'"); if(EnableRSIMidPointHijack) if(!InitRSIMidPointHijack(RM_Symbol)) Print("Warning: RSIMidPointHijack strategy failed to initialize for symbol '", RM_Symbol, "'"); // Initialize RSI Scalping strategies - don't fail entire EA if symbol unavailable if(EnableRSIScalpingAPPL) InitRSIScalping(rsAPPLData, RS_APPL_Symbol, RS_APPL_TimeFrame, RS_APPL_RSI_Period, RS_APPL_RSI_Applied_Price, RS_APPL_MagicNumber, RS_APPL_Slippage); if(EnableRSIScalpingADBE) InitRSIScalping(rsADBEData, RS_ADBE_Symbol, RS_ADBE_TimeFrame, RS_ADBE_RSI_Period, RS_ADBE_RSI_Applied_Price, RS_ADBE_MagicNumber, RS_ADBE_Slippage); if(EnableRSIScalpingBTCUSD) InitRSIScalping(rsBTCUSDData, RS_BTCUSD_Symbol, RS_BTCUSD_TimeFrame, RS_BTCUSD_RSI_Period, RS_BTCUSD_RSI_Applied_Price, RS_BTCUSD_MagicNumber, RS_BTCUSD_Slippage); if(EnableRSIScalpingNVDA) InitRSIScalping(rsNVDAData, RS_NVDA_Symbol, RS_NVDA_TimeFrame, RS_NVDA_RSI_Period, RS_NVDA_RSI_Applied_Price, RS_NVDA_MagicNumber, RS_NVDA_Slippage); if(EnableRSIScalpingTSLA) InitRSIScalping(rsTSLAData, RS_TSLA_Symbol, RS_TSLA_TimeFrame, RS_TSLA_RSI_Period, RS_TSLA_RSI_Applied_Price, RS_TSLA_MagicNumber, RS_TSLA_Slippage); if(EnableRSIScalpingXAUUSD) InitRSIScalping(rsXAUUSDData, RS_XAUUSD_Symbol, RS_XAUUSD_TimeFrame, RS_XAUUSD_RSI_Period, RS_XAUUSD_RSI_Applied_Price, RS_XAUUSD_MagicNumber, RS_XAUUSD_Slippage); if(EnableRSIScalpingMU) InitRSIScalping(rsMUData, RS_MU_Symbol, RS_MU_TimeFrame, RS_MU_RSI_Period, RS_MU_RSI_Applied_Price, RS_MU_MagicNumber, RS_MU_Slippage); if(EnableRSIScalpingNAS100) InitRSIScalping(rsNAS100Data, RS_NAS100_Symbol, RS_NAS100_TimeFrame, RS_NAS100_RSI_Period, RS_NAS100_RSI_Applied_Price, RS_NAS100_MagicNumber, RS_NAS100_Slippage); if(EnableRSIScalpingUS500) InitRSIScalping(rsUS500Data, RS_US500_Symbol, RS_US500_TimeFrame, RS_US500_RSI_Period, RS_US500_RSI_Applied_Price, RS_US500_MagicNumber, RS_US500_Slippage); if(EnableRSIScalpingUS30) InitRSIScalping(rsUS30Data, RS_US30_Symbol, RS_US30_TimeFrame, RS_US30_RSI_Period, RS_US30_RSI_Applied_Price, RS_US30_MagicNumber, RS_US30_Slippage); if(EnableRSIScalpingXAGUSD) InitRSIScalping(rsXAGUSDData, RS_XAGUSD_Symbol, RS_XAGUSD_TimeFrame, RS_XAGUSD_RSI_Period, RS_XAGUSD_RSI_Applied_Price, RS_XAGUSD_MagicNumber, RS_XAGUSD_Slippage); if(EnableRSIScalpingEURJPY) InitRSIScalping(rsEURJPYData, RS_EURJPY_Symbol, RS_EURJPY_TimeFrame, RS_EURJPY_RSI_Period, RS_EURJPY_RSI_Applied_Price, RS_EURJPY_MagicNumber, RS_EURJPY_Slippage); if(EnableRSIScalpingGBPJPY) InitRSIScalping(rsGBPJPYData, RS_GBPJPY_Symbol, RS_GBPJPY_TimeFrame, RS_GBPJPY_RSI_Period, RS_GBPJPY_RSI_Applied_Price, RS_GBPJPY_MagicNumber, RS_GBPJPY_Slippage); if(EnableRSIScalpingF) InitRSIScalping(rsFData, RS_F_Symbol, RS_F_TimeFrame, RS_F_RSI_Period, RS_F_RSI_Applied_Price, RS_F_MagicNumber, RS_F_Slippage); if(EnableRSIScalpingSOFI) InitRSIScalping(rsSOFIData, RS_SOFI_Symbol, RS_SOFI_TimeFrame, RS_SOFI_RSI_Period, RS_SOFI_RSI_Applied_Price, RS_SOFI_MagicNumber, RS_SOFI_Slippage); if(EnableRSIScalpingSNAP) InitRSIScalping(rsSNAPData, RS_SNAP_Symbol, RS_SNAP_TimeFrame, RS_SNAP_RSI_Period, RS_SNAP_RSI_Applied_Price, RS_SNAP_MagicNumber, RS_SNAP_Slippage); if(EnableRSIScalpingWBD) InitRSIScalping(rsWBDData, RS_WBD_Symbol, RS_WBD_TimeFrame, RS_WBD_RSI_Period, RS_WBD_RSI_Applied_Price, RS_WBD_MagicNumber, RS_WBD_Slippage); if(EnableRSISecretSauce) if(!InitRSISecretSauce(rssData, RSS_Symbol)) Print("Warning: RSI Secret Sauce failed to initialize for symbol '", RSS_Symbol, "'"); if(EnableSuperEMA) if(!InitSuperEMA(seData, SE_Symbol, SE_Timeframe, SE_SlippagePoints, SE_MagicNumber, SE_EmaFast, SE_EmaMid, SE_EmaSlow, SE_EmaTrendBars, SE_CciPeriod, SE_CciOverbought, SE_CciOversold, SE_PullbackCciLookback, SE_MacdFast, SE_MacdSlow, SE_MacdSignal, SE_EntryStyle, SE_OneTradeOnly, SE_UseStructuralSL, SE_SlBufferPoints, SE_ExitOnTrendFlip, SE_ExitOnMacdFlip, SE_ExitOnCciZeroCross, SE_MaxHoldingBars, SE_ExitBelowMidEma, SE_DebugLogs)) Print("Warning: SuperEMA failed to initialize for symbol '", SE_Symbol, "'"); if(EnableRSIConsolidation) if(!InitRSIConsolidation(rcoData, RCO_Symbol, RCO_SignalTF, RCO_EntryOnNewBarOnly, RCO_ADX_Period, RCO_ADX_Max, RCO_UseATRRatioFilter, RCO_ATR_Period, RCO_ATR_SMA_Period, RCO_ATR_Ratio_Max, RCO_UseFlatEMAFilter, RCO_EMA_Fast, RCO_EMA_Slow, RCO_EMA_Separation_MaxPct, RCO_RSI_Period, RCO_RSI_Price, RCO_RSI_Oversold, RCO_RSI_Overbought, RCO_UseRSI_MeanExit, RCO_RSI_Exit_Long, RCO_RSI_Exit_Short, RCO_SL_ATR_Mult, RCO_TP_ATR_Mult, RCO_MaxBarsInTrade, RCO_MagicNumber, RCO_Slippage, RCO_MaxSpreadPoints)) Print("Warning: RSIConsolidation failed to initialize for symbol '", RCO_Symbol, "'"); // Initialize RSI Reversal Asian strategies if(EnableRSIReversalAsianEURUSD) if(!InitRSIReversalAsian(rraEURUSDData, RRA_EURUSD_Symbol, RRA_EURUSD_RSIPeriod, RRA_EURUSD_OverboughtLevel, RRA_EURUSD_OversoldLevel, RRA_EURUSD_TakeProfitPips, RRA_EURUSD_StopLossPips, LOT_RRA_EURUSD, RRA_EURUSD_MaxSpread, RRA_EURUSD_MaxDuration, RRA_EURUSD_UseStopLoss, RRA_EURUSD_UseTakeProfit, RRA_EURUSD_UseRSIExit, RRA_EURUSD_RSIExitLevel, RRA_EURUSD_CloseOutsideSession, RRA_EURUSD_TimeFrame, RRA_EURUSD_MagicNumber, RRA_EURUSD_Slippage)) Print("Warning: RSIReversalAsianEURUSD strategy failed to initialize for symbol '", RRA_EURUSD_Symbol, "'"); if(EnableRSIReversalAsianAUDUSD) if(!InitRSIReversalAsian(rraAUDUSDData, RRA_AUDUSD_Symbol, RRA_AUDUSD_RSIPeriod, RRA_AUDUSD_OverboughtLevel, RRA_AUDUSD_OversoldLevel, RRA_AUDUSD_TakeProfitPips, RRA_AUDUSD_StopLossPips, LOT_RRA_AUDUSD, RRA_AUDUSD_MaxSpread, RRA_AUDUSD_MaxDuration, RRA_AUDUSD_UseStopLoss, RRA_AUDUSD_UseTakeProfit, RRA_AUDUSD_UseRSIExit, RRA_AUDUSD_RSIExitLevel, RRA_AUDUSD_CloseOutsideSession, RRA_AUDUSD_TimeFrame, RRA_AUDUSD_MagicNumber, RRA_AUDUSD_Slippage)) Print("Warning: RSIReversalAsianAUDUSD strategy failed to initialize for symbol '", RRA_AUDUSD_Symbol, "'"); if(EnableSimpleTrendlineBTCUSD) if(!InitSimpleTrendline(stBTCData, ST_BTC_Symbol, ST_BTC_SignalTF, ST_BTC_HigherTF, ST_BTC_MAPeriod, ST_BTC_MAMethod, ST_BTC_AppliedPrice, ST_BTC_HTFBarsToScan, ST_BTC_LineTouchTolerance, ST_BTC_BreakBuffer, ST_BTC_MagicNumber, ST_BTC_DrawTrendline)) Print("Warning: SimpleTrendlineBTCUSD failed to initialize for symbol '", ST_BTC_Symbol, "'"); if(EnableSimpleTrendlineXAUUSD) if(!InitSimpleTrendline(stXAUData, ST_XAU_Symbol, ST_XAU_SignalTF, ST_XAU_HigherTF, ST_XAU_MAPeriod, ST_XAU_MAMethod, ST_XAU_AppliedPrice, ST_XAU_HTFBarsToScan, ST_XAU_LineTouchTolerance, ST_XAU_BreakBuffer, ST_XAU_MagicNumber, ST_XAU_DrawTrendline)) Print("Warning: SimpleTrendlineXAUUSD failed to initialize for symbol '", ST_XAU_Symbol, "'"); if(EnableSimpleTrendlineGER40) if(!InitSimpleTrendline(stGERData, ST_GER_Symbol, ST_GER_SignalTF, ST_GER_HigherTF, ST_GER_MAPeriod, ST_GER_MAMethod, ST_GER_AppliedPrice, ST_GER_HTFBarsToScan, ST_GER_LineTouchTolerance, ST_GER_BreakBuffer, ST_GER_MagicNumber, ST_GER_DrawTrendline)) Print("Warning: SimpleTrendlineGER40 failed to initialize for symbol '", ST_GER_Symbol, "'"); if(EnableUSDJPYBuster) if(!InitUSDJPYBuster(ubData, UB_Symbol, UB_RangeStartHour, UB_RangeEndHour, UB_CloseHour, UB_RangeTF, UB_MinRangePoints, UB_OrderBufferPoints, UB_FirstTradeOnly, UB_AllowLong, UB_AllowShort, UB_UseTakeProfit, UB_TakeProfitPoints, UB_RiskMode, UB_FixedRiskMoney, UB_RiskPercent, UB_FixedLots, UB_MagicNumber, UB_Slippage, UB_MaxSpreadPoints, UB_DrawRange, UB_DebugLog)) Print("Warning: USDJPYBuster failed to initialize for symbol '", UB_Symbol, "'"); if(EnableXAUBearTrend) if(!InitXAUBearTrend(xbtData, XBT_Symbol, XBT_RegimeTF, XBT_EntryTF, XBT_RegimeEmaPeriod, XBT_RsiPeriod, XBT_RsiArmLevel, XBT_RsiTriggerLevel, XBT_AtrPeriod, XBT_SlAtrMult, XBT_TpAtrMult, XBT_UseTrailing, XBT_TrailAtrMult, XBT_MagicNumber, XBT_Slippage, XBT_MaxSpreadPoints)) Print("Warning: XAUBearTrend failed to initialize for symbol '", XBT_Symbol, "'"); if(EnableXAUMomentumBreakdown) if(!InitXAUMomentumBreakdown(xmbData, XMB_Symbol, XMB_RegimeTF, XMB_EntryTF, XMB_RegimeEmaPeriod, XMB_BbPeriod, XMB_BbDeviation, XMB_AtrPeriod, XMB_SlAtrMult, XMB_TpAtrMult, XMB_UseTrailing, XMB_TrailAtrMult, XMB_MagicNumber, XMB_Slippage, XMB_MaxSpreadPoints)) Print("Warning: XAUMomentumBreakdown failed to initialize for symbol '", XMB_Symbol, "'"); if(EnableRSIReversalAsianGBPUSD) if(!InitRSIReversalAsian(rraGBPUSDData, RRA_GBPUSD_Symbol, RRA_GBPUSD_RSIPeriod, RRA_GBPUSD_OverboughtLevel, RRA_GBPUSD_OversoldLevel, RRA_GBPUSD_TakeProfitPips, RRA_GBPUSD_StopLossPips, LOT_RRA_GBPUSD, RRA_GBPUSD_MaxSpread, RRA_GBPUSD_MaxDuration, RRA_GBPUSD_UseStopLoss, RRA_GBPUSD_UseTakeProfit, RRA_GBPUSD_UseRSIExit, RRA_GBPUSD_RSIExitLevel, RRA_GBPUSD_CloseOutsideSession, RRA_GBPUSD_TimeFrame, RRA_GBPUSD_MagicNumber, RRA_GBPUSD_Slippage)) Print("Warning: RSIReversalAsianGBPUSD strategy failed to initialize for symbol '", RRA_GBPUSD_Symbol, "'"); if(EnableGER40Buster) if(!InitUSDJPYBuster(gbData, GB_Symbol, GB_RangeStartHour, GB_RangeEndHour, GB_CloseHour, GB_RangeTF, GB_MinRangePoints, GB_OrderBufferPoints, GB_FirstTradeOnly, GB_AllowLong, GB_AllowShort, GB_UseTakeProfit, GB_TakeProfitPoints, GB_RiskMode, GB_FixedRiskMoney, GB_RiskPercent, GB_FixedLots, GB_MagicNumber, GB_Slippage, GB_MaxSpreadPoints, GB_DrawRange, GB_DebugLog)) Print("Warning: GER40Buster failed to initialize for symbol '", GB_Symbol, "'"); if(EnableRSIReversalAsianUSDCHF) if(!InitRSIReversalAsian(rraUSDCHFData, RRA_USDCHF_Symbol, RRA_USDCHF_RSIPeriod, RRA_USDCHF_OverboughtLevel, RRA_USDCHF_OversoldLevel, RRA_USDCHF_TakeProfitPips, RRA_USDCHF_StopLossPips, LOT_RRA_USDCHF, RRA_USDCHF_MaxSpread, RRA_USDCHF_MaxDuration, RRA_USDCHF_UseStopLoss, RRA_USDCHF_UseTakeProfit, RRA_USDCHF_UseRSIExit, RRA_USDCHF_RSIExitLevel, RRA_USDCHF_CloseOutsideSession, RRA_USDCHF_TimeFrame, RRA_USDCHF_MagicNumber, RRA_USDCHF_Slippage)) Print("Warning: RSIReversalAsianUSDCHF strategy failed to initialize for symbol '", RRA_USDCHF_Symbol, "'"); if(EnableRSIReversalAsianNZDUSD) if(!InitRSIReversalAsian(rraNZDUSDData, RRA_NZDUSD_Symbol, RRA_NZDUSD_RSIPeriod, RRA_NZDUSD_OverboughtLevel, RRA_NZDUSD_OversoldLevel, RRA_NZDUSD_TakeProfitPips, RRA_NZDUSD_StopLossPips, LOT_RRA_NZDUSD, RRA_NZDUSD_MaxSpread, RRA_NZDUSD_MaxDuration, RRA_NZDUSD_UseStopLoss, RRA_NZDUSD_UseTakeProfit, RRA_NZDUSD_UseRSIExit, RRA_NZDUSD_RSIExitLevel, RRA_NZDUSD_CloseOutsideSession, RRA_NZDUSD_TimeFrame, RRA_NZDUSD_MagicNumber, RRA_NZDUSD_Slippage)) Print("Warning: RSIReversalAsianNZDUSD strategy failed to initialize for symbol '", RRA_NZDUSD_Symbol, "'"); if(EnableNAS100Buster) if(!InitUSDJPYBuster(nbData, NB_Symbol, NB_RangeStartHour, NB_RangeEndHour, NB_CloseHour, NB_RangeTF, NB_MinRangePoints, NB_OrderBufferPoints, NB_FirstTradeOnly, NB_AllowLong, NB_AllowShort, NB_UseTakeProfit, NB_TakeProfitPoints, NB_RiskMode, NB_FixedRiskMoney, NB_RiskPercent, NB_FixedLots, NB_MagicNumber, NB_Slippage, NB_MaxSpreadPoints, NB_DrawRange, NB_DebugLog)) Print("Warning: NAS100Buster failed to initialize for symbol '", NB_Symbol, "'"); if(EnableUS500Buster) if(!InitUSDJPYBuster(u5bData, U5B_Symbol, U5B_RangeStartHour, U5B_RangeEndHour, U5B_CloseHour, U5B_RangeTF, U5B_MinRangePoints, U5B_OrderBufferPoints, U5B_FirstTradeOnly, U5B_AllowLong, U5B_AllowShort, U5B_UseTakeProfit, U5B_TakeProfitPoints, U5B_RiskMode, U5B_FixedRiskMoney, U5B_RiskPercent, U5B_FixedLots, U5B_MagicNumber, U5B_Slippage, U5B_MaxSpreadPoints, U5B_DrawRange, U5B_DebugLog)) Print("Warning: US500Buster failed to initialize for symbol '", U5B_Symbol, "'"); if(EnableUS30Buster) if(!InitUSDJPYBuster(u30bData, U30B_Symbol, U30B_RangeStartHour, U30B_RangeEndHour, U30B_CloseHour, U30B_RangeTF, U30B_MinRangePoints, U30B_OrderBufferPoints, U30B_FirstTradeOnly, U30B_AllowLong, U30B_AllowShort, U30B_UseTakeProfit, U30B_TakeProfitPoints, U30B_RiskMode, U30B_FixedRiskMoney, U30B_RiskPercent, U30B_FixedLots, U30B_MagicNumber, U30B_Slippage, U30B_MaxSpreadPoints, U30B_DrawRange, U30B_DebugLog)) Print("Warning: US30Buster failed to initialize for symbol '", U30B_Symbol, "'"); if(EnableUK100Buster) if(!InitUSDJPYBuster(ukbData, UKB_Symbol, UKB_RangeStartHour, UKB_RangeEndHour, UKB_CloseHour, UKB_RangeTF, UKB_MinRangePoints, UKB_OrderBufferPoints, UKB_FirstTradeOnly, UKB_AllowLong, UKB_AllowShort, UKB_UseTakeProfit, UKB_TakeProfitPoints, UKB_RiskMode, UKB_FixedRiskMoney, UKB_RiskPercent, UKB_FixedLots, UKB_MagicNumber, UKB_Slippage, UKB_MaxSpreadPoints, UKB_DrawRange, UKB_DebugLog)) Print("Warning: UK100Buster failed to initialize for symbol '", UKB_Symbol, "'"); if(EnableXAGUSDBuster) if(!InitUSDJPYBuster(xgbData, XGB_Symbol, XGB_RangeStartHour, XGB_RangeEndHour, XGB_CloseHour, XGB_RangeTF, XGB_MinRangePoints, XGB_OrderBufferPoints, XGB_FirstTradeOnly, XGB_AllowLong, XGB_AllowShort, XGB_UseTakeProfit, XGB_TakeProfitPoints, XGB_RiskMode, XGB_FixedRiskMoney, XGB_RiskPercent, XGB_FixedLots, XGB_MagicNumber, XGB_Slippage, XGB_MaxSpreadPoints, XGB_DrawRange, XGB_DebugLog)) Print("Warning: XAGUSDBuster failed to initialize for symbol '", XGB_Symbol, "'"); rsAPPLData.closeUnprofitableOnNewSignal = RS_APPL_CloseUnprofitableOnNewSignal; rsADBEData.closeUnprofitableOnNewSignal = RS_ADBE_CloseUnprofitableOnNewSignal; rsBTCUSDData.closeUnprofitableOnNewSignal = RS_BTCUSD_CloseUnprofitableOnNewSignal; rsNVDAData.closeUnprofitableOnNewSignal = RS_NVDA_CloseUnprofitableOnNewSignal; rsTSLAData.closeUnprofitableOnNewSignal = RS_TSLA_CloseUnprofitableOnNewSignal; rsXAUUSDData.closeUnprofitableOnNewSignal = RS_XAUUSD_CloseUnprofitableOnNewSignal; rsMUData.closeUnprofitableOnNewSignal = RS_MU_CloseUnprofitableOnNewSignal; rsNAS100Data.closeUnprofitableOnNewSignal = RS_NAS100_CloseUnprofitableOnNewSignal; rsUS500Data.closeUnprofitableOnNewSignal = RS_US500_CloseUnprofitableOnNewSignal; rsUS30Data.closeUnprofitableOnNewSignal = RS_US30_CloseUnprofitableOnNewSignal; rsXAGUSDData.closeUnprofitableOnNewSignal = RS_XAGUSD_CloseUnprofitableOnNewSignal; rsEURJPYData.closeUnprofitableOnNewSignal = RS_EURJPY_CloseUnprofitableOnNewSignal; rsGBPJPYData.closeUnprofitableOnNewSignal = RS_GBPJPY_CloseUnprofitableOnNewSignal; rsFData.closeUnprofitableOnNewSignal = RS_F_CloseUnprofitableOnNewSignal; rsSOFIData.closeUnprofitableOnNewSignal = RS_SOFI_CloseUnprofitableOnNewSignal; rsSNAPData.closeUnprofitableOnNewSignal = RS_SNAP_CloseUnprofitableOnNewSignal; rsWBDData.closeUnprofitableOnNewSignal = RS_WBD_CloseUnprofitableOnNewSignal; rraEURUSDData.closeUnprofitableOnNewSignal = RRA_EURUSD_CloseUnprofitableOnNewSignal; rraAUDUSDData.closeUnprofitableOnNewSignal = RRA_AUDUSD_CloseUnprofitableOnNewSignal; seData.closeUnprofitableOnNewSignal = SE_CloseUnprofitableOnNewSignal; rcoData.closeUnprofitableOnNewSignal = RCO_CloseUnprofitableOnNewSignal; stBTCData.closeUnprofitableOnNewSignal = ST_BTC_CloseUnprofitableOnNewSignal; stXAUData.closeUnprofitableOnNewSignal = ST_XAU_CloseUnprofitableOnNewSignal; stGERData.closeUnprofitableOnNewSignal = ST_GER_CloseUnprofitableOnNewSignal; rssData.closeUnprofitableOnNewSignal = RSS_CloseUnprofitableOnNewSignal; ubData.closeUnprofitableOnNewSignal = UB_CloseUnprofitableOnNewSignal; xbtData.closeUnprofitableOnNewSignal = XBT_CloseUnprofitableOnNewSignal; xmbData.closeUnprofitableOnNewSignal = XMB_CloseUnprofitableOnNewSignal; rraGBPUSDData.closeUnprofitableOnNewSignal = RRA_GBPUSD_CloseUnprofitableOnNewSignal; gbData.closeUnprofitableOnNewSignal = GB_CloseUnprofitableOnNewSignal; rraUSDCHFData.closeUnprofitableOnNewSignal = RRA_USDCHF_CloseUnprofitableOnNewSignal; rraNZDUSDData.closeUnprofitableOnNewSignal = RRA_NZDUSD_CloseUnprofitableOnNewSignal; nbData.closeUnprofitableOnNewSignal = NB_CloseUnprofitableOnNewSignal; u5bData.closeUnprofitableOnNewSignal = U5B_CloseUnprofitableOnNewSignal; u30bData.closeUnprofitableOnNewSignal = U30B_CloseUnprofitableOnNewSignal; ukbData.closeUnprofitableOnNewSignal = UKB_CloseUnprofitableOnNewSignal; xgbData.closeUnprofitableOnNewSignal = XGB_CloseUnprofitableOnNewSignal; Print("United EA initialized. Active strategies: ", (EnableDarvasBox ? "DarvasBox " : ""), (EnableEMASlopeDistance ? "EMASlope " : ""), (EnableRSICrossOverReversal ? "RSICrossOver " : ""), (EnableRSIMidPointHijack ? "RSIMidPoint " : ""), (EnableRSIScalpingAPPL ? "RSIScalpingAPPL " : ""), (EnableRSIScalpingADBE ? "RSIScalpingADBE " : ""), (EnableRSIScalpingBTCUSD ? "RSIScalpingBTCUSD " : ""), (EnableRSIScalpingNVDA ? "RSIScalpingNVDA " : ""), (EnableRSIScalpingTSLA ? "RSIScalpingTSLA " : ""), (EnableRSIScalpingXAUUSD ? "RSIScalpingXAUUSD " : ""), (EnableRSIScalpingMU ? "RSIScalpingMU " : ""), (EnableRSISecretSauce ? "RSISecretSauce " : ""), (EnableSuperEMA ? "SuperEMA " : ""), (EnableRSIConsolidation ? "RSIConsolidation " : ""), (EnableRSIReversalAsianEURUSD ? "RSIReversalAsianEURUSD " : ""), (EnableRSIReversalAsianAUDUSD ? "RSIReversalAsianAUDUSD " : ""), (EnableSimpleTrendlineBTCUSD ? "SimpleTrendlineBTCUSD " : ""), (EnableSimpleTrendlineXAUUSD ? "SimpleTrendlineXAUUSD " : ""), (EnableSimpleTrendlineGER40 ? "SimpleTrendlineGER40 " : ""), (EnableUSDJPYBuster ? "USDJPYBuster " : ""), (EnableXAUBearTrend ? "XAUBearTrend " : ""), (EnableXAUMomentumBreakdown ? "XAUMomentumBreakdown " : ""), (EnableRSIReversalAsianGBPUSD ? "RSIReversalAsianGBPUSD " : ""), (EnableGER40Buster ? "GER40Buster " : ""), (EnableRSIScalpingNAS100 ? "RSIScalpingNAS100 " : ""), (EnableRSIScalpingUS500 ? "RSIScalpingUS500 " : ""), (EnableRSIReversalAsianUSDCHF ? "RSIReversalAsianUSDCHF " : ""), (EnableRSIReversalAsianNZDUSD ? "RSIReversalAsianNZDUSD " : ""), (EnableNAS100Buster ? "NAS100Buster " : ""), (EnableUS500Buster ? "US500Buster " : ""), (EnableRSIScalpingUS30 ? "RSIScalpingUS30 " : ""), (EnableRSIScalpingXAGUSD ? "RSIScalpingXAGUSD " : ""), (EnableRSIScalpingEURJPY ? "RSIScalpingEURJPY " : ""), (EnableRSIScalpingGBPJPY ? "RSIScalpingGBPJPY " : ""), (EnableUS30Buster ? "US30Buster " : ""), (EnableUK100Buster ? "UK100Buster " : ""), (EnableXAGUSDBuster ? "XAGUSDBuster " : ""), (EnableRSIScalpingF ? "RSIScalpingF " : ""), (EnableRSIScalpingSOFI ? "RSIScalpingSOFI " : ""), (EnableRSIScalpingSNAP ? "RSIScalpingSNAP " : ""), (EnableRSIScalpingWBD ? "RSIScalpingWBD " : "")); return initResult; } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(EnableDarvasBox) DeinitDarvasBox(); if(EnableEMASlopeDistance) DeinitEMASlopeDistance(); if(EnableRSICrossOverReversal) DeinitRSICrossOverReversal(); if(EnableRSIMidPointHijack) DeinitRSIMidPointHijack(); if(EnableRSIScalpingAPPL) DeinitRSIScalping(rsAPPLData); if(EnableRSIScalpingADBE) DeinitRSIScalping(rsADBEData); if(EnableRSIScalpingBTCUSD) DeinitRSIScalping(rsBTCUSDData); if(EnableRSIScalpingNVDA) DeinitRSIScalping(rsNVDAData); if(EnableRSIScalpingTSLA) DeinitRSIScalping(rsTSLAData); if(EnableRSIScalpingXAUUSD) DeinitRSIScalping(rsXAUUSDData); if(EnableRSIScalpingMU) DeinitRSIScalping(rsMUData); if(EnableRSIScalpingNAS100) DeinitRSIScalping(rsNAS100Data); if(EnableRSIScalpingUS500) DeinitRSIScalping(rsUS500Data); if(EnableRSIScalpingUS30) DeinitRSIScalping(rsUS30Data); if(EnableRSIScalpingXAGUSD) DeinitRSIScalping(rsXAGUSDData); if(EnableRSIScalpingEURJPY) DeinitRSIScalping(rsEURJPYData); if(EnableRSIScalpingGBPJPY) DeinitRSIScalping(rsGBPJPYData); if(EnableRSIScalpingF) DeinitRSIScalping(rsFData); if(EnableRSIScalpingSOFI) DeinitRSIScalping(rsSOFIData); if(EnableRSIScalpingSNAP) DeinitRSIScalping(rsSNAPData); if(EnableRSIScalpingWBD) DeinitRSIScalping(rsWBDData); if(EnableRSISecretSauce) DeinitRSISecretSauce(rssData); if(EnableSuperEMA) DeinitSuperEMA(seData); if(EnableRSIConsolidation) DeinitRSIConsolidation(rcoData); if(EnableRSIReversalAsianEURUSD) DeinitRSIReversalAsian(rraEURUSDData); if(EnableRSIReversalAsianAUDUSD) DeinitRSIReversalAsian(rraAUDUSDData); if(EnableSimpleTrendlineBTCUSD) DeinitSimpleTrendline(stBTCData); if(EnableSimpleTrendlineXAUUSD) DeinitSimpleTrendline(stXAUData); if(EnableSimpleTrendlineGER40) DeinitSimpleTrendline(stGERData); if(EnableUSDJPYBuster) DeinitUSDJPYBuster(ubData); if(EnableXAUBearTrend) DeinitXAUBearTrend(xbtData); if(EnableXAUMomentumBreakdown) DeinitXAUMomentumBreakdown(xmbData); if(EnableRSIReversalAsianGBPUSD) DeinitRSIReversalAsian(rraGBPUSDData); if(EnableGER40Buster) DeinitUSDJPYBuster(gbData); if(EnableRSIReversalAsianUSDCHF) DeinitRSIReversalAsian(rraUSDCHFData); if(EnableRSIReversalAsianNZDUSD) DeinitRSIReversalAsian(rraNZDUSDData); if(EnableNAS100Buster) DeinitUSDJPYBuster(nbData); if(EnableUS500Buster) DeinitUSDJPYBuster(u5bData); if(EnableUS30Buster) DeinitUSDJPYBuster(u30bData); if(EnableUK100Buster) DeinitUSDJPYBuster(ukbData); if(EnableXAGUSDBuster) DeinitUSDJPYBuster(xgbData); Print("United EA deinitialized. Reason: ", reason); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { United_RefreshScaledLots(); United_ProcessGapGuard(g_gapTrade); if(EnableDarvasBox) ProcessDarvasBox(DB_Symbol); if(EnableEMASlopeDistance) ProcessEMASlopeDistance(ES_Symbol); if(EnableRSICrossOverReversal) ProcessRSICrossOverReversal(RC_Symbol); if(EnableRSIMidPointHijack) ProcessRSIMidPointHijack(RM_Symbol); if(EnableRSIScalpingAPPL) ProcessRSIScalping(rsAPPLData, RS_APPL_Symbol, RS_APPL_TimeFrame, RS_APPL_RSI_Period, RS_APPL_RSI_Applied_Price, RS_APPL_RSI_Overbought, RS_APPL_RSI_Oversold, RS_APPL_RSI_Target_Buy, RS_APPL_RSI_Target_Sell, RS_APPL_BarsToWait, g_Pos_RS_APPL, RS_APPL_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_APPL_UseTrailingStop, RS_APPL_TrailDistancePoints, RS_APPL_TrailActivationPoints); if(EnableRSIScalpingADBE) ProcessRSIScalping(rsADBEData, RS_ADBE_Symbol, RS_ADBE_TimeFrame, RS_ADBE_RSI_Period, RS_ADBE_RSI_Applied_Price, RS_ADBE_RSI_Overbought, RS_ADBE_RSI_Oversold, RS_ADBE_RSI_Target_Buy, RS_ADBE_RSI_Target_Sell, RS_ADBE_BarsToWait, g_Pos_RS_ADBE, RS_ADBE_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_ADBE_UseTrailingStop, RS_ADBE_TrailDistancePoints, RS_ADBE_TrailActivationPoints); if(EnableRSIScalpingBTCUSD) ProcessRSIScalping(rsBTCUSDData, RS_BTCUSD_Symbol, RS_BTCUSD_TimeFrame, RS_BTCUSD_RSI_Period, RS_BTCUSD_RSI_Applied_Price, RS_BTCUSD_RSI_Overbought, RS_BTCUSD_RSI_Oversold, RS_BTCUSD_RSI_Target_Buy, RS_BTCUSD_RSI_Target_Sell, RS_BTCUSD_BarsToWait, g_Pos_RS_BTCUSD, RS_BTCUSD_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_BTCUSD_UseTrailingStop, RS_BTCUSD_TrailDistancePoints, RS_BTCUSD_TrailActivationPoints); if(EnableRSIScalpingNVDA) ProcessRSIScalping(rsNVDAData, RS_NVDA_Symbol, RS_NVDA_TimeFrame, RS_NVDA_RSI_Period, RS_NVDA_RSI_Applied_Price, RS_NVDA_RSI_Overbought, RS_NVDA_RSI_Oversold, RS_NVDA_RSI_Target_Buy, RS_NVDA_RSI_Target_Sell, RS_NVDA_BarsToWait, g_Pos_RS_NVDA, RS_NVDA_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_NVDA_UseTrailingStop, RS_NVDA_TrailDistancePoints, RS_NVDA_TrailActivationPoints); if(EnableRSIScalpingTSLA) ProcessRSIScalping(rsTSLAData, RS_TSLA_Symbol, RS_TSLA_TimeFrame, RS_TSLA_RSI_Period, RS_TSLA_RSI_Applied_Price, RS_TSLA_RSI_Overbought, RS_TSLA_RSI_Oversold, RS_TSLA_RSI_Target_Buy, RS_TSLA_RSI_Target_Sell, RS_TSLA_BarsToWait, g_Pos_RS_TSLA, RS_TSLA_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_TSLA_UseTrailingStop, RS_TSLA_TrailDistancePoints, RS_TSLA_TrailActivationPoints); if(EnableRSIScalpingXAUUSD) ProcessRSIScalping(rsXAUUSDData, RS_XAUUSD_Symbol, RS_XAUUSD_TimeFrame, RS_XAUUSD_RSI_Period, RS_XAUUSD_RSI_Applied_Price, RS_XAUUSD_RSI_Overbought, RS_XAUUSD_RSI_Oversold, RS_XAUUSD_RSI_Target_Buy, RS_XAUUSD_RSI_Target_Sell, RS_XAUUSD_BarsToWait, g_Pos_RS_XAUUSD, RS_XAUUSD_MagicNumber, RS_UseReversalEscape, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_XAUUSD_UseTrailingStop, RS_XAUUSD_TrailDistancePoints, RS_XAUUSD_TrailActivationPoints); if(EnableRSIScalpingMU) ProcessRSIScalping(rsMUData, RS_MU_Symbol, RS_MU_TimeFrame, RS_MU_RSI_Period, RS_MU_RSI_Applied_Price, RS_MU_RSI_Overbought, RS_MU_RSI_Oversold, RS_MU_RSI_Target_Buy, RS_MU_RSI_Target_Sell, RS_MU_BarsToWait, g_Pos_RS_MU, RS_MU_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, false, 0.0, 0.0); if(EnableRSIScalpingNAS100) ProcessRSIScalping(rsNAS100Data, RS_NAS100_Symbol, RS_NAS100_TimeFrame, RS_NAS100_RSI_Period, RS_NAS100_RSI_Applied_Price, RS_NAS100_RSI_Overbought, RS_NAS100_RSI_Oversold, RS_NAS100_RSI_Target_Buy, RS_NAS100_RSI_Target_Sell, RS_NAS100_BarsToWait, g_Pos_RS_NAS100, RS_NAS100_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_NAS100_UseTrailingStop, RS_NAS100_TrailDistancePoints, RS_NAS100_TrailActivationPoints); if(EnableRSIScalpingUS500) ProcessRSIScalping(rsUS500Data, RS_US500_Symbol, RS_US500_TimeFrame, RS_US500_RSI_Period, RS_US500_RSI_Applied_Price, RS_US500_RSI_Overbought, RS_US500_RSI_Oversold, RS_US500_RSI_Target_Buy, RS_US500_RSI_Target_Sell, RS_US500_BarsToWait, g_Pos_RS_US500, RS_US500_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_US500_UseTrailingStop, RS_US500_TrailDistancePoints, RS_US500_TrailActivationPoints); if(EnableRSIScalpingUS30) ProcessRSIScalping(rsUS30Data, RS_US30_Symbol, RS_US30_TimeFrame, RS_US30_RSI_Period, RS_US30_RSI_Applied_Price, RS_US30_RSI_Overbought, RS_US30_RSI_Oversold, RS_US30_RSI_Target_Buy, RS_US30_RSI_Target_Sell, RS_US30_BarsToWait, g_Pos_RS_US30, RS_US30_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_US30_UseTrailingStop, RS_US30_TrailDistancePoints, RS_US30_TrailActivationPoints); if(EnableRSIScalpingXAGUSD) ProcessRSIScalping(rsXAGUSDData, RS_XAGUSD_Symbol, RS_XAGUSD_TimeFrame, RS_XAGUSD_RSI_Period, RS_XAGUSD_RSI_Applied_Price, RS_XAGUSD_RSI_Overbought, RS_XAGUSD_RSI_Oversold, RS_XAGUSD_RSI_Target_Buy, RS_XAGUSD_RSI_Target_Sell, RS_XAGUSD_BarsToWait, g_Pos_RS_XAGUSD, RS_XAGUSD_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_XAGUSD_UseTrailingStop, RS_XAGUSD_TrailDistancePoints, RS_XAGUSD_TrailActivationPoints); if(EnableRSIScalpingEURJPY) ProcessRSIScalping(rsEURJPYData, RS_EURJPY_Symbol, RS_EURJPY_TimeFrame, RS_EURJPY_RSI_Period, RS_EURJPY_RSI_Applied_Price, RS_EURJPY_RSI_Overbought, RS_EURJPY_RSI_Oversold, RS_EURJPY_RSI_Target_Buy, RS_EURJPY_RSI_Target_Sell, RS_EURJPY_BarsToWait, g_Pos_RS_EURJPY, RS_EURJPY_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_EURJPY_UseTrailingStop, RS_EURJPY_TrailDistancePoints, RS_EURJPY_TrailActivationPoints); if(EnableRSIScalpingGBPJPY) ProcessRSIScalping(rsGBPJPYData, RS_GBPJPY_Symbol, RS_GBPJPY_TimeFrame, RS_GBPJPY_RSI_Period, RS_GBPJPY_RSI_Applied_Price, RS_GBPJPY_RSI_Overbought, RS_GBPJPY_RSI_Oversold, RS_GBPJPY_RSI_Target_Buy, RS_GBPJPY_RSI_Target_Sell, RS_GBPJPY_BarsToWait, g_Pos_RS_GBPJPY, RS_GBPJPY_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_GBPJPY_UseTrailingStop, RS_GBPJPY_TrailDistancePoints, RS_GBPJPY_TrailActivationPoints); if(EnableRSIScalpingF) ProcessRSIScalping(rsFData, RS_F_Symbol, RS_F_TimeFrame, RS_F_RSI_Period, RS_F_RSI_Applied_Price, RS_F_RSI_Overbought, RS_F_RSI_Oversold, RS_F_RSI_Target_Buy, RS_F_RSI_Target_Sell, RS_F_BarsToWait, g_Pos_RS_F, RS_F_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_F_UseTrailingStop, RS_F_TrailDistancePoints, RS_F_TrailActivationPoints); if(EnableRSIScalpingSOFI) ProcessRSIScalping(rsSOFIData, RS_SOFI_Symbol, RS_SOFI_TimeFrame, RS_SOFI_RSI_Period, RS_SOFI_RSI_Applied_Price, RS_SOFI_RSI_Overbought, RS_SOFI_RSI_Oversold, RS_SOFI_RSI_Target_Buy, RS_SOFI_RSI_Target_Sell, RS_SOFI_BarsToWait, g_Pos_RS_SOFI, RS_SOFI_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_SOFI_UseTrailingStop, RS_SOFI_TrailDistancePoints, RS_SOFI_TrailActivationPoints); if(EnableRSIScalpingSNAP) ProcessRSIScalping(rsSNAPData, RS_SNAP_Symbol, RS_SNAP_TimeFrame, RS_SNAP_RSI_Period, RS_SNAP_RSI_Applied_Price, RS_SNAP_RSI_Overbought, RS_SNAP_RSI_Oversold, RS_SNAP_RSI_Target_Buy, RS_SNAP_RSI_Target_Sell, RS_SNAP_BarsToWait, g_Pos_RS_SNAP, RS_SNAP_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_SNAP_UseTrailingStop, RS_SNAP_TrailDistancePoints, RS_SNAP_TrailActivationPoints); if(EnableRSIScalpingWBD) ProcessRSIScalping(rsWBDData, RS_WBD_Symbol, RS_WBD_TimeFrame, RS_WBD_RSI_Period, RS_WBD_RSI_Applied_Price, RS_WBD_RSI_Overbought, RS_WBD_RSI_Oversold, RS_WBD_RSI_Target_Buy, RS_WBD_RSI_Target_Sell, RS_WBD_BarsToWait, g_Pos_RS_WBD, RS_WBD_MagicNumber, false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired, RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult, RS_WBD_UseTrailingStop, RS_WBD_TrailDistancePoints, RS_WBD_TrailActivationPoints); if(EnableRSISecretSauce) ProcessRSISecretSauce(rssData, g_RSS_LotSize); if(EnableRSIReversalAsianEURUSD) ProcessRSIReversalAsian(rraEURUSDData, g_Pos_RRA_EURUSD); if(EnableRSIReversalAsianAUDUSD) ProcessRSIReversalAsian(rraAUDUSDData, g_Pos_RRA_AUDUSD); if(EnableSuperEMA) ProcessSuperEMA(seData, g_Pos_SE); if(EnableRSIConsolidation) ProcessRSIConsolidation(rcoData, g_Pos_RCO); if(EnableSimpleTrendlineBTCUSD) ProcessSimpleTrendline(stBTCData, g_Pos_ST_BTCUSD); if(EnableSimpleTrendlineXAUUSD) ProcessSimpleTrendline(stXAUData, g_Pos_ST_XAUUSD); if(EnableSimpleTrendlineGER40) ProcessSimpleTrendline(stGERData, g_Pos_ST_GER40); if(EnableUSDJPYBuster) ProcessUSDJPYBuster(ubData, g_Pos_UB_USDJPY, United_BalanceScaleFactor()); if(EnableXAUBearTrend) ProcessXAUBearTrend(xbtData, g_Pos_XBT_XAUUSD); if(EnableXAUMomentumBreakdown) ProcessXAUMomentumBreakdown(xmbData, g_Pos_XMB_XAUUSD); if(EnableRSIReversalAsianGBPUSD) ProcessRSIReversalAsian(rraGBPUSDData, g_Pos_RRA_GBPUSD); if(EnableGER40Buster) ProcessUSDJPYBuster(gbData, g_Pos_GB_GER40, United_BalanceScaleFactor()); if(EnableRSIReversalAsianUSDCHF) ProcessRSIReversalAsian(rraUSDCHFData, g_Pos_RRA_USDCHF); if(EnableRSIReversalAsianNZDUSD) ProcessRSIReversalAsian(rraNZDUSDData, g_Pos_RRA_NZDUSD); if(EnableNAS100Buster) ProcessUSDJPYBuster(nbData, g_Pos_NB_NAS100, United_BalanceScaleFactor()); if(EnableUS500Buster) ProcessUSDJPYBuster(u5bData, g_Pos_U5B_US500, United_BalanceScaleFactor()); if(EnableUS30Buster) ProcessUSDJPYBuster(u30bData, g_Pos_U30B_US30, United_BalanceScaleFactor()); if(EnableUK100Buster) ProcessUSDJPYBuster(ukbData, g_Pos_UKB_UK100, United_BalanceScaleFactor()); if(EnableXAGUSDBuster) ProcessUSDJPYBuster(xgbData, g_Pos_XGB_XAGUSD, United_BalanceScaleFactor()); } //+------------------------------------------------------------------+