From 238941960a19d467c4010d9a67476109b1324ee3 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Fri, 21 Jun 2024 16:52:05 +0330 Subject: [PATCH] try to remove matd and put XMC instead it for controllingbehaviour ... --- Classes/x-saherelm.x121.setup.class.mq5 | 153 +++-- .../BKP/Old}/x-saherelm.xmatd.helper.mq5 | 0 .../BKP/Old}/x-saherelm.xpv.cycle.mq5 | 0 .../BKP/Old}/x-saherelm.xpv.length.mq5 | 0 .../BKP/Source Codes}/vp-v6.mq5 | Bin Helpers/x-saherelm.xmc.helper.mq5 | 624 +++++++++++++++++- Indicators/x-saherelm.xmc.mq5 | 117 ++-- 7 files changed, 768 insertions(+), 126 deletions(-) rename {Helpers => Documents/BKP/Old}/x-saherelm.xmatd.helper.mq5 (100%) rename {Indicators => Documents/BKP/Old}/x-saherelm.xpv.cycle.mq5 (100%) rename {Indicators => Documents/BKP/Old}/x-saherelm.xpv.length.mq5 (100%) rename {Indicators => Documents/BKP/Source Codes}/vp-v6.mq5 (100%) diff --git a/Classes/x-saherelm.x121.setup.class.mq5 b/Classes/x-saherelm.x121.setup.class.mq5 index 455540eb..deafe141 100644 --- a/Classes/x-saherelm.x121.setup.class.mq5 +++ b/Classes/x-saherelm.x121.setup.class.mq5 @@ -28,6 +28,7 @@ #include "../Classes/x-saherelm.xalert.class.mq5" // +#include "../Helpers/x-saherelm.xmc.helper.mq5" #include "../Helpers/x-saherelm.xpv.helper.mq5" #include "../Helpers/x-saherelm.xtd.helper.mq5" #include "../Helpers/x-saherelm.xhk.helper.mq5" @@ -40,7 +41,6 @@ #include "../Helpers/x-saherelm.xasct.helper.mq5" #include "../Helpers/x-saherelm.xsslc.helper.mq5" #include "../Helpers/x-saherelm.xhull.helper.mq5" -#include "../Helpers/x-saherelm.xmatd.helper.mq5" #include "../Helpers/x-saherelm.xadxtd.helper.mq5" // @@ -204,6 +204,7 @@ struct X121SetupInputs // // Helpers Inputs ... + XMCInputs mcInputs; // XMC Inputs XPVInputs pvInputs; // XPV Inputs XTDInputs tdInputs; // XTD Inputs XHKInputs hkInputs; // XHK Inputs @@ -213,7 +214,6 @@ struct X121SetupInputs XMRBInputs mrbInputs; // XMRB Inputs XOSCInputs oscInputs; // XOSC Inputs XVLMInputs vlmInputs; // XVLM Inputs - XMATDInputs matdInputs; // XMATD Inputs XASCTInputs asctInputs; // XASCT Inputs XSSLCInputs sslcInputs; // XSSLC Inputs XHULLInputs hullInputs; // XHULL Inputs @@ -241,6 +241,7 @@ struct X121SetupInputs bool Init( string _symbol, // Symbol ENUM_TIMEFRAMES _period, // Time Frame + XMCInputs &_mcInputs, // XMC Inputs XPVInputs &_pvInputs, // XPV Inputs XTDInputs &_tdInputs, // XTD Inputs XHKInputs &_hkInputs, // XHK Inputs @@ -250,7 +251,6 @@ struct X121SetupInputs XMRBInputs &_mrbInputs, // XMRB Inputs XOSCInputs &_oscInputs, // XOSC Inputs XVLMInputs &_vlmInputs, // XVLM Inputs - XMATDInputs &_matdInputs, // XMATD Inputs XASCTInputs &_asctInputs, // XASCT Inputs XSSLCInputs &_sslcInputs, // XSSLC Inputs XHULLInputs &_hullInputs, // XHULL Inputs @@ -263,6 +263,7 @@ struct X121SetupInputs // // Helpers Inputs ... + this.mcInputs = _mcInputs; this.pvInputs = _pvInputs; this.tdInputs = _tdInputs; this.hkInputs = _hkInputs; @@ -272,7 +273,6 @@ struct X121SetupInputs this.mrbInputs = _mrbInputs; this.oscInputs = _oscInputs; this.vlmInputs = _vlmInputs; - this.matdInputs = _matdInputs; this.asctInputs = _asctInputs; this.sslcInputs = _sslcInputs; this.hullInputs = _hullInputs; @@ -297,6 +297,7 @@ struct X121SetupInputs period = NULL; // + mcInputs.Clean(); pvInputs.Clean(); tdInputs.Clean(); hkInputs.Clean(); @@ -306,7 +307,6 @@ struct X121SetupInputs mrbInputs.Clean(); oscInputs.Clean(); vlmInputs.Clean(); - matdInputs.Clean(); asctInputs.Clean(); sslcInputs.Clean(); hullInputs.Clean(); @@ -318,6 +318,7 @@ struct X121SetupInputs void Default() { // + mcInputs.Default(); pvInputs.Default(); tdInputs.Default(); hkInputs.Default(); @@ -327,7 +328,6 @@ struct X121SetupInputs mrbInputs.Default(); oscInputs.Default(); vlmInputs.Default(); - matdInputs.Default(); asctInputs.Default(); sslcInputs.Default(); hullInputs.Default(); @@ -417,7 +417,7 @@ struct X121SetupInputs } // - result = matdInputs.IsValid(); + result = mcInputs.IsValid(); if (!result) { return result; @@ -468,6 +468,7 @@ struct X121SetupConditions // // Conditions ... + XMCConditions mcConditions; XPVConditions pvConditions; XTDConditions tdConditions; XHKConditions hkConditions; @@ -476,7 +477,6 @@ struct X121SetupConditions XSTRConditions strConditions; XMRBConditions mrbConditions; XVLMConditions vlmConditions; - XMATDConditions matdConditions; XASCTConditions asctConditions; XSSLCConditions sslcConditions; XHULLConditions hullConditions; @@ -508,6 +508,7 @@ struct X121SetupConditions Clean(macdSignal); // + mcConditions.Clean(); tdConditions.Clean(); hkConditions.Clean(); cheConditions.Clean(); @@ -515,7 +516,6 @@ struct X121SetupConditions strConditions.Clean(); mrbConditions.Clean(); vlmConditions.Clean(); - matdConditions.Clean(); asctConditions.Clean(); sslcConditions.Clean(); hullConditions.Clean(); @@ -537,7 +537,7 @@ struct X121SetupConditions double tempBearishScore = 0; // - matdConditions.GenerateScore( + mcConditions.GenerateScore( tempBullishScore, tempBearishScore // ); @@ -681,6 +681,7 @@ struct X121SetupConditions // string pvSummary = pvConditions.GenerateSummary(false, true, false, ignoreFalseConditions); + string mcSummary = mcConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string tdSummary = tdConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string hkSummary = hkConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string strSummary = strConditions.GenerateSummary(false, true, false, ignoreFalseConditions); @@ -688,7 +689,6 @@ struct X121SetupConditions string ichSummary = ichConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string mrbSummary = mrbConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string vlmSummary = vlmConditions.GenerateSummary(false, true, false, ignoreFalseConditions); - string matdSummary = matdConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string asctSummary = asctConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string sslcSummary = sslcConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string hullSummary = hullConditions.GenerateSummary(false, true, false, ignoreFalseConditions); @@ -698,6 +698,7 @@ struct X121SetupConditions string conditionsStr = // pvSummary + separator + + mcSummary + separator + tdSummary + separator + hkSummary + separator + ichSummary + separator + @@ -708,7 +709,6 @@ struct X121SetupConditions asctSummary + separator + sslcSummary + separator + hullSummary + separator + - matdSummary + separator + adxtdSummary + separator + "" // @@ -888,10 +888,10 @@ struct X121SignalGenerator bool long1 = // // Starting Conditions ... - conditions.matdConditions.isSwitchedToBullish && + conditions.mcConditions.isSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isSARBullish && + conditions.mcConditions.isSARBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -917,10 +917,10 @@ struct X121SignalGenerator bool long2 = // // Starting Conditions ... - conditions.matdConditions.isSARSwitchedToBullish && + conditions.mcConditions.isSARSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -949,7 +949,7 @@ struct X121SignalGenerator conditions.adxtdConditions.isStrongSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.strConditions.isTrendBullish && conditions.cheConditions.isStrongBullish && conditions.tdConditions.isBullish && @@ -976,7 +976,7 @@ struct X121SignalGenerator conditions.strConditions.isTrendSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.cheConditions.isStrongBullish && @@ -1004,7 +1004,7 @@ struct X121SignalGenerator conditions.cheConditions.isStrongSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1032,7 +1032,7 @@ struct X121SignalGenerator conditions.tdConditions.isSwitchedToBullish && // // Verifications ... - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1062,7 +1062,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1092,7 +1092,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1122,7 +1122,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1151,7 +1151,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1180,7 +1180,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1208,7 +1208,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1236,7 +1236,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1264,7 +1264,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1292,7 +1292,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1320,7 +1320,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1349,7 +1349,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBullish && - conditions.matdConditions.isBullish && + conditions.mcConditions.isBullish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBullish && conditions.strConditions.isTrendBullish && @@ -1485,10 +1485,10 @@ struct X121SignalGenerator bool short1 = // // Starting Conditions ... - conditions.matdConditions.isSwitchedToBearish && + conditions.mcConditions.isSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isSARBearish && + conditions.mcConditions.isSARBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1514,10 +1514,10 @@ struct X121SignalGenerator bool short2 = // // Starting Conditions ... - conditions.matdConditions.isSARSwitchedToBearish && + conditions.mcConditions.isSARSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1546,7 +1546,7 @@ struct X121SignalGenerator conditions.adxtdConditions.isStrongSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.strConditions.isTrendBearish && conditions.cheConditions.isStrongBearish && conditions.tdConditions.isBearish && @@ -1573,7 +1573,7 @@ struct X121SignalGenerator conditions.strConditions.isTrendSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.cheConditions.isStrongBearish && @@ -1601,7 +1601,7 @@ struct X121SignalGenerator conditions.cheConditions.isStrongSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1629,7 +1629,7 @@ struct X121SignalGenerator conditions.tdConditions.isSwitchedToBearish && // // Verifications ... - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1659,7 +1659,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1689,7 +1689,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1719,7 +1719,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1748,7 +1748,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1777,7 +1777,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1805,7 +1805,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1833,7 +1833,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1861,7 +1861,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1889,7 +1889,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1917,7 +1917,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -1946,7 +1946,7 @@ struct X121SignalGenerator // // Verifications ... conditions.tdConditions.isBearish && - conditions.matdConditions.isBearish && + conditions.mcConditions.isBearish && conditions.adxtdConditions.isStrong && conditions.adxtdConditions.isBearish && conditions.strConditions.isTrendBearish && @@ -2251,23 +2251,23 @@ struct X121SignalGenerator // XMATD ... bool isMATDPassed = // - ((conditions.matdConditions.isBullish || - conditions.matdConditions.isSwitchedToBullish) + ((conditions.mcConditions.isBullish || + conditions.mcConditions.isSwitchedToBullish) // || // - ((conditions.matdConditions.isFastOverSlow || - conditions.matdConditions.isFastCrossedOverSlow) + ((conditions.mcConditions.isFastOverVerifier || + conditions.mcConditions.isFastCrossedOverVerifier) // && // - (conditions.matdConditions.isMidOverSlow || - conditions.matdConditions.isMidCrossedOverSlow))) + (conditions.mcConditions.isSlowOverVerifier || + conditions.mcConditions.isSlowCrossedOverVerifier))) // || // - (conditions.matdConditions.isSARBullish || - conditions.matdConditions.isSARSwitchedToBullish) + (conditions.mcConditions.isSARBullish || + conditions.mcConditions.isSARSwitchedToBullish) // ; if (isMATDPassed) @@ -2507,23 +2507,23 @@ struct X121SignalGenerator // XMATD ... bool isMATDPassed = // - ((conditions.matdConditions.isBearish || - conditions.matdConditions.isSwitchedToBearish) + ((conditions.mcConditions.isBearish || + conditions.mcConditions.isSwitchedToBearish) // || // - ((conditions.matdConditions.isFastUnderSlow || - conditions.matdConditions.isFastCrossedUnderSlow) + ((conditions.mcConditions.isFastUnderVerifier || + conditions.mcConditions.isFastCrossedUnderVerifier) // && // - (conditions.matdConditions.isMidUnderSlow || - conditions.matdConditions.isMidCrossedUnderSlow))) + (conditions.mcConditions.isSlowUnderVerifier || + conditions.mcConditions.isSlowCrossedUnderVerifier))) // || // - (conditions.matdConditions.isSARBearish || - conditions.matdConditions.isSARSwitchedToBearish) + (conditions.mcConditions.isSARBearish || + conditions.mcConditions.isSARSwitchedToBearish) // ; if (isMATDPassed) @@ -3311,6 +3311,7 @@ class XSCX121Setup : public XSCBaseAlert public: // // Props ... + XSCXMCHelper *mcHelper; XSCXPVHelper *pvHelper; XSCXTDHelper *tdHelper; XSCXHKHelper *hkHelper; @@ -3320,7 +3321,6 @@ public: XSCXMRBHelper *mrbHelper; XSCXOSCHelper *oscHelper; XSCXVLMHelper *vlmHelper; - XSCXMATDHelper *matdHelper; XSCXASCTHelper *asctHelper; XSCXSSLCHelper *sslcHelper; XSCXHULLHelper *hullHelper; @@ -3335,6 +3335,7 @@ public: void ~XSCX121Setup() { // + delete mcHelper; delete pvHelper; delete tdHelper; delete hkHelper; @@ -3344,7 +3345,6 @@ public: delete mrbHelper; delete oscHelper; delete vlmHelper; - delete matdHelper; delete asctHelper; delete sslcHelper; delete hullHelper; @@ -3508,13 +3508,12 @@ public: } // - // XMATD ... - matdHelper = new XSCXMATDHelper( + // XMC ... + mcHelper = new XSCXMCHelper(); + result = mcHelper.Init( inputs.symbol, - inputs.period // - ); - result = matdHelper.Init( - inputs.matdInputs // + inputs.period, + inputs.mcInputs // ); if (!result) { @@ -3565,7 +3564,7 @@ public: adxtdHelper = new XSCXADXTDHelper(); result = adxtdHelper.Init( inputs.symbol, - inputs.period, + inputs.period, inputs.adxtdInputs // ); if (!result) @@ -3687,8 +3686,8 @@ public: } // - result = matdHelper.GetConditions( - conditions.matdConditions, + result = mcHelper.GetConditions( + conditions.mcConditions, barIndex, loopback // ); diff --git a/Helpers/x-saherelm.xmatd.helper.mq5 b/Documents/BKP/Old/x-saherelm.xmatd.helper.mq5 similarity index 100% rename from Helpers/x-saherelm.xmatd.helper.mq5 rename to Documents/BKP/Old/x-saherelm.xmatd.helper.mq5 diff --git a/Indicators/x-saherelm.xpv.cycle.mq5 b/Documents/BKP/Old/x-saherelm.xpv.cycle.mq5 similarity index 100% rename from Indicators/x-saherelm.xpv.cycle.mq5 rename to Documents/BKP/Old/x-saherelm.xpv.cycle.mq5 diff --git a/Indicators/x-saherelm.xpv.length.mq5 b/Documents/BKP/Old/x-saherelm.xpv.length.mq5 similarity index 100% rename from Indicators/x-saherelm.xpv.length.mq5 rename to Documents/BKP/Old/x-saherelm.xpv.length.mq5 diff --git a/Indicators/vp-v6.mq5 b/Documents/BKP/Source Codes/vp-v6.mq5 similarity index 100% rename from Indicators/vp-v6.mq5 rename to Documents/BKP/Source Codes/vp-v6.mq5 diff --git a/Helpers/x-saherelm.xmc.helper.mq5 b/Helpers/x-saherelm.xmc.helper.mq5 index af386a3e..4405e127 100644 --- a/Helpers/x-saherelm.xmc.helper.mq5 +++ b/Helpers/x-saherelm.xmc.helper.mq5 @@ -29,9 +29,10 @@ // enum ENUM_XMC_BUFFERS { - X_MC_FAST_LINE = 0, - X_MC_SLOW_LINE = 1, - X_MC_VERIFIER_LINE = 2, + XMC_FAST_LINE = 0, + XMC_SLOW_LINE = 1, + XMC_VERIFIER_LINE = 2, + XMC_SAR_LINE = 3, }; // @@ -65,11 +66,16 @@ struct XMCInputs ENUM_MA_METHOD verifierMethod; // Method ENUM_APPLIED_PRICE verifierAppliedTo; // Applied To + // + double step; // Sar Step + double maximum; // Sar Maximum + // // Presentation ... bool showFastMa; // Show Fast bool showSlowMa; // Show Slow bool showVerifierMa; // Show Verifier + bool showSar; // Show Sar // // Constructor(s) ... @@ -105,6 +111,11 @@ struct XMCInputs verifierAppliedTo = PRICE_CLOSE; // + step = 0; + maximum = 0; + + // + showSar = false; showFastMa = false; showSlowMa = false; showVerifierMa = false; @@ -115,13 +126,13 @@ struct XMCInputs void Default() { // - fastLength = 9; + fastLength = 21; fastShift = 0; fastMethod = MODE_EMA; fastAppliedTo = PRICE_CLOSE; // - slowLength = 18; + slowLength = 50; slowShift = 0; slowMethod = MODE_EMA; slowAppliedTo = PRICE_CLOSE; @@ -133,6 +144,11 @@ struct XMCInputs verifierAppliedTo = PRICE_CLOSE; // + step = 0.02; + maximum = 0.2; + + // + showSar = true; showFastMa = true; showSlowMa = true; showVerifierMa = true; @@ -150,7 +166,10 @@ struct XMCInputs // fastLength > 1 && slowLength > fastLength && - verifierLength > slowLength + verifierLength > slowLength && + // + step > 0 && + maximum > step // ; @@ -174,6 +193,337 @@ struct XMCInputs } }; +// +// Define Conditions ... +struct XMCConditions +{ + // + // Common ... + string symbol; + ENUM_TIMEFRAMES period; + datetime time; + + // + // Buffers ... + double fast[]; + double slow[]; + double verifier[]; + + // + double psar[]; + + // + // Conditions ... + + // + // Trend ... + bool isBullish; + bool isBearish; + bool isSwitchedToBullish; + bool isSwitchedToBearish; + + // + // Fast Slow ... + bool isFastOverSlow; + bool isFastUnderSlow; + bool isFastCrossedOverSlow; + bool isFastCrossedUnderSlow; + + // + // Fast Verifier ... + bool isFastOverVerifier; + bool isFastUnderVerifier; + bool isFastCrossedOverVerifier; + bool isFastCrossedUnderVerifier; + + // + // Slow Verifier ... + bool isSlowOverVerifier; + bool isSlowUnderVerifier; + bool isSlowCrossedOverVerifier; + bool isSlowCrossedUnderVerifier; + + // + bool isSARBullish; + bool isSARBearish; + bool isSARSwitchedToBullish; + bool isSARSwitchedToBearish; + + // + void Clean() + { + // + Clean(fast); + Clean(slow); + Clean(verifier); + + // + ArraySetAsSeries(fast, true); + ArraySetAsSeries(slow, true); + ArraySetAsSeries(verifier, true); + + // + // Trend ... + isBullish = false; + isBearish = false; + isSwitchedToBullish = false; + isSwitchedToBearish = false; + + // + // Fast Slow ... + isFastOverSlow = false; + isFastUnderSlow = false; + isFastCrossedOverSlow = false; + isFastCrossedUnderSlow = false; + + // + // Fast Verifier ... + isFastOverVerifier = false; + isFastUnderVerifier = false; + isFastCrossedOverVerifier = false; + isFastCrossedUnderVerifier = false; + + // + // Slow Verifier ... + isSlowOverVerifier = false; + isSlowUnderVerifier = false; + isSlowCrossedOverVerifier = false; + isSlowCrossedUnderVerifier = false; + + // + isSARBullish = false; + isSARBearish = false; + isSARSwitchedToBullish = false; + isSARSwitchedToBearish = false; + } + + // + void GenerateScore( + double &bullishScore, + double &bearishScore // + ) + { + // + bullishScore = 0; + bearishScore = 0; + + // + // Trend ... + + // + if (isBullish) + { + bullishScore++; + } + if (isSwitchedToBullish) + { + bullishScore++; + } + + // + if (isBearish) + { + bearishScore++; + } + if (isSwitchedToBearish) + { + bearishScore++; + } + + // + // Fast Slow ... + + // + if (isFastOverSlow) + { + bullishScore++; + } + if (isFastCrossedOverSlow) + { + bullishScore++; + } + + // + if (isFastUnderSlow) + { + bearishScore++; + } + if (isFastCrossedUnderSlow) + { + bearishScore++; + } + + // + // Fast Verifier ... + + // + if (isFastOverVerifier) + { + bullishScore++; + } + if (isFastCrossedOverVerifier) + { + bullishScore++; + } + + // + if (isFastUnderVerifier) + { + bearishScore++; + } + if (isFastCrossedUnderVerifier) + { + bearishScore++; + } + + // + // Slow Verifier ... + + // + if (isSlowOverVerifier) + { + bullishScore++; + } + if (isSlowCrossedOverVerifier) + { + bullishScore++; + } + + // + if (isSlowUnderVerifier) + { + bearishScore++; + } + if (isSlowCrossedUnderVerifier) + { + bearishScore++; + } + + // + if (isSARBullish) + { + bullishScore++; + } + if (isSARSwitchedToBullish) + { + bullishScore++; + } + + // + if (isSARBearish) + { + bearishScore++; + } + if (isSARSwitchedToBearish) + { + bearishScore++; + } + } + + // + string GenerateSummary( + bool onlyCommons = false, + bool onlyConditions = false, + bool includeScores = true, + bool ignoreFalseConditions = true, + string separator = "\n" // + ) + { + // + string result = NULL; + + // + double bullishScore = 0; + double bearishScore = 0; + GenerateScore( + bullishScore, + bearishScore // + ); + + // + string scoresStr = + // + "Scores: " + separator + + "---------------" + separator + + "Bullish: " + ToString(bullishScore) + separator + + "Bearish: " + ToString(bearishScore) + separator + + "" + // + ; + + // + string commonStr = GenerateSpecifiedCommonSummary( + this, + separator, + includeScores // + ); + + // + string conditionsStr = + // + // Trend ... + ToString("isBullish", isBullish, ignoreFalseConditions, separator) + + ToString("isBearish", isBearish, ignoreFalseConditions, separator) + + ToString("isSwitchedToBullish", isSwitchedToBullish, ignoreFalseConditions, separator) + + ToString("isSwitchedToBearish", isSwitchedToBearish, ignoreFalseConditions, separator) + + // + // Fast Slow ... + ToString("isFastOverSlow", isFastOverSlow, ignoreFalseConditions, separator) + + ToString("isFastUnderSlow", isFastUnderSlow, ignoreFalseConditions, separator) + + ToString("isFastCrossedOverSlow", isFastCrossedOverSlow, ignoreFalseConditions, separator) + + ToString("isFastCrossedUnderSlow", isFastCrossedUnderSlow, ignoreFalseConditions, separator) + + // + // Fast Verifier ... + ToString("isFastOverVerifier", isFastOverVerifier, ignoreFalseConditions, separator) + + ToString("isFastUnderVerifier", isFastUnderVerifier, ignoreFalseConditions, separator) + + ToString("isFastCrossedOverVerifier", isFastCrossedOverVerifier, ignoreFalseConditions, separator) + + ToString("isFastCrossedUnderVerifier", isFastCrossedUnderVerifier, ignoreFalseConditions, separator) + + // + // Slow Verifier ... + ToString("isSlowOverVerifier", isSlowOverVerifier, ignoreFalseConditions, separator) + + ToString("isSlowUnderVerifier", isSlowUnderVerifier, ignoreFalseConditions, separator) + + ToString("isSlowCrossedOverVerifier", isSlowCrossedOverVerifier, ignoreFalseConditions, separator) + + ToString("isSlowCrossedUnderVerifier", isSlowCrossedUnderVerifier, ignoreFalseConditions, separator) + + // + // Psar ... + ToString("isSARBullish", isSARBullish, ignoreFalseConditions, separator) + + ToString("isSARBearish", isSARBearish, ignoreFalseConditions, separator) + + ToString("isSARSwitchedToBullish", isSARSwitchedToBullish, ignoreFalseConditions, separator) + + ToString("isSARSwitchedToBearish", isSARSwitchedToBearish, ignoreFalseConditions, separator) + + // + "" + // + ; + + // + result = + // + "[" + GetTag() + "]" + separator + + (onlyConditions + ? "" + : commonStr) + + (!includeScores + ? "" + : scoresStr) + + " " + separator + + (onlyCommons + ? "" + : conditionsStr) + + "" + // + ; + + // + return result; + } + + // + string GetTag() + { + return "XMATD"; + } +}; + // // Class ... class XSCXMCHelper : public XSCBaseHelper @@ -430,6 +780,250 @@ public: ); } + // + // Sar ... + + // + double GetSar( + int barIndex // Bar Index + ) + { + // + if (barIndex < 0) + { + barIndex = 0; + } + + // + Calculate(); + + // + return sarBuffer[barIndex]; + } + + // + // Copy Required Buffer ... + int CopySar( + int start, // Start + int count, // Number of Items for read + double &buffer[], // Dest Buffer + bool forceClean = true // Force To Clean buffer + ) + { + // + // Update Calculations ... + Calculate(); + + // + // Copy Items ... + return Copy( + start, + count, + sarBuffer, + buffer, + forceClean + // + ); + } + + // + bool GetConditions( + XMCConditions &conditions, // + int barIndex = 0, // + int loopback = 3 // + ) + { + // + bool result = true; + + // + if (loopback < 3) + { + loopback = 3; + } + + // + conditions.Clean(); + + // + conditions.symbol = mSymbol; + conditions.period = mPeriod; + conditions.time = TimeCurrent(); + + // + int zIndex = barIndex; + int cIndex = zIndex + 1; + int pIndex = cIndex + 1; + int ppIndex = pIndex + 1; + + // + CopyFast( + zIndex, + loopback, + conditions.fast // + ); + + // + CopySlow( + zIndex, + loopback, + conditions.slow // + ); + + // + CopyVerifier( + zIndex, + loopback, + conditions.verifier // + ); + + // + CopySar( + zIndex, + loopback, + conditions.psar // + ); + + // + // Calculate Conditions ... + + // + // Trend ... + + // + bool isBullish = conditions.fast[cIndex] > conditions.slow[cIndex] && + conditions.slow[cIndex] > conditions.verifier[cIndex]; + bool isBearish = conditions.fast[cIndex] < conditions.slow[cIndex] && + conditions.slow[cIndex] < conditions.verifier[cIndex]; + + // + bool isBullishPrev = conditions.fast[pIndex] > conditions.slow[pIndex] && + conditions.slow[pIndex] > conditions.verifier[pIndex]; + bool isBearishPrev = conditions.fast[pIndex] < conditions.slow[pIndex] && + conditions.slow[pIndex] < conditions.verifier[pIndex]; + + // + bool isSwitchedToBullish = isBullish && + !isBullishPrev; + bool isSwitchedToBearish = isBearish && + !isBearishPrev; + + // + // Set Conditions to Structure ... + conditions.isBullish = isBullish; + conditions.isBearish = isBearish; + conditions.isSwitchedToBullish = isSwitchedToBullish; + conditions.isSwitchedToBearish = isSwitchedToBearish; + + // + // Fast Slow ... + + // + bool isFastOverSlow = conditions.fast[cIndex] > conditions.slow[cIndex]; + bool isFastUnderSlow = conditions.fast[cIndex] < conditions.slow[cIndex]; + + // + bool isFastOverSlowPrev = conditions.fast[pIndex] > conditions.slow[pIndex]; + bool isFastUnderSlowPrev = conditions.fast[pIndex] < conditions.slow[pIndex]; + + // + bool isFastCrossedOverSlow = isFastOverSlow && + !isFastOverSlowPrev; + bool isFastCrossedUnderSlow = isFastUnderSlow && + !isFastUnderSlowPrev; + + // + conditions.isFastOverSlow = isFastOverSlow; + conditions.isFastUnderSlow = isFastUnderSlow; + conditions.isFastCrossedOverSlow = isFastCrossedOverSlow; + conditions.isFastCrossedUnderSlow = isFastCrossedUnderSlow; + + // + // Fast Verifier ... + + // + bool isFastOverVerifier = conditions.fast[cIndex] > conditions.verifier[cIndex]; + bool isFastUnderVerifier = conditions.fast[cIndex] < conditions.verifier[cIndex]; + + // + bool isFastOverVerifierPrev = conditions.fast[pIndex] > conditions.verifier[pIndex]; + bool isFastUnderVerifierPrev = conditions.fast[pIndex] < conditions.verifier[pIndex]; + + // + bool isFastCrossedOverVerifier = isFastOverVerifier && + !isFastOverVerifierPrev; + bool isFastCrossedUnderVerifier = isFastUnderVerifier && + !isFastUnderVerifierPrev; + + // + conditions.isFastOverVerifier = isFastOverVerifier; + conditions.isFastUnderVerifier = isFastUnderVerifier; + conditions.isFastCrossedOverVerifier = isFastCrossedOverVerifier; + conditions.isFastCrossedUnderVerifier = isFastCrossedUnderVerifier; + + // + // Slow Verifier ... + + // + bool isSlowOverVerifier = conditions.slow[cIndex] > conditions.verifier[cIndex]; + bool isSlowUnderVerifier = conditions.slow[cIndex] < conditions.verifier[cIndex]; + + // + bool isSlowOverVerifierPrev = conditions.slow[pIndex] > conditions.verifier[pIndex]; + bool isSlowUnderVerifierPrev = conditions.slow[pIndex] < conditions.verifier[pIndex]; + + // + bool isSlowCrossedOverVerifier = isSlowOverVerifier && + !isSlowOverVerifierPrev; + bool isSlowCrossedUnderVerifier = isSlowUnderVerifier && + !isSlowUnderVerifierPrev; + + // + conditions.isSlowOverVerifier = isSlowOverVerifier; + conditions.isSlowUnderVerifier = isSlowUnderVerifier; + conditions.isSlowCrossedOverVerifier = isSlowCrossedOverVerifier; + conditions.isSlowCrossedUnderVerifier = isSlowCrossedUnderVerifier; + + // + XOHCL cBar; + cBar.Init( + mSymbol, + mPeriod, + cIndex // + ); + + // + XOHCL pBar; + pBar.Init( + mSymbol, + mPeriod, + pIndex // + ); + + // + bool isSARBullish = conditions.psar[cIndex] < cBar.low; + bool isSARBearish = conditions.psar[cIndex] > cBar.high; + + // + bool isSARBullishPrev = conditions.psar[pIndex] < pBar.low; + bool isSARBearishPrev = conditions.psar[pIndex] > pBar.high; + + // + bool isSARSwitchedToBullish = isSARBullish && + !isSARBullishPrev; + bool isSARSwitchedToBearish = isSARBearish && + !isSARBearishPrev; + + // + conditions.isSARBullish = isSARBullish; + conditions.isSARBearish = isSARBearish; + conditions.isSARSwitchedToBullish = isSARSwitchedToBullish; + conditions.isSARSwitchedToBearish = isSARSwitchedToBearish; + + // + return result; + } + // // Protected ... protected: @@ -443,6 +1037,7 @@ private: // // Buffers ... // + double sarBuffer[]; double fastBuffer[]; double slowBuffer[]; double verifierBuffer[]; @@ -457,11 +1052,22 @@ private: // int totalBars = CountBars(); + // + // Sar ... + CopyBuffer( + mHandler, + XMC_SAR_LINE, + 0, + totalBars, + sarBuffer + // + ); + // // Fast ... CopyBuffer( mHandler, - X_MC_FAST_LINE, + XMC_FAST_LINE, 0, totalBars, fastBuffer @@ -472,7 +1078,7 @@ private: // Slow ... CopyBuffer( mHandler, - X_MC_SLOW_LINE, + XMC_SLOW_LINE, 0, totalBars, slowBuffer @@ -483,7 +1089,7 @@ private: // Verifier ... CopyBuffer( mHandler, - X_MC_VERIFIER_LINE, + XMC_VERIFIER_LINE, 0, totalBars, verifierBuffer diff --git a/Indicators/x-saherelm.xmc.mq5 b/Indicators/x-saherelm.xmc.mq5 index f7fe43bf..bd40a26b 100644 --- a/Indicators/x-saherelm.xmc.mq5 +++ b/Indicators/x-saherelm.xmc.mq5 @@ -38,27 +38,33 @@ // input group "Fast"; -input int fastMaLength = 9; // Length +input int fastMaLength = 21; // Length input int fastMaShift = 0; // Shift input ENUM_MA_METHOD fastMaMethod = MODE_EMA; // Method input ENUM_APPLIED_PRICE fastMaAppliedTo = PRICE_CLOSE; // Applied To // input group "Slow"; -input int slowMaLength = 18; // Length +input int slowMaLength = 50; // Length input int slowMaShift = 0; // Shift input ENUM_MA_METHOD slowMaMethod = MODE_EMA; // Method input ENUM_APPLIED_PRICE slowMaAppliedTo = PRICE_CLOSE; // Applied To // input group "Verifier"; -input int verifierMaLength = 50; // Length +input int verifierMaLength = 200; // Length input int verifierMaShift = 0; // Shift input ENUM_MA_METHOD verifierMaMethod = MODE_EMA; // Method input ENUM_APPLIED_PRICE verifierMaAppliedTo = PRICE_CLOSE; // Applied To +// +input group "PSar"; +input double sarStep = 0.02; // Step +input double sarMaximum = 0.2; // Maximum + // input group "Presentation"; +input bool showSar = true; // Show Sar input bool showFastMa = true; // Show Fast input bool showSlowMa = true; // Show Slow input bool showVerifierMa = true; // Show Verifier @@ -85,8 +91,8 @@ input bool showVerifierMa = true; // Show Verifier #property indicator_chart_window // -#property indicator_buffers 3 -#property indicator_plots 3 +#property indicator_buffers 4 +#property indicator_plots 4 // // PLOTTED Buffers ... @@ -130,6 +136,17 @@ double verifierMaBuffer[]; #property indicator_style3 STYLE_SOLID #property indicator_width3 2 +// +// SAR ... +#define sarBufferIndex 3 +double sarBuffer[]; + +// +#property indicator_label4 "XMC SAR" +#property indicator_type4 DRAW_ARROW +#property indicator_color4 clrDarkGreen +#property indicator_width4 2 + // // END Buffers ... // @@ -142,6 +159,7 @@ double verifierMaBuffer[]; int maxLength; // +int sarHandler = INVALID_HANDLE; int fastMaHandler = INVALID_HANDLE; int slowMaHandler = INVALID_HANDLE; int verifierMaHandler = INVALID_HANDLE; @@ -180,6 +198,19 @@ int OnInit() // Set Indicator ShortName ... SetIndicatorName(); + // + // SAR Initializer ... + sarHandler = iSAR( + _Symbol, + _Period, + sarStep, + sarMaximum // + ); + if (sarHandler == INVALID_HANDLE) + { + return INIT_FAILED; + } + // // MA Initialization ... @@ -248,6 +279,7 @@ void OnDeinit(const int reason) // // Here we can handle De Initialization Reasons ... + IndicatorRelease(sarHandler); IndicatorRelease(fastMaHandler); IndicatorRelease(slowMaHandler); IndicatorRelease(verifierMaHandler); @@ -258,36 +290,17 @@ void OnDeinit(const int reason) // // Calculating what we want ... int OnCalculate( - // - // total Candles on chart ... - const int rates_total, - // - // total calculated Candles on charts ... - const int prev_calculated, - // - // history of Candles Open Time ... - const datetime &time[], - // - // history of Candles Open Price ... - const double &open[], - // - // history of Candles High Price ... - const double &high[], - // - // history of Candles Low Price ... - const double &low[], - // - // history of Candles Close Price ... - const double &close[], - // - // history of Tick Volumes on Candle ... - const long &tick_volume[], - // - // history of Trade Volumes ... - const long &volume[], - // - // history of Candles Spread Price ... - const int &spread[]) + const int rates_total, // Total Bars on Chart ... + const int prev_calculated, // Total Calculated Bars on Charts ... + const datetime &time[], // History of Open Time ... + const double &open[], // History of Open Price ... + const double &high[], // History of High Price ... + const double &low[], // History of Low Price ... + const double &close[], // History of Close Price ... + const long &tick_volume[], // History of Tick Volumes on Bar ... + const long &volume[], // History of Trade Volumes ... + const int &spread[] // History of Spread Price ... +) { // // Prepare Buffers ... @@ -306,10 +319,12 @@ int OnCalculate( // // Check Calculated Bars ... + int sarCalculatedBars = BarsCalculated(sarHandler); int fastMaCalculatedBars = BarsCalculated(fastMaHandler); int slowMaCalculatedBars = BarsCalculated(slowMaHandler); int verifierMaCalculatedBars = BarsCalculated(verifierMaHandler); - if (fastMaCalculatedBars < maxLength || + if (sarCalculatedBars < maxLength || + fastMaCalculatedBars < maxLength || slowMaCalculatedBars < maxLength || verifierMaCalculatedBars < maxLength) { @@ -321,10 +336,12 @@ int OnCalculate( // // Buffers Copy ... + int copiedSars = CopyBuffer(sarHandler, 0, 0, limit, sarBuffer); int copiedFastMas = CopyBuffer(fastMaHandler, 0, 0, limit, fastMaBuffer); int copiedSlowMas = CopyBuffer(slowMaHandler, 0, 0, limit, slowMaBuffer); int copiedVerifierMas = CopyBuffer(verifierMaHandler, 0, 0, limit, verifierMaBuffer); - if (copiedFastMas <= 0 || + if (copiedSars <= 0 || + copiedFastMas <= 0 || copiedSlowMas <= 0 || copiedVerifierMas <= 0) { @@ -362,6 +379,11 @@ bool ValidateInputs() slowMaLength > fastMaLength && verifierMaLength > slowMaLength) // + && + // + (sarStep > 0 && + sarMaximum > sarStep) + // ; // @@ -390,6 +412,21 @@ int ExtractMaxLengthOfInputs() // Define Indexes and Styles ... void DefineBuffers() { + // + // SAR ... + ENUM_DRAW_TYPE sarDrawType = showSar ? DRAW_ARROW : DRAW_NONE; + + // + // PEAKS ... + ArraySetAsSeries(sarBuffer, true); + SetIndexBuffer(sarBufferIndex, sarBuffer, INDICATOR_DATA); + PlotIndexSetInteger(sarBufferIndex, PLOT_ARROW, 225); + PlotIndexSetDouble(sarBufferIndex, PLOT_EMPTY_VALUE, 0); + + // + PlotIndexSetInteger(sarBufferIndex, PLOT_SHOW_DATA, showSar); + PlotIndexSetInteger(sarBufferIndex, PLOT_DRAW_TYPE, sarDrawType); + // // MA ... @@ -399,7 +436,7 @@ void DefineBuffers() ArraySetAsSeries(fastMaBuffer, true); SetIndexBuffer(fastMaBufferIndex, fastMaBuffer, INDICATOR_DATA); PlotIndexSetInteger(fastMaBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(fastMaBufferIndex, PLOT_SHOW_DATA, false); + PlotIndexSetInteger(fastMaBufferIndex, PLOT_SHOW_DATA, showFastMa); PlotIndexSetInteger(fastMaBufferIndex, PLOT_DRAW_TYPE, fastMaDrawType); // @@ -408,7 +445,7 @@ void DefineBuffers() ArraySetAsSeries(slowMaBuffer, true); SetIndexBuffer(slowMaBufferIndex, slowMaBuffer, INDICATOR_DATA); PlotIndexSetInteger(slowMaBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(slowMaBufferIndex, PLOT_SHOW_DATA, false); + PlotIndexSetInteger(slowMaBufferIndex, PLOT_SHOW_DATA, showSlowMa); PlotIndexSetInteger(slowMaBufferIndex, PLOT_DRAW_TYPE, slowMaDrawType); // @@ -417,7 +454,7 @@ void DefineBuffers() ArraySetAsSeries(verifierMaBuffer, true); SetIndexBuffer(verifierMaBufferIndex, verifierMaBuffer, INDICATOR_DATA); PlotIndexSetInteger(verifierMaBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(verifierMaBufferIndex, PLOT_SHOW_DATA, false); + PlotIndexSetInteger(verifierMaBufferIndex, PLOT_SHOW_DATA, showVerifierMa); PlotIndexSetInteger(verifierMaBufferIndex, PLOT_DRAW_TYPE, verifierMaDrawType); }