From e47756f29a3c9dde6bb6a38326dc0c2cd7fa9b34 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Tue, 21 May 2024 23:15:44 +0330 Subject: [PATCH] add new bkp ... --- MQLTestWorkspace/BKPS/1/conditions.mq5 | 133 ++++++++ MQLTestWorkspace/BKPS/1/x-test.x5ea copy.mq5 | 304 +++++++++++++++++++ MQLTestWorkspace/BKPS/1/x-test.x5ea.ex5 | Bin 0 -> 12660 bytes MQLTestWorkspace/BKPS/1/x-test.x5ea.mq5 | 131 ++++++++ package.json | 214 +++++++++++++ 5 files changed, 782 insertions(+) create mode 100644 MQLTestWorkspace/BKPS/1/conditions.mq5 create mode 100644 MQLTestWorkspace/BKPS/1/x-test.x5ea copy.mq5 create mode 100644 MQLTestWorkspace/BKPS/1/x-test.x5ea.ex5 create mode 100644 MQLTestWorkspace/BKPS/1/x-test.x5ea.mq5 create mode 100644 package.json diff --git a/MQLTestWorkspace/BKPS/1/conditions.mq5 b/MQLTestWorkspace/BKPS/1/conditions.mq5 new file mode 100644 index 0000000..978165a --- /dev/null +++ b/MQLTestWorkspace/BKPS/1/conditions.mq5 @@ -0,0 +1,133 @@ +isXTMPeak +isXTMVale +isXTMBullish +isXTMBearish +isXTMNeutural +isXTMEndBullish +isXTMEndBearish +isXTMStartBullish +isXTMStartBearish +isXTMEndBullishByNeutural +isXTMEndBearishByNeutural +isXTMStartBullishAfterNeutural +isXTMStartBearishAfterNeutural + +isXAMAPeak +isXAMAVale +isXAMABullish +isXAMABearish +isXAMANeutural +isXAMAEndBullish +isXAMAEndBearish +isXAMAStartBullish +isXAMAStartBearish +isXAMAEndBullishByNeutural +isXAMAEndBearishByNeutural +isXAMAStartBullishAfterNeutural +isXAMAStartBearishAfterNeutural + +isXLHHHIncreased +isXLHHHDecreased +isXLHLLIncreased +isXLHLLDecreased +isXLHLowAttachedLL +isXLHHighAttachedHH +isXLHHHSameInLength +isXLHLLSameInLength +isXLHPriceOverSignal +isXLHPriceUnderSignal +isXLHPriceInSignalRange +isXLHPriceCrossedOverSignal +isXLHPriceCrossedUnderSignal + +isXTDSignalPeak +isXTDSignalVale +isXTDBullishPeak +isXTDBullishVale +isXTDBearishPeak +isXTDBearishVale +isXTDBullOverBear +isXTDBullUnderBear +isXTDSignalOverBear +isXTDSignalUnderBear +isXTDBullCrossedOverBear +isXTDBullCrossedUnderBear +isXTDSignalCrossedOverBear +isXTDSignalCrossedUnderBear + +isXFIPeak +isXFIVale +isXFICrossedOverZero +isXFIOverZero +isXFICrossedUnderZero +isXFIUnderZero + +isXTSAllSame +isXTSCurrentMin +isXTSCurrentMax +isXTSCurrentOverFarest +isXTSCurrentOverNearest +isXTSCurrentOverMediest +isXTSCurrentUnderFarest +isXTSCurrentUnderNearest +isXTSCurrentUnderMediest +isXTSCurrentCrossedOverFarest +isXTSCurrentCrossedOverNearest +isXTSCurrentCrossedOverMediest +isXTSCurrentCrossedUnderFarest +isXTSCurrentCrossedUnderNearest +isXTSCurrentCrossedUnderMediest + +isXRSIPeak +isXRSIVale +isXRSICrossedOverLongExit +isXRSICrossedOverLongEntry +isXRSICrossedUnderShortExit +isXRSICrossedUnderShortEntry + +isXOBDSwingLow +isXOBDSwingHigh + +isXCHLHSameHHs +isXCHLHSameLLs +isXCHLHSCMCHHSame +isXCHLHSCMCLLSame +isXCHLHSCLCHHSame +isXCHLHSCLCLLSame +isXCHLHMCLCHHSame +isXCHLHMCLCLLSame +isXCHLHMCOnTopOfLC +isXCHLHMCInBottomOfLC + +isXCHMASCOverMax +isXCHMASCOverMin +isXCHMASCUnderMax +isXCHMASCUnderMin +isXCHMASCCrossedOverMax +isXCHMASCCrossedUnderMax +isXCHMASCCrossedOverMin +isXCHMASCCrossedUnderMin +isXCHMASCPeak +isXCHMASCVale +isXCHMASCTrendsUp +isXCHMASCTrendsDown +isXCHMASCFastOverSlow +isXCHMASCFastUnderSlow +isXCHMASCFastCrossedOverSlow +isXCHMASCFastCrossedUnderSlow +isXCHMAMCPeak +isXCHMAMCVale +isXCHMAMCTrendsUp +isXCHMAMCTrendsDown +isXCHMAMCFastOverSlow +isXCHMAMCFastUnderSlow +isXCHMAMCFastCrossedOverSlow +isXCHMAMCFastCrossedUnderSlow +isXCHMALCPeak +isXCHMALCVale +isXCHMALCTrendsUp +isXCHMALCTrendsDown +isXCHMALCFastOverSlow +isXCHMALCFastUnderSlow +isXCHMALCFastCrossedOverSlow +isXCHMALCFastCrossedUnderSlow \ No newline at end of file diff --git a/MQLTestWorkspace/BKPS/1/x-test.x5ea copy.mq5 b/MQLTestWorkspace/BKPS/1/x-test.x5ea copy.mq5 new file mode 100644 index 0000000..971bc7b --- /dev/null +++ b/MQLTestWorkspace/BKPS/1/x-test.x5ea copy.mq5 @@ -0,0 +1,304 @@ +/////////////////////////////////////////////////////// +// +// 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.provider.class.mq5" + +// +// Inputs ... +long x5EAMagicNumber = 78692110; // Magic Number +int x5EASlippage = 10; // Slippgae +string x5EASymbols = "EURUSDb,USDCHFb,USDJPYb,XAUUSDb"; + +// +double x5EAVolume = 0.01; + +// +// Vars ... +string x5EASymbol; +ENUM_TIMEFRAMES x5EAPeriod; + +// +MqlTick x5EATick; + +// +// X5Provider ... +XSignal signal; + +// +X5ProviderDescriptor mProviderDescriptors[]; + +// +// 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 Providers ... + // if (!InitialProviders()) + // { + // return INIT_PARAMETERS_INCORRECT; + // } + + // + // Testing SymbolsTotal ... + string symbols[]; + int symbolsCount = FilterUSDSymbols( + symbols + ); + if (symbolsCount > 0) { + // + ArrayPrint(symbols); + } + + // + // 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; + } + + // + ProcessProvidersTick(); +} + +// +// Custom Functions ... + +// +// Validate Variables nd Inputs ... +bool X5EAValidateInputs() +{ + // + bool result = false; + + // + result = + // + x5EASlippage > 0 && + x5EAMagicNumber > 0 + // + ; + + // + return result; +} + +// +// Initialize Specific Providers ... +bool InitialProviders() +{ + // + 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); + + // + for (int i = 0; i < symbolsCount; i++) + { + // + // Define Structure ... + X5ProviderDescriptor iDescriptor; + + // + // Set Inputs to Default ... + iDescriptor.inputs.Default(); + + // + // Validate Inputs ... + bool isInputsValid = iDescriptor.inputs.IsValid(); + if (!isInputsValid) + { + continue; + } + + // + // Initialize Provider Class ... + iDescriptor.provider = new XSCX5Provider( + symbols[i], + PERIOD_M5 // + ); + + // + // Enable Required Signallers and Types ... + // TODO: add Support for TYPE Specifications ... + iDescriptor.provider + .SetSignalTypeState( + POSITION_TYPE_BUY, + true // + ); + iDescriptor.provider + .SetSignalTypeState( + POSITION_TYPE_SELL, + true // + ); + + // + // Enable Required Signallers ... + iDescriptor.provider + .SetSignalProviderStates(signallers, true); + + // + // Try to Initialize Provider Instance ... + bool isInitialized = iDescriptor.provider + .Init(iDescriptor.inputs); + if (!isInitialized) + { + continue; + } + + // + // Add Prepared Descriptor to Collection ... + AddRef( + iDescriptor, + mProviderDescriptors + // + ); + } + + // + // Validate Result ... + result = ArraySize(mProviderDescriptors) == symbolsCount; + + // + return result; +} + +// +// Check Providers Signals ... +void ProcessProvidersTick() +{ + // + // Here We Have to Check 4 instance of X5Provider for Signals ... + // - EURUSD/M5; + // - USDCHF/M5; + // - USDJPY/M5; + // - XAUUSD/M5; + + // + int descriptorsCount = ArraySize(mProviderDescriptors); + if (descriptorsCount <= 0) + { + return; + } + + // + int signalsCount = 0; + for (int i = 0; i < descriptorsCount; i++) + { + // + X5ProviderDescriptor iDescriptor = mProviderDescriptors[i]; + + // + bool iHasSignal = iDescriptor.HasSignal(0); + + // + if (iHasSignal) + { + // + signalsCount++; + Print("Signal: " + iDescriptor.provider.GetSymbol() + ", " + ToString(iDescriptor.provider.GetPeriod())); + } + } +} + +// \ No newline at end of file diff --git a/MQLTestWorkspace/BKPS/1/x-test.x5ea.ex5 b/MQLTestWorkspace/BKPS/1/x-test.x5ea.ex5 new file mode 100644 index 0000000000000000000000000000000000000000..103f5348f4c27c6c4cdb5198c2513c00efe874d5 GIT binary patch literal 12660 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 0 && + x5EAMagicNumber > 0 + // + ; + + // + return result; +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6348478 --- /dev/null +++ b/package.json @@ -0,0 +1,214 @@ +{ + "name": "mql5", + "version": "1.0.0", + "description": "MQL5 Workspace", + "main": "index.js", + "scripts": { + "true": "", + "aaa": "|----------|", + "aab": "| Projects |", + "aac": "|----------|", + "compile": "node compile.js", + "compileWorkspace": "npm run compile", + "compileExperts": "npm run compile **experts", + "compileIndicators": "npm run compile **indicators", + "rmExperts": "shx --silent rm ./Experts/* || npm run true", + "rmHelpers": "shx --silent rm ./Helpers/* || npm run true", + "rmClasses": "shx --silent rm ./Classes/* || npm run true", + "rmLibraries": "shx --silent rm ./Libraries/* || npm run true", + "rmProviders": "shx --silent rm ./Providers/* || npm run true", + "rmIndicators": "shx --silent rm ./Indicators/* || npm run true", + "bkpExperts": "shx --silent mkdir -p ./BKP/Main/Experts && shx --silent cp -r ./Experts/*.mq5 ./BKP/Main/Experts || npm run true", + "bkpHelpers": "shx --silent mkdir -p ./BKP/Main/Helpers && shx --silent cp -r ./Helpers/*.mq5 ./BKP/Main/Helpers || npm run true", + "bkpClasses": "shx --silent mkdir -p ./BKP/Main/Classes && shx --silent cp -r ./Classes/*.mq5 ./BKP/Main/Classes || npm run true", + "bkpLibraries": "shx --silent mkdir -p ./BKP/Main/Libraries && shx --silent cp -r ./Libraries/*.mq5 ./BKP/Main/Libraries || npm run true", + "bkpProviders": "shx --silent mkdir -p ./BKP/Main/Providers && shx --silent cp -r ./Providers/*.mq5 ./BKP/Main/Providers || npm run true", + "bkpIndicators": "shx --silent mkdir -p ./BKP/Main/Indicators && shx --silent cp -r ./Indicators/*.mq5 ./BKP/Main/Indicators || npm run true", + "cleanupWorkspace": "npm run rmExperts && npm run rmHelpers && npm run rmClasses && npm run rmLibraries && npm run rmProviders && npm run rmIndicators", + "backupWorkspace": "shx --silent rm -rf ./BKP/Main && npm run bkpExperts && npm run bkpHelpers && npm run bkpClasses && npm run bkpLibraries && npm run bkpProviders && npm run bkpIndicators", + "bba": "|----------|", + "bbb": "| XTEST |", + "bbc": "|----------|", + "xTESTCpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XTEST/Experts/*.mq5 ./Experts || npm run true", + "xTESTCpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XTEST/Helpers/*.mq5 ./Helpers || npm run true", + "xTESTCpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XTEST/Classes/*.mq5 ./Classes || npm run true", + "xTESTCpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XTEST/Providers/*.mq5 ./Providers || npm run true", + "xTESTCpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XTEST/Libraries/*.mq5 ./Libraries || npm run true", + "xTESTCpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XTEST/Indicators/*.mq5 ./Indicators || npm run true", + "xTESTUpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XTEST/Experts || npm run true", + "xTESTUpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XTEST/Helpers || npm run true", + "xTESTUpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XTEST/Classes || npm run true", + "xTESTUpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XTEST/Providers || npm run true", + "xTESTUpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XTEST/Libraries || npm run true", + "xTESTUpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XTEST/Indicators || npm run true", + "xTESTCpWorkspace": "npm run xTESTCpExperts && npm run xTESTCpProviders && npm run xTESTCpIndicators && npm run xTESTCpLibraries && npm run xTESTCpHelpers && npm run xTESTCpClasses", + "xTESTUpSourceFromWorkspace": "npm run xTESTUpSourceExperts && npm run xTESTUpSourceProviders && npm run xTESTUpSourceIndicators && npm run xTESTUpSourceLibraries && npm run xTESTUpSourceHelpers && npm run xTESTUpSourceClasses", + "xTESTPrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xTESTCpWorkspace", + "xTESTApplyFromWorkspace": "npm run backupWorkspace && npm run xTESTUpSourceFromWorkspace", + "xTESTCompile": "npm run compile XTEST", + "xTESTCompileAndPack": "npm run compile XTEST true", + "bbd": "|----------|", + "bbe": "| /XTEST |", + "bbf": "|----------|", + "aba": "|----------|", + "abb": "| XEU5 |", + "abc": "|----------|", + "xEU5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XEU5/Experts/*.mq5 ./Experts || npm run true", + "xEU5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XEU5/Helpers/*.mq5 ./Helpers || npm run true", + "xEU5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XEU5/Classes/*.mq5 ./Classes || npm run true", + "xEU5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XEU5/Providers/*.mq5 ./Providers || npm run true", + "xEU5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XEU5/Libraries/*.mq5 ./Libraries || npm run true", + "xEU5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XEU5/Indicators/*.mq5 ./Indicators || npm run true", + "xEU5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XEU5/Experts || npm run true", + "xEU5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XEU5/Helpers || npm run true", + "xEU5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XEU5/Classes || npm run true", + "xEU5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XEU5/Providers || npm run true", + "xEU5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XEU5/Libraries || npm run true", + "xEU5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XEU5/Indicators || npm run true", + "xEU5CpWorkspace": "npm run xEU5CpExperts && npm run xEU5CpProviders && npm run xEU5CpIndicators && npm run xEU5CpLibraries && npm run xEU5CpHelpers && npm run xEU5CpClasses", + "xEU5UpSourceFromWorkspace": "npm run xEU5UpSourceExperts && npm run xEU5UpSourceProviders && npm run xEU5UpSourceIndicators && npm run xEU5UpSourceLibraries && npm run xEU5UpSourceHelpers && npm run xEU5UpSourceClasses", + "xEU5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xEU5CpWorkspace", + "xEU5ApplyFromWorkspace": "npm run backupWorkspace && npm run xEU5UpSourceFromWorkspace", + "xEU5Compile": "npm run compile XEU5", + "xEU5CompileAndPack": "npm run compile XEU5 true", + "abd": "|----------|", + "abe": "| /XEU5 |", + "abf": "|----------|", + "aca": "|----------|", + "acb": "| XAU5 |", + "acc": "|----------|", + "xAU5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XAU5/Experts/*.mq5 ./Experts || npm run true", + "xAU5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XAU5/Helpers/*.mq5 ./Helpers || npm run true", + "xAU5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XAU5/Classes/*.mq5 ./Classes || npm run true", + "xAU5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XAU5/Providers/*.mq5 ./Providers || npm run true", + "xAU5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XAU5/Libraries/*.mq5 ./Libraries || npm run true", + "xAU5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XAU5/Indicators/*.mq5 ./Indicators || npm run true", + "xAU5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XAU5/Experts || npm run true", + "xAU5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XAU5/Helpers || npm run true", + "xAU5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XAU5/Classes || npm run true", + "xAU5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XAU5/Providers || npm run true", + "xAU5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XAU5/Libraries || npm run true", + "xAU5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XAU5/Indicators || npm run true", + "xAU5CpWorkspace": "npm run xAU5CpExperts && npm run xAU5CpProviders && npm run xAU5CpIndicators && npm run xAU5CpLibraries && npm run xAU5CpHelpers && npm run xAU5CpClasses", + "xAU5UpSourceFromWorkspace": "npm run xAU5UpSourceExperts && npm run xAU5UpSourceProviders && npm run xAU5UpSourceIndicators && npm run xAU5UpSourceLibraries && npm run xAU5UpSourceHelpers && npm run xAU5UpSourceClasses", + "xAU5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xAU5CpWorkspace", + "xAU5ApplyFromWorkspace": "npm run backupWorkspace && npm run xAU5UpSourceFromWorkspace", + "xAU5Compile": "npm run compile XAU5", + "xAU5CompileAndPack": "npm run compile XAU5 true", + "acd": "|----------|", + "ace": "| /XAU5 |", + "acf": "|----------|", + "bda": "|-----------|", + "bdb": "| XUSCHF5 |", + "bdc": "|-----------|", + "xUSCHF5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XUSCHF5/Experts/*.mq5 ./Experts || npm run true", + "xUSCHF5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XUSCHF5/Helpers/*.mq5 ./Helpers || npm run true", + "xUSCHF5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XUSCHF5/Classes/*.mq5 ./Classes || npm run true", + "xUSCHF5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XUSCHF5/Providers/*.mq5 ./Providers || npm run true", + "xUSCHF5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XUSCHF5/Libraries/*.mq5 ./Libraries || npm run true", + "xUSCHF5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XUSCHF5/Indicators/*.mq5 ./Indicators || npm run true", + "xUSCHF5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XUSCHF5/Experts || npm run true", + "xUSCHF5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XUSCHF5/Helpers || npm run true", + "xUSCHF5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XUSCHF5/Classes || npm run true", + "xUSCHF5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XUSCHF5/Providers || npm run true", + "xUSCHF5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XUSCHF5/Libraries || npm run true", + "xUSCHF5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XUSCHF5/Indicators || npm run true", + "xUSCHF5CpWorkspace": "npm run xUSCHF5CpExperts && npm run xUSCHF5CpProviders && npm run xUSCHF5CpIndicators && npm run xUSCHF5CpLibraries && npm run xUSCHF5CpHelpers && npm run xUSCHF5CpClasses", + "xUSCHF5UpSourceFromWorkspace": "npm run xUSCHF5UpSourceExperts && npm run xUSCHF5UpSourceProviders && npm run xUSCHF5UpSourceIndicators && npm run xUSCHF5UpSourceLibraries && npm run xUSCHF5UpSourceHelpers && npm run xUSCHF5UpSourceClasses", + "xUSCHF5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xUSCHF5CpWorkspace", + "xUSCHF5ApplyFromWorkspace": "npm run backupWorkspace && npm run xUSCHF5UpSourceFromWorkspace", + "xUSCHF5Compile": "npm run compile XUSCHF5", + "xUSCHF5CompileAndPack": "npm run compile XUSCHF5 true", + "bdd": "|-----------|", + "bde": "| /XUSCHF5 |", + "bdf": "|-----------|", + "bwa": "|-----------|", + "bwb": "| XBTUS5 |", + "bwc": "|-----------|", + "xBTUS5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XBTUS5/Experts/*.mq5 ./Experts || npm run true", + "xBTUS5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XBTUS5/Helpers/*.mq5 ./Helpers || npm run true", + "xBTUS5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XBTUS5/Classes/*.mq5 ./Classes || npm run true", + "xBTUS5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XBTUS5/Providers/*.mq5 ./Providers || npm run true", + "xBTUS5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XBTUS5/Libraries/*.mq5 ./Libraries || npm run true", + "xBTUS5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XBTUS5/Indicators/*.mq5 ./Indicators || npm run true", + "xBTUS5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XBTUS5/Experts || npm run true", + "xBTUS5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XBTUS5/Helpers || npm run true", + "xBTUS5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XBTUS5/Classes || npm run true", + "xBTUS5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XBTUS5/Providers || npm run true", + "xBTUS5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XBTUS5/Libraries || npm run true", + "xBTUS5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XBTUS5/Indicators || npm run true", + "xBTUS5CpWorkspace": "npm run xBTUS5CpExperts && npm run xBTUS5CpProviders && npm run xBTUS5CpIndicators && npm run xBTUS5CpLibraries && npm run xBTUS5CpHelpers && npm run xBTUS5CpClasses", + "xBTUS5UpSourceFromWorkspace": "npm run xBTUS5UpSourceExperts && npm run xBTUS5UpSourceProviders && npm run xBTUS5UpSourceIndicators && npm run xBTUS5UpSourceLibraries && npm run xBTUS5UpSourceHelpers && npm run xBTUS5UpSourceClasses", + "xBTUS5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xBTUS5CpWorkspace", + "xBTUS5ApplyFromWorkspace": "npm run backupWorkspace && npm run xBTUS5UpSourceFromWorkspace", + "xBTUS5Compile": "npm run compile XBTUS5", + "xBTUS5CompileAndPack": "npm run compile XBTUS5 true", + "bwd": "|-----------|", + "bwe": "| /XBTUS5 |", + "bwf": "|-----------|", + "ada": "|-----------|", + "adb": "| XUSPY5 |", + "adc": "|-----------|", + "xUSPY5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XUSPY5/Experts/*.mq5 ./Experts || npm run true", + "xUSPY5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XUSPY5/Helpers/*.mq5 ./Helpers || npm run true", + "xUSPY5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XUSPY5/Classes/*.mq5 ./Classes || npm run true", + "xUSPY5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XUSPY5/Providers/*.mq5 ./Providers || npm run true", + "xUSPY5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XUSPY5/Libraries/*.mq5 ./Libraries || npm run true", + "xUSPY5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XUSPY5/Indicators/*.mq5 ./Indicators || npm run true", + "xUSPY5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XUSPY5/Experts || npm run true", + "xUSPY5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XUSPY5/Helpers || npm run true", + "xUSPY5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XUSPY5/Classes || npm run true", + "xUSPY5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XUSPY5/Providers || npm run true", + "xUSPY5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XUSPY5/Libraries || npm run true", + "xUSPY5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XUSPY5/Indicators || npm run true", + "xUSPY5CpWorkspace": "npm run xUSPY5CpExperts && npm run xUSPY5CpProviders && npm run xUSPY5CpIndicators && npm run xUSPY5CpLibraries && npm run xUSPY5CpHelpers && npm run xUSPY5CpClasses", + "xUSPY5UpSourceFromWorkspace": "npm run xUSPY5UpSourceExperts && npm run xUSPY5UpSourceProviders && npm run xUSPY5UpSourceIndicators && npm run xUSPY5UpSourceLibraries && npm run xUSPY5UpSourceHelpers && npm run xUSPY5UpSourceClasses", + "xUSPY5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xUSPY5CpWorkspace", + "xUSPY5ApplyFromWorkspace": "npm run backupWorkspace && npm run xUSPY5UpSourceFromWorkspace", + "xUSPY5Compile": "npm run compile XUSPY5", + "xUSPY5CompileAndPack": "npm run compile XUSPY5 true", + "add": "|-----------|", + "ade": "| /XUSPY5 |", + "adf": "|-----------|", + "aea": "|-----------|", + "aeb": "| XGPUS5 |", + "aec": "|-----------|", + "xGPUS5CpExperts": "shx --silent mkdir -p ./Experts && shx --silent cp -r ./Projects/XGPUS5/Experts/*.mq5 ./Experts || npm run true", + "xGPUS5CpHelpers": "shx --silent mkdir -p ./Helpers && shx --silent cp -r ./Projects/XGPUS5/Helpers/*.mq5 ./Helpers || npm run true", + "xGPUS5CpClasses": "shx --silent mkdir -p ./Classes && shx --silent cp -r ./Projects/XGPUS5/Classes/*.mq5 ./Classes || npm run true", + "xGPUS5CpProviders": "shx --silent mkdir -p ./Providers && shx --silent cp -r ./Projects/XGPUS5/Providers/*.mq5 ./Providers || npm run true", + "xGPUS5CpLibraries": "shx --silent mkdir -p ./Libraries && shx --silent cp -r ./Projects/XGPUS5/Libraries/*.mq5 ./Libraries || npm run true", + "xGPUS5CpIndicators": "shx --silent mkdir -p ./Indicators && shx --silent cp -r ./Projects/XGPUS5/Indicators/*.mq5 ./Indicators || npm run true", + "xGPUS5UpSourceExperts": "shx --silent cp -r ./Experts/*.mq5 ./Projects/XGPUS5/Experts || npm run true", + "xGPUS5UpSourceHelpers": "shx --silent cp -r ./Helpers/*.mq5 ./Projects/XGPUS5/Helpers || npm run true", + "xGPUS5UpSourceClasses": "shx --silent cp -r ./Classes/*.mq5 ./Projects/XGPUS5/Classes || npm run true", + "xGPUS5UpSourceProviders": "shx --silent cp -r ./Providers/*.mq5 ./Projects/XGPUS5/Providers || npm run true", + "xGPUS5UpSourceLibraries": "shx --silent cp -r ./Libraries/*.mq5 ./Projects/XGPUS5/Libraries || npm run true", + "xGPUS5UpSourceIndicators": "shx --silent cp -r ./Indicators/*.mq5 ./Projects/XGPUS5/Indicators || npm run true", + "xGPUS5CpWorkspace": "npm run xGPUS5CpExperts && npm run xGPUS5CpProviders && npm run xGPUS5CpIndicators && npm run xGPUS5CpLibraries && npm run xGPUS5CpHelpers && npm run xGPUS5CpClasses", + "xGPUS5UpSourceFromWorkspace": "npm run xGPUS5UpSourceExperts && npm run xGPUS5UpSourceProviders && npm run xGPUS5UpSourceIndicators && npm run xGPUS5UpSourceLibraries && npm run xGPUS5UpSourceHelpers && npm run xGPUS5UpSourceClasses", + "xGPUS5PrepareWorkspace": "npm run backupWorkspace && npm run cleanupWorkspace && npm run xGPUS5CpWorkspace", + "xGPUS5ApplyFromWorkspace": "npm run backupWorkspace && npm run xGPUS5UpSourceFromWorkspace", + "xGPU5Compile": "npm run compile XGPU5", + "xGPU5CompileAndPack": "npm run compile XGPU5 true", + "aed": "|-----------|", + "aee": "| /XGPUS5 |", + "aef": "|-----------|", + "aad": "|-----------|", + "aae": "| /Projects |", + "aaf": "|-----------|" + }, + "repository": { + "type": "git", + "url": "https://pm.saherelmhub.ir/source/MQL5Data.git" + }, + "keywords": [ + "MQL5", + "ROBOT" + ], + "author": "Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)", + "license": "ISC", + "devDependencies": { + "shx": "^0.3.4" + } +}