diff --git a/Classes/x-saherelm.x121.setup.class.mq5 b/Classes/x-saherelm.x121.setup.class.mq5 index f02edb0e..139aeb50 100644 --- a/Classes/x-saherelm.x121.setup.class.mq5 +++ b/Classes/x-saherelm.x121.setup.class.mq5 @@ -4127,12 +4127,25 @@ struct X121SignalGenerator // || // - (!conditions.ichConditions.isTenkanSenOverKijunSen && - !conditions.ichConditions.isTenkanSenUnderKijunSen && - conditions.ichConditions.isSenkouSpanAUnderB && - conditions.ichConditions.isClosedUnderKijunSen && - conditions.ichConditions.isSenkouSpanAOverLast && - conditions.ichConditions.isSenkouSpanACrossedOverLast) + ((!conditions.ichConditions.isTenkanSenOverKijunSen && + !conditions.ichConditions.isTenkanSenUnderKijunSen) && + ( + // + (conditions.ichConditions.isSenkouSpanAUnderB && + conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isSenkouSpanAOverLast && + conditions.ichConditions.isSenkouSpanACrossedOverLast) + // + || + // + (conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isSenkouSpanAOverB && + conditions.ichConditions.isFutureSenkouSpanAUnderB && + conditions.ichConditions.isFutureSenkouSpanAUnderLast) + // + ) + // + ) // || // @@ -4312,6 +4325,264 @@ struct X121SignalGenerator // ) // + || + // + // CUSTOM ... + ( + // + // XPV ... + ( + // + ( + // + // XPV ... + (conditions.pvConditions.isNewVale && + conditions.pvConditions.isNewValeUnderLast && + conditions.pvConditions.isFiboDecreased && + conditions.pvConditions.isCloseUnderFib1 && + conditions.pvConditions.isCloseUnderFib2 && + conditions.pvConditions.isCloseUnderFib3 && + conditions.pvConditions.isCloseUnderFib4 && + conditions.pvConditions.isCloseUnderFib5) + // + && + // + ( + // + ( + // + // XPV ... + conditions.pvConditions.isSCBearish && + conditions.pvConditions.isSCHHBearish && + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isMCBearish && + conditions.pvConditions.isMCHHBearish && + conditions.pvConditions.isMCLLBearish && + conditions.pvConditions.isMCHHSwitchedToBearish && + conditions.pvConditions.isLCLLBearish && + conditions.pvConditions.isHCLLBearish && + !conditions.pvConditions.isHCBearish && + !conditions.pvConditions.isHCHHBearish && + !conditions.pvConditions.isLCBearish && + !conditions.pvConditions.isLCHHBearish && + !conditions.pvConditions.isMCSwitchedToBearish && + !conditions.pvConditions.isMCLLSwitchedToBeraish && + // + // XICH ... + conditions.ichConditions.isSenkouSpanAOverB && + !conditions.ichConditions.isTenkanSenOverKijunSen && + !conditions.ichConditions.isTenkanSenUnderKijunSen + // + ) + // + || + // + ( + // + // XPV ... + conditions.pvConditions.isSCBearish && + conditions.pvConditions.isSCHHBearish && + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isMCLLBearish && + conditions.pvConditions.isLCBearish && + conditions.pvConditions.isLCHHBearish && + conditions.pvConditions.isLCLLBearish && + conditions.pvConditions.isLCSwitchedToBearish && + conditions.pvConditions.isLCHHSwitchedToBearish && + conditions.pvConditions.isHCBearish && + conditions.pvConditions.isHCHHBearish && + conditions.pvConditions.isHCLLBearish && + !conditions.pvConditions.isMCBearish && + !conditions.pvConditions.isMCHHBearish && + !conditions.pvConditions.isLCLLSwitchedToBeraish && + // + // XICH ... + conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isTenkanSenUnderKijunSen && + !conditions.ichConditions.isSenkouSpanAUnderB && + !conditions.ichConditions.isSenkouSpanAUnderLast && + // + // XCHMA ... + conditions.chmaConditions.isFastUnderSlow && + conditions.chmaConditions.isCloseUnderFast && + conditions.chmaConditions.isCloseUnderSlow && + conditions.chmaConditions.isFastResistance && + conditions.chmaConditions.isSlowResistance + // + ) + // + ) + // + ) + // + || + // + ( + // + // XPV ... + (conditions.pvConditions.isCloseUnderFib1 && + conditions.pvConditions.isCloseUnderFib2 && + conditions.pvConditions.isCloseUnderFib3 && + conditions.pvConditions.isCloseUnderFib4 && + conditions.pvConditions.isCloseUnderFib5) + // + && + // + ( + // + ( + // + // XPV ... + conditions.pvConditions.isSCBearish && + conditions.pvConditions.isSCHHBearish && + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isMCLLBearish && + !conditions.pvConditions.isMCBearish && + !conditions.pvConditions.isMCHHBearish && + !conditions.pvConditions.isLCBearish && + !conditions.pvConditions.isLCHHBearish && + !conditions.pvConditions.isLCLLBearish && + !conditions.pvConditions.isHCBearish && + !conditions.pvConditions.isHCHHBearish && + !conditions.pvConditions.isHCLLBearish && + // + // XHTD ... + conditions.tdConditions.isSwitchedToBearish && + // + // XICH ... + conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isTenkanSenOverKijunSen && + // + // XVLM ... + conditions.vlmConditions.isVolumeChangedToBearish && + // + // XCHMA ... + conditions.chmaConditions.isFastUnderSlow && + conditions.chmaConditions.isCloseUnderFast && + conditions.chmaConditions.isCloseUnderSlow && + conditions.chmaConditions.isSlowResistance && + !conditions.chmaConditions.isFastResistance + // + ) + // + || + // + ( + // + // XPV ... + conditions.pvConditions.isNewVale && + conditions.pvConditions.isNewValeOverLast && + conditions.pvConditions.isFiboIncreased && + conditions.pvConditions.isFiboSectionChanged && + conditions.pvConditions.isCloseCrossedUnderFib5 && + conditions.pvConditions.isHCLLBullish && + conditions.pvConditions.isHCLLSwitchedToBullish && + // + // XMRB ... + conditions.mrbConditions.isFastCrossedUnderSlow && + // + // XCHE ... + conditions.cheConditions.isSwitchedToBearish && + conditions.cheConditions.isStrongSwitchedToBearish && + // + // XCHMA ... + conditions.chmaConditions.isFastUnderSlow && + conditions.chmaConditions.isCloseUnderFast && + conditions.chmaConditions.isCloseUnderSlow + // + ) + // + || + // + ( + // + // XPV ... + conditions.pvConditions.isSCBearish && + conditions.pvConditions.isSCHHBearish && + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isMCLLBearish && + !conditions.pvConditions.isMCBearish && + !conditions.pvConditions.isMCHHBearish && + !conditions.pvConditions.isLCBearish && + !conditions.pvConditions.isLCHHBearish && + !conditions.pvConditions.isLCLLBearish && + !conditions.pvConditions.isHCBearish && + !conditions.pvConditions.isHCHHBearish && + !conditions.pvConditions.isHCLLBearish && + // + // XVLM ... + conditions.vlmConditions.isVolumeBearish && + conditions.vlmConditions.isVolumeUnderLast && + // + // XCHMA ... + conditions.chmaConditions.isFastUnderSlow && + conditions.chmaConditions.isCloseUnderFast && + conditions.chmaConditions.isCloseUnderSlow && + conditions.chmaConditions.isFastResistance && + conditions.chmaConditions.isSlowResistance + // + ) + // + ) + // + ) + // + || + // + ( + // + // XPV ... + ( + // + // XPV ... + (conditions.pvConditions.isCloseOverFib5 && + conditions.pvConditions.isCloseUnderFib1 && + conditions.pvConditions.isCloseUnderFib2 && + conditions.pvConditions.isCloseUnderFib3 && + conditions.pvConditions.isCloseUnderFib4 && + conditions.pvConditions.isCloseCrossedUnderFib4) + // + && + // + ( + // + // XPV ... + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isSCSwitchedToBearish && + conditions.pvConditions.isSCLLSwitchedToBeraish && + conditions.pvConditions.isMCLLBearish && + conditions.pvConditions.isMCSwitchedToBearish && + conditions.pvConditions.isMCLLSwitchedToBeraish && + !conditions.pvConditions.isSCHHSwitchedToBearish && + !conditions.pvConditions.isMCHHSwitchedToBearish && + !conditions.pvConditions.isLCBearish && + !conditions.pvConditions.isLCHHBearish && + !conditions.pvConditions.isLCLLBearish && + !conditions.pvConditions.isHCBearish && + !conditions.pvConditions.isHCHHBearish && + !conditions.pvConditions.isHCLLBearish && + // + // XICH ... + conditions.ichConditions.isClosedOverKijunSen && + conditions.ichConditions.isTenkanSenOverKijunSen && + // + // XCHMA ... + conditions.chmaConditions.isFastUnderSlow && + conditions.chmaConditions.isCloseUnderFast && + conditions.chmaConditions.isCloseUnderSlow && + conditions.chmaConditions.isFastResistance && + conditions.chmaConditions.isSlowResistance + // + ) + // + ) + // + ) + // + ) + // + ) + // ) // ; diff --git a/Documents/Resolved/sls.2022.2024.txt b/Documents/Resolved/sls.2022.2024.txt new file mode 100644 index 00000000..4a2eef6f --- /dev/null +++ b/Documents/Resolved/sls.2022.2024.txt @@ -0,0 +1,75 @@ +// +// Longs ... + +// +// 1 ... +2022.03.07 04:00:00 16 AUDUSDb buy in 0.01 0.74269 16 0.00 0.00 0.00 1 002.13 PRV(XPVF)PR(H2) +2022.03.07 15:44:19 17 AUDUSDb sell out 0.01 0.73769 17 0.00 0.00 -5.00 997.13 sl 0.73769 + +// +// 2 ... +2022.05.12 08:00:00 24 EURNZDb buy in 0.01 1.68355 24 0.00 0.00 0.00 994.45 PRV(XPVF)PR(H2) +2022.05.12 09:23:54 25 EURNZDb sell out 0.01 1.67855 25 0.00 0.00 -5.00 989.45 sl 1.67855 + +// +// 3 ... +2022.09.12 12:00:00 48 EURGBPb buy in 0.01 0.87175 48 0.00 0.00 0.00 993.91 PRV(XPVF)PR(H2) +2022.09.12 16:05:33 49 EURGBPb sell out 0.01 0.86674 49 0.00 0.00 -5.01 988.90 sl 0.86675 + +// +// 4 ... +2022.12.07 20:00:00 58 EURCHFb buy in 0.01 0.98922 58 0.00 0.00 0.00 992.16 PRV(XHULL)PR(M15) +2022.12.09 13:57:47 59 EURCHFb sell out 0.01 0.98419 59 0.00 0.00 -5.03 987.13 sl 0.98422 + +// +// 5 ... +2022.12.12 16:00:00 60 EURUSDb buy in 0.01 1.05716 60 0.00 0.00 0.00 987.13 PRV(XHTD)PR(H1) +2022.12.12 17:58:08 61 EURUSDb sell out 0.01 1.05216 61 0.00 0.00 -5.00 982.13 sl 1.05216 + +// +// 6 ... +2023.05.12 20:00:01 82 USDCHFb buy in 0.01 0.89811 82 0.00 0.00 0.00 981.00 PRV(XPVF)PR(H1) +2023.05.16 10:52:51 83 USDCHFb sell out 0.01 0.89311 83 0.00 0.00 -5.00 976.00 sl 0.89311 + +// +// 7 ... +2023.08.10 20:00:00 104 EURGBPb buy in 0.01 0.86616 104 0.00 0.00 0.00 986.00 PRV(XPVF)PR(H2) +2023.08.14 17:06:19 107 EURGBPb sell out 0.01 0.86115 107 0.00 0.00 -5.01 981.58 sl 0.86116 + +// +// 8 ... +2023.09.22 16:00:00 118 NZDUSDb buy in 0.01 0.59810 118 0.00 0.00 0.00 979.59 PRV(XHTSRD)PR(H2) +2023.09.27 05:32:30 123 NZDUSDb sell out 0.01 0.59310 123 0.00 0.00 -5.00 976.64 sl 0.59310 + +// +// Shorts ... + +// +// 1 ... +2022.02.18 20:00:00 10 EURUSDb sell in 0.01 1.13219 10 0.00 0.00 0.00 1 004.49 PRV(XPVF)PR(H1) +2022.02.21 09:01:13 11 EURUSDb buy out 0.01 1.13719 11 0.00 0.00 -5.00 999.49 sl 1.13719 + +// +// 2 ... +2022.04.20 20:00:00 20 EURAUDb sell in 0.01 1.45617 20 0.00 0.00 0.00 998.61 PRV(XVLM)PR(M5) +2022.04.21 09:30:40 21 EURAUDb buy out 0.01 1.46123 21 0.00 0.00 -5.06 993.55 sl 1.46117 + +// +// 3 ... +2022.07.06 16:00:00 40 EURJPYb sell in 0.01 137.669 40 0.00 0.00 0.00 996.25 PRV(XPVF)PR(H1) +2022.07.06 17:02:26 41 EURJPYb buy out 0.01 138.169 41 0.00 0.00 -5.00 991.25 sl 138.169 + +// +// 4 ... +2023.02.09 16:00:00 76 EURJPYb sell in 0.01 140.700 76 0.00 0.00 0.00 989.87 PRV(XHTSRD)PR(M15) +2023.02.09 21:00:34 77 EURJPYb buy out 0.01 141.202 77 0.00 0.00 -5.02 984.85 sl 141.200 + +// +// 5 ... +2023.02.14 03:00:00 78 EURCHFb sell in 0.01 0.98548 78 0.00 0.00 0.00 984.85 PRV(XHK)PR(M5) +2023.02.14 23:59:59 79 EURCHFb buy out 0.01 0.99053 79 0.00 0.00 -5.05 979.80 sl 0.99048 + +// +// 6 ... +2023.09.21 04:00:00 116 EURCADb sell in 0.01 1.43337 116 0.00 0.00 0.00 984.59 PRV(XTD)PR(M15) +2023.09.21 10:35:22 117 EURCADb buy out 0.01 1.43837 117 0.00 0.00 -5.00 979.59 sl 1.43837 diff --git a/Experts/x-test.ea.mq5 b/Experts/x-test.ea.mq5 index 4f66d237..9ab6490b 100644 --- a/Experts/x-test.ea.mq5 +++ b/Experts/x-test.ea.mq5 @@ -44,6 +44,7 @@ XBarTracker eaBarTracker; // XSCXTestSetupEA *mSetupEA; +XSCXTestSetup *iSetup; XSCXCTHelper *mCTHelper; XSCXCCHelper *mCCHelper; @@ -108,6 +109,7 @@ void OnDeinit(const int reason) // On Tick Handler ... void OnTick() { + // // mSetupEA.OnTick(); // @@ -117,94 +119,138 @@ void OnTick() } // - XOHCL cBar; - bool isInit = cBar.Init( - _Symbol, - _Period, - 1 // + XTestConditions conditions; + bool hasConditions = iSetup.GetConditions( + conditions, + 0, + 5 // ); - if (!isInit) - { - return; - } - - // - datetime time1 = iTime( - _Symbol, - _Period, - 2 // - ); - - // - double fib382 = 0; - - // - bool isHammer = cBar.IsHammer(); - if (isHammer) + if (hasConditions) { // - fib382 = GetFibonacciLevel( - cBar.high, - cBar.low, - 0.382, - -1 // - ); - DrawTrendLine( - ChartID(), - "HMR_TR", - 0, - time1, - fib382, - cBar.time, - fib382, - clrYellow // - ); - Print("Hammer ..."); - eaBarTracker.Waits(); + bool isCHMAOverUnder1 = + // + (conditions.chmaConditions.isFastOverMin && + conditions.chmaConditions.isFastUnderMin) + // + ; + // + bool isCHMAOverUnder2 = + // + (conditions.chmaConditions.isSlowOverMin && + conditions.chmaConditions.isSlowUnderMin) + // + ; + // + bool isCHMAOverUnder3 = + // + (conditions.chmaConditions.isFastOverMax && + conditions.chmaConditions.isFastUnderMax) + // + ; + // + bool isCHMAOverUnder4 = + // + (conditions.chmaConditions.isSlowOverMax && + conditions.chmaConditions.isSlowUnderMax) + // + ; + // + if (isCHMAOverUnder1 || isCHMAOverUnder2 || isCHMAOverUnder3 || isCHMAOverUnder4) + { + Print("isCHMAOverUnder"); + } } - // - bool isShootingStar = cBar.IsShootingStar(); - if (isShootingStar) - { - // - fib382 = GetFibonacciLevel( - cBar.high, - cBar.low, - 0.382, - 1 // - ); - DrawTrendLine( - ChartID(), - "HMR_TR", - 0, - time1, - fib382, - cBar.time, - fib382, - clrYellow // - ); - Print("ShootingStar ..."); - eaBarTracker.Waits(); - } + // // + // XOHCL cBar; + // bool isInit = cBar.Init( + // _Symbol, + // _Period, + // 1 // + // ); + // if (!isInit) + // { + // return; + // } - // - bool isBullishEngulf = cBar.IsBullishEngulf(); - if (isBullishEngulf) - { - // - Print("Bullish Engulf ..."); - eaBarTracker.Waits(); - } + // // + // datetime time1 = iTime( + // _Symbol, + // _Period, + // 2 // + // ); - // - bool isBearishEngulf = cBar.IsBearishEngulf(); - if (isBearishEngulf) - { - // - Print("Bearish Engulf ..."); - eaBarTracker.Waits(); - } + // // + // double fib382 = 0; + + // // + // bool isHammer = cBar.IsHammer(); + // if (isHammer) + // { + // // + // fib382 = GetFibonacciLevel( + // cBar.high, + // cBar.low, + // 0.382, + // -1 // + // ); + // DrawTrendLine( + // ChartID(), + // "HMR_TR", + // 0, + // time1, + // fib382, + // cBar.time, + // fib382, + // clrYellow // + // ); + // Print("Hammer ..."); + // eaBarTracker.Waits(); + // } + + // // + // bool isShootingStar = cBar.IsShootingStar(); + // if (isShootingStar) + // { + // // + // fib382 = GetFibonacciLevel( + // cBar.high, + // cBar.low, + // 0.382, + // 1 // + // ); + // DrawTrendLine( + // ChartID(), + // "HMR_TR", + // 0, + // time1, + // fib382, + // cBar.time, + // fib382, + // clrYellow // + // ); + // Print("ShootingStar ..."); + // eaBarTracker.Waits(); + // } + + // // + // bool isBullishEngulf = cBar.IsBullishEngulf(); + // if (isBullishEngulf) + // { + // // + // Print("Bullish Engulf ..."); + // eaBarTracker.Waits(); + // } + + // // + // bool isBearishEngulf = cBar.IsBearishEngulf(); + // if (isBearishEngulf) + // { + // // + // Print("Bearish Engulf ..."); + // eaBarTracker.Waits(); + // } } // @@ -302,7 +348,7 @@ bool InitialEA() } // - XSCXTestSetup *iSetup = new XSCXTestSetup(); + iSetup = new XSCXTestSetup(); result = iSetup.Init(iInputs); if (!result) { @@ -408,6 +454,21 @@ void PreConfigureStyles(XTestInputs &inputs) // XHULL ... inputs.hullInputs.showUpZone = false; inputs.hullInputs.showDownZone = false; + + // + // XCHMA ... + inputs.chmaInputs.showFast = true; + inputs.chmaInputs.showSlow = true; + inputs.chmaInputs.showCCFast = true; + inputs.chmaInputs.showCCSlow = true; + inputs.chmaInputs.showSCFast = true; + inputs.chmaInputs.showSCSlow = true; + inputs.chmaInputs.showMCFast = true; + inputs.chmaInputs.showMCSlow = true; + inputs.chmaInputs.showLCFast = true; + inputs.chmaInputs.showLCSlow = true; + inputs.chmaInputs.showHCFast = true; + inputs.chmaInputs.showHCSlow = true; } // \ No newline at end of file diff --git a/Test/x-saherelm.test.setup.mq5 b/Test/x-saherelm.test.setup.mq5 index c6bf927a..8e7b6dfa 100644 --- a/Test/x-saherelm.test.setup.mq5 +++ b/Test/x-saherelm.test.setup.mq5 @@ -41,6 +41,7 @@ #include "../Helpers/x-saherelm.xosc.helper.mq5" #include "../Helpers/x-saherelm.xvlm.helper.mq5" #include "../Helpers/x-saherelm.xhtd.helper.mq5" +#include "../Helpers/x-saherelm.xchma.helper.mq5" #include "../Helpers/x-saherelm.xatsl.helper.mq5" #include "../Helpers/x-saherelm.xdmnt.helper.mq5" #include "../Helpers/x-saherelm.xasct.helper.mq5" @@ -79,6 +80,7 @@ struct XTestInputs XOSCInputs oscInputs; // XOSC Inputs XVLMInputs vlmInputs; // XVLM Inputs XSLNInputs slnInputs; // XSLN Inputs + XCHMAInputs chmaInputs; // XCHMA Inputs XATSLInputs atslInputs; // XATSL Inputs XDMNTInputs dmntInputs; // XDMNT Inputs XASCTInputs asctInputs; // XASCT Inputs @@ -123,6 +125,7 @@ struct XTestInputs XOSCInputs &_oscInputs, // XOSC Inputs XVLMInputs &_vlmInputs, // XVLM Inputs XSLNInputs &_slnInputs, // XSLN Inputs + XCHMAInputs &_chmaInputs, // XCHMA Inputs XATSLInputs &_atslInputs, // XATSL Inputs XDMNTInputs &_dmntInputs, // XDMNT Inputs XASCTInputs &_asctInputs, // XASCT Inputs @@ -149,6 +152,7 @@ struct XTestInputs this.mrbInputs = _mrbInputs; this.oscInputs = _oscInputs; this.vlmInputs = _vlmInputs; + this.chmaInputs = _chmaInputs; this.atslInputs = _atslInputs; this.dmntInputs = _dmntInputs; this.asctInputs = _asctInputs; @@ -189,6 +193,7 @@ struct XTestInputs vlmInputs.Clean(); slnInputs.Clean(); htdInputs.Clean(); + chmaInputs.Clean(); asctInputs.Clean(); sslcInputs.Clean(); hullInputs.Clean(); @@ -219,6 +224,7 @@ struct XTestInputs vlmInputs.Default(); slnInputs.Default(); htdInputs.Default(); + chmaInputs.Default(); asctInputs.Default(); sslcInputs.Default(); hullInputs.Default(); @@ -253,6 +259,13 @@ struct XTestInputs return result; } + // + result = chmaInputs.IsValid(); + if (!result) + { + return result; + } + // result = tdInputs.IsValid(); if (!result) @@ -409,6 +422,7 @@ struct XTestConditions XVLMConditions vlmConditions; XHTDConditions htdConditions; XSLNConditions slnConditions; + XCHMAConditions chmaConditions; XATSLConditions atslConditions; XASCTConditions asctConditions; XSSLCConditions sslcConditions; @@ -629,7 +643,7 @@ struct XTestConditions mMode, mEntry, volume, - 0, //mSL, + 0, // mSL, mTP // ); // if (result) @@ -784,6 +798,7 @@ struct XTestConditions vlmConditions.Clean(); slnConditions.Clean(); htdConditions.Clean(); + chmaConditions.Clean(); atslConditions.Clean(); asctConditions.Clean(); sslcConditions.Clean(); @@ -921,6 +936,14 @@ struct XTestConditions bullishScore += tempBullishScore; bearishScore += tempBearishScore; + // + chmaConditions.GenerateScore( + tempBullishScore, + tempBearishScore // + ); + bullishScore += tempBullishScore; + bearishScore += tempBearishScore; + // hullConditions.GenerateScore( tempBullishScore, @@ -1007,7 +1030,8 @@ struct XTestConditions string vlmSummary = vlmConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string slnSummary = slnConditions.GenerateSummary(false, true, false, ignoreFalseConditions); string htdSummary = htdConditions.GenerateSummary(false, true, false, ignoreFalseConditions); - string atsSummary = atslConditions.GenerateSummary(false, true, false, ignoreFalseConditions); + string chmaSummary = chmaConditions.GenerateSummary(false, true, false, ignoreFalseConditions); + string atslSummary = atslConditions.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); @@ -1033,8 +1057,9 @@ struct XTestConditions hullSummary + separator + adxtdSummary + separator + htdSummary + separator + - atsSummary + separator + + atslSummary + separator + dmntSummary + separator + + chmaSummary + separator + "" // ; @@ -1096,6 +1121,7 @@ public: XSCXSSLCHelper *sslcHelper; XSCXHULLHelper *hullHelper; XSCXATSLHelper *atslHelper; + XSCXCHMAHelper *chmaHelper; XSCXDMNTHelper *dmntHelper; XSCXADXTDHelper *adxtdHelper; @@ -1127,6 +1153,7 @@ public: delete sslcHelper; delete hullHelper; delete atslHelper; + delete chmaHelper; delete dmntHelper; delete adxtdHelper; } @@ -1179,6 +1206,19 @@ public: return result; } + // + // XCHMA ... + chmaHelper = new XSCXCHMAHelper(); + result = chmaHelper.Init( + inputs.symbol, + inputs.period, + inputs.chmaInputs // + ); + if (!result) + { + return result; + } + // // XSLN ... slnHelper = new XSCXSLNHelper(); @@ -1507,6 +1547,17 @@ public: return result; } + // + result = chmaHelper.GetConditions( + conditions.chmaConditions, + barIndex, + loopback // + ); + if (!result) + { + return result; + } + // result = atslHelper.GetConditions( conditions.atslConditions,