Files
zhutoutoutousan 605faf5310 Prepare source-only public release for develop.
Add cluster audit pipeline, united EA updates, brochure generators, and publication hygiene (gitignore, MT5 path desensitization, pre-upload scan). Remove tracked reports, models, and binary artifacts from the repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 15:03:43 +02:00

2036 lines
99 KiB
Plaintext

//+------------------------------------------------------------------+
//| 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 <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Indicators\Trend.mqh>
#include <Indicators\Volumes.mqh>
#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());
}
//+------------------------------------------------------------------+