605faf5310
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>
615 lines
26 KiB
Plaintext
615 lines
26 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.00"
|
|
#property strict
|
|
|
|
#include <Trade\Trade.mqh>
|
|
#include <Trade\PositionInfo.mqh>
|
|
#include <Indicators\Trend.mqh>
|
|
#include <Indicators\Volumes.mqh>
|
|
#include "MagicNumberHelpers.mqh"
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| 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 = true;
|
|
input bool EnableRSIScalpingBTCUSD = true;
|
|
input bool EnableRSIScalpingMSFT = true;
|
|
input bool EnableRSIScalpingNVDA = true;
|
|
input bool EnableRSIScalpingTSLA = true;
|
|
input bool EnableRSIScalpingXAUUSD = true;
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| 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 = clrBlue;
|
|
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 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.03;
|
|
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.01;
|
|
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.02;
|
|
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 |
|
|
//| - MSFT: Microsoft stock |
|
|
//| - 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.US"; // Try: "AAPL.US", "NASDAQ:AAPL", or "AAPL"
|
|
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 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 MSFT - Pepperstone US ==="
|
|
input string RS_MSFT_Symbol = "MSFT.US"; // Try: "MSFT.US", "NASDAQ:MSFT", or "MSFT"
|
|
input ENUM_TIMEFRAMES RS_MSFT_TimeFrame = PERIOD_H3;
|
|
input int RS_MSFT_RSI_Period = 14;
|
|
input ENUM_APPLIED_PRICE RS_MSFT_RSI_Applied_Price = PRICE_CLOSE;
|
|
input double RS_MSFT_RSI_Overbought = 19;
|
|
input double RS_MSFT_RSI_Oversold = 50;
|
|
input double RS_MSFT_RSI_Target_Buy = 71;
|
|
input double RS_MSFT_RSI_Target_Sell = 70;
|
|
input int RS_MSFT_BarsToWait = 1;
|
|
input double RS_MSFT_LotSize = 50;
|
|
input int RS_MSFT_MagicNumber = 20002;
|
|
input int RS_MSFT_Slippage = 3;
|
|
|
|
input group "=== RSI Scalping NVDA - Pepperstone US ==="
|
|
input string RS_NVDA_Symbol = "NVDA.US"; // Try: "NVDA.US", "NASDAQ:NVDA", or "NVDA"
|
|
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 = 50;
|
|
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.US"; // Try: "TSLA.US", "NASDAQ:TSLA", or "TSLA"
|
|
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 = 50;
|
|
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 Reversal escape (XAUUSD) ==="
|
|
input bool RS_UseReversalEscape = false;
|
|
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 ==="
|
|
input bool RS_APPL_UseTrailingStop = true;
|
|
input double RS_APPL_TrailDistancePoints = 120.0;
|
|
input double RS_APPL_TrailActivationPoints = 0.0;
|
|
|
|
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 MSFT — Trailing ==="
|
|
input bool RS_MSFT_UseTrailingStop = true;
|
|
input double RS_MSFT_TrailDistancePoints = 375.0;
|
|
input double RS_MSFT_TrailActivationPoints = 75.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 = 950.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;
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| 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 Variables - RSI Scalping |
|
|
//+------------------------------------------------------------------+
|
|
struct RSIScalpingData {
|
|
string symbol;
|
|
bool isInitialized;
|
|
CTrade trade;
|
|
int rsi_handle;
|
|
double rsi_buffer[];
|
|
double rsi_prev;
|
|
double rsi_current;
|
|
double rsi_two_bars_ago;
|
|
bool position_open;
|
|
ulong position_ticket;
|
|
ENUM_POSITION_TYPE current_position_type;
|
|
datetime last_bar_time;
|
|
bool rsi_against_position;
|
|
int bars_against_count;
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Global Strategy Instances |
|
|
//+------------------------------------------------------------------+
|
|
DarvasBoxData dbData;
|
|
EMASlopeData esData;
|
|
RSICrossOverData rcData;
|
|
RSIMidPointData rmData;
|
|
RSIScalpingData rsAPPLData;
|
|
RSIScalpingData rsBTCUSDData;
|
|
RSIScalpingData rsMSFTData;
|
|
RSIScalpingData rsNVDAData;
|
|
RSIScalpingData rsTSLAData;
|
|
RSIScalpingData rsXAUUSDData;
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Global Variables for lot sizes (from inputs below) |
|
|
//+------------------------------------------------------------------+
|
|
double g_DB_LotSize = 0.01;
|
|
double g_ES_LotSize;
|
|
double g_RC_LotSize;
|
|
double g_RM_LotSize;
|
|
double g_RS_APPL_LotSize;
|
|
double g_RS_BTCUSD_LotSize;
|
|
double g_RS_MSFT_LotSize;
|
|
double g_RS_NVDA_LotSize;
|
|
double g_RS_TSLA_LotSize;
|
|
double g_RS_XAUUSD_LotSize;
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Expert initialization function |
|
|
//+------------------------------------------------------------------+
|
|
int OnInit()
|
|
{
|
|
int initResult = INIT_SUCCEEDED;
|
|
|
|
g_ES_LotSize = ES_LotGröße;
|
|
g_RC_LotSize = RC_lotSize;
|
|
g_RM_LotSize = RM_InpLotSize;
|
|
g_RS_APPL_LotSize = RS_APPL_LotSize;
|
|
g_RS_BTCUSD_LotSize = RS_BTCUSD_LotSize;
|
|
g_RS_MSFT_LotSize = RS_MSFT_LotSize;
|
|
g_RS_NVDA_LotSize = RS_NVDA_LotSize;
|
|
g_RS_TSLA_LotSize = RS_TSLA_LotSize;
|
|
g_RS_XAUUSD_LotSize = RS_XAUUSD_LotSize;
|
|
|
|
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, "'");
|
|
|
|
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(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(EnableRSIScalpingMSFT)
|
|
InitRSIScalping(rsMSFTData, RS_MSFT_Symbol, RS_MSFT_TimeFrame, RS_MSFT_RSI_Period, RS_MSFT_RSI_Applied_Price, RS_MSFT_MagicNumber, RS_MSFT_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);
|
|
|
|
Print("United EA (self-evaluate build) initialized. Active strategies: ",
|
|
(EnableDarvasBox ? "DarvasBox " : ""),
|
|
(EnableEMASlopeDistance ? "EMASlope " : ""),
|
|
(EnableRSICrossOverReversal ? "RSICrossOver " : ""),
|
|
(EnableRSIMidPointHijack ? "RSIMidPoint " : ""),
|
|
(EnableRSIScalpingAPPL ? "RSIScalpingAPPL " : ""),
|
|
(EnableRSIScalpingBTCUSD ? "RSIScalpingBTCUSD " : ""),
|
|
(EnableRSIScalpingMSFT ? "RSIScalpingMSFT " : ""),
|
|
(EnableRSIScalpingNVDA ? "RSIScalpingNVDA " : ""),
|
|
(EnableRSIScalpingTSLA ? "RSIScalpingTSLA " : ""),
|
|
(EnableRSIScalpingXAUUSD ? "RSIScalpingXAUUSD " : ""));
|
|
|
|
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(EnableRSIScalpingBTCUSD)
|
|
DeinitRSIScalping(rsBTCUSDData);
|
|
|
|
if(EnableRSIScalpingMSFT)
|
|
DeinitRSIScalping(rsMSFTData);
|
|
|
|
if(EnableRSIScalpingNVDA)
|
|
DeinitRSIScalping(rsNVDAData);
|
|
|
|
if(EnableRSIScalpingTSLA)
|
|
DeinitRSIScalping(rsTSLAData);
|
|
|
|
if(EnableRSIScalpingXAUUSD)
|
|
DeinitRSIScalping(rsXAUUSDData);
|
|
|
|
Print("United EA deinitialized. Reason: ", reason);
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Expert tick function |
|
|
//+------------------------------------------------------------------+
|
|
void OnTick()
|
|
{
|
|
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_RS_APPL_LotSize, RS_APPL_MagicNumber,
|
|
false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired,
|
|
RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult,
|
|
RS_APPL_UseTrailingStop, RS_APPL_TrailDistancePoints, RS_APPL_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_RS_BTCUSD_LotSize, RS_BTCUSD_MagicNumber,
|
|
false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired,
|
|
RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult,
|
|
RS_BTCUSD_UseTrailingStop, RS_BTCUSD_TrailDistancePoints, RS_BTCUSD_TrailActivationPoints);
|
|
|
|
if(EnableRSIScalpingMSFT)
|
|
ProcessRSIScalping(rsMSFTData, RS_MSFT_Symbol, RS_MSFT_TimeFrame, RS_MSFT_RSI_Period, RS_MSFT_RSI_Applied_Price,
|
|
RS_MSFT_RSI_Overbought, RS_MSFT_RSI_Oversold, RS_MSFT_RSI_Target_Buy, RS_MSFT_RSI_Target_Sell,
|
|
RS_MSFT_BarsToWait, g_RS_MSFT_LotSize, RS_MSFT_MagicNumber,
|
|
false, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired,
|
|
RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult,
|
|
RS_MSFT_UseTrailingStop, RS_MSFT_TrailDistancePoints, RS_MSFT_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_RS_NVDA_LotSize, 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_RS_TSLA_LotSize, 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_RS_XAUUSD_LotSize, RS_XAUUSD_MagicNumber,
|
|
RS_UseReversalEscape, RS_ReversalATRPeriod, RS_ReversalAdverseAtrMult, RS_ReversalSignsRequired,
|
|
RS_ReversalRsiVelocity, RS_ReversalBodyAtrMult,
|
|
RS_XAUUSD_UseTrailingStop, RS_XAUUSD_TrailDistancePoints, RS_XAUUSD_TrailActivationPoints);
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Include strategy implementations |
|
|
//+------------------------------------------------------------------+
|
|
#include "Strategies/DarvasBoxStrategy.mqh"
|
|
#include "Strategies/EMASlopeDistanceStrategy.mqh"
|
|
#include "Strategies/RSICrossOverReversalStrategy.mqh"
|
|
#include "Strategies/RSIMidPointHijackStrategy.mqh"
|
|
#include "Strategies/RSIScalpingStrategy.mqh"
|
|
|
|
//+------------------------------------------------------------------+
|