/////////////////////////////////////////////////////// // // SaherElm IT Center X5EA MQL5 Expert Advisor // ------------------------------------------------- // Name: X5EA // Description: an Exper Advisor which used RSI and MA // to Analyse Market ... // // Maintainer: // ------------ // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) // //////////////////////////////////////////////////////x // // Global Properties ... #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://saherelm.ir" #property version "1.00" #property description "SaherElm X5EA" #property strict // #define ShortName "X5EA" // #include "../Classes/x-saherelm.x5.xea.class.mq5" // // "EURUSDb,USDCHFb,USDJPYb,XAUUSDb" // // Inputs ... long x5EAMagicNumber = 78692110; // Magic Number int x5EASlippage = 10; // Slippgae string x5EASymbols = "EURUSDb,USDCHFb,USDJPYb,XAUUSDb"; // Symbols // bool x5EAAllowLong = true; // Allow Long Trades bool x5EAAllowShort = true; // Allow Short Trades int x5EAManageInterval = 5; // Manager Check Intervals Seconds int x5EAMaxAllowedPositions = 15; // Max Allowed Positions double x5EAMaxAllowedSpread = 0; // Max Allowed Spred for Opening Trades double x5EAMinProfitPerTrade = 0; // Min Profit Per Trade based On Volume Factor (Hedge) double x5EAMinProfitPerVolumeFactor = 0; // Min Volume Factor for Calculating Profit (Hedge) double x5EAMaxAllowedDrawdownFactor = 0; // Max Allowed Drawdown Factor // double x5EAVolume = 0.01; // // Vars ... string x5EASymbol; ENUM_TIMEFRAMES x5EAPeriod; // MqlTick x5EATick; // // X5EA ... XSCX5EA *mX5EA; // // Event Handlers ... // // Initialization ... int OnInit() { // if (x5EASymbol == NULL || StringLen(x5EASymbol) <= 0) { x5EASymbol = _Symbol; } // if (x5EAPeriod == NULL) { x5EAPeriod = _Period; } // // Validate Inputs ... if (!X5EAValidateInputs()) { return INIT_PARAMETERS_INCORRECT; } // // Initial EA ... if (!InitialEA()) { return INIT_PARAMETERS_INCORRECT; } // TesterHideIndicators(true); // // Init Succeed ... return INIT_SUCCEEDED; } // // DeInitialization ... void OnDeinit(const int reason) { // // REASON_PROGRAM 0 The EA has stopped working calling the ExpertRemove() function // REASON_REMOVE 1 Program removed from a chart // REASON_RECOMPILE 2 Program recompiled // REASON_CHARTCHANGE 3 A symbol or a chart period is changed // REASON_CHARTCLOSE 4 Chart closed // REASON_PARAMETERS 5 Inputs changed by a user // REASON_ACCOUNT 6 Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings // REASON_TEMPLATE 7 Another chart template applied // REASON_INITFAILED 8 The OnInit() handler returned a non-zero value // REASON_CLOSE 9 Terminal closed // // De Initialize X5EA Providers ... } // // On Tick Handler ... void OnTick() { // // Reading Tick ... if (!SymbolInfoTick(x5EASymbol, x5EATick)) { return; } // mX5EA.OnTick(); } // // Custom Functions ... // // Validate Variables nd Inputs ... bool X5EAValidateInputs() { // bool result = false; // result = // x5EASlippage > 0 && x5EAMagicNumber > 0 // ; // return result; } // // Initialize Specific Providers ... bool InitialEA() { // bool result = false; // // Here We Have to Initial 4 instance of X5Provider ... // - EURUSD/M5; // - USDCHF/M5; // - USDJPY/M5; // - XAUUSD/M5; // result = IsValid(x5EASymbols); if (!result) { return result; } // string symbols[]; int symbolsCount = SplitContent( symbols, x5EASymbols); result = symbolsCount > 0; if (!result) { return result; } // // Define Signallers ... ENUM_X5_SIGNAL_PROVIDERS signallers[]; GetAllX5SignalProviders(signallers); // // Instantiate X5EA Class ... mX5EA = new XSCX5EA( x5EASlippage, // Slippgae x5EAMagicNumber, // Magic Number x5EAManageInterval, // Manager Check Intervals Seconds x5EAMaxAllowedSpread, // Max Allowed Spred for Opening Trades x5EAMaxAllowedPositions, // Max Allowed Positions x5EAMaxAllowedDrawdownFactor, // Max Allowed Drawdown Factor x5EAAllowLong, // Allow Long Trades x5EAAllowShort, // Allow Short Trades x5EAMinProfitPerTrade, // Min Profit Per Trade based On Volume Factor (Hedge) x5EAMinProfitPerVolumeFactor // Min Volume Factor for Calculating Profit (Hedge) ); // // Prepare Providers and Add them into mX5EA class ... for (int i = 0; i < symbolsCount; i++) { // // Define Structure ... X5ProviderDescriptor iDescriptor; // iDescriptor.symbol = symbols[i]; iDescriptor.period = PERIOD_M5; iDescriptor.staticVolume = x5EAVolume; iDescriptor.allowLong = x5EAAllowLong; iDescriptor.allowShort = x5EAAllowShort; Copy( signallers, iDescriptor.signallers); // // Set Inputs to Default ... iDescriptor.inputs.Default(); // // Validate Inputs ... bool isInputsValid = iDescriptor.inputs.IsValid(); if (!isInputsValid) { continue; } // result = mX5EA.AddProvider(iDescriptor); if (!result) { break; } } // return result; } //