From e124e406d112cd94a1eac2dac63801c6ebc6cab4 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Sat, 9 Nov 2024 20:47:17 -0800 Subject: [PATCH] last ... --- Classes/z-saherelm.x-bar.analyser.class.mq5 | 339 +++++++++--------- .../x-121.smc.test.strategy.class.mq5 | Bin 145238 -> 151458 bytes 2 files changed, 168 insertions(+), 171 deletions(-) diff --git a/Classes/z-saherelm.x-bar.analyser.class.mq5 b/Classes/z-saherelm.x-bar.analyser.class.mq5 index 0ca2bf23..b11cb8ee 100644 --- a/Classes/z-saherelm.x-bar.analyser.class.mq5 +++ b/Classes/z-saherelm.x-bar.analyser.class.mq5 @@ -55,6 +55,174 @@ class XCBarAnalyser : public XSCBase // // Actions ... + /** + * Calculate Loopback Data for Specific Bar ... + * + * @param index: Integer, Bar Current Index ... + * @param start: Integer, Start of Loopback ... + * @param end: Integer, End of Loopback ... + * @param count: Integer, Number of Calculating Bars ... + * @param bar: XOHCL instance, Specified Bar ... + * @param loopback: Integer, Loopback Length ... + * @return ( bool ) + */ + bool CalculateLoopBackData( + int &index, + int &start, + int &end, + int &count, + XOHCL &bar, + int loopback = 1 // + ) + { + // + bool result = false; + + // + if (loopback < 1) + { + loopback = 1; + } + + // + index = -1; + start = -1; + end = -1; + count = -1; + + // + result = bar.IsValid(); + if (!result) + { + return result; + } + + // + index = bar.Index(); + start = index + 1; + end = start + loopback; + count = end - start; + result = count >= 1; + if (!result) + { + return result; + } + + // + return result; + } + + /** + * Retrieve Loopback HH & LL Data ... + * + * @param hhIDX: Integer, HH Index ... + * @param hh: Double, HH Value ... + * @param llIDX: Integer, LL Index ... + * @param ll: Double, LL Value ... + * @param bar: XOHCL instance ... + * @param loopback: Integer, Loopback Length ... + * + * @return ( bool ) + */ + bool CalculateLoopbackHLData( + int &hhIDX, + double &hh, + int &llIDX, + double &ll, + XOHCL &bar, + int loopback // + ) + { + // + bool result = false; + + // + if (loopback < 1) + { + loopback = 1; + } + + // + int index = -1; + int start = -1; + int end = -1; + int count = -1; + result = CalculateLoopBackData( + index, + start, + end, + count, + bar, + loopback // + ); + if (!result) + { + return result; + } + + // + hhIDX = iHighest( + bar.symbol, + bar.period, + MODE_HIGH, + count, + start // + ); + result = IsValidIndex(hhIDX); + if (!result) + { + return result; + } + + // + llIDX = iLowest( + bar.symbol, + bar.period, + MODE_LOW, + count, + start // + ); + result = IsValidIndex(llIDX); + if (!result) + { + return result; + } + + // + hh = iHigh( + bar.symbol, + bar.period, + hhIDX // + ); + ll = iLow( + bar.symbol, + bar.period, + llIDX // + ); + + // + return result; + } + + /** + * Calculate Bar Range ... + * + * @param bar: XOHCL instance ... + * + * @return ( double ) + */ + double GetBarRangePercent(XOHCL &bar) + { + // + double result = 0; + + // + result = bar.GetRange() / 100; + + // + return result; + } + // // Commons ... @@ -1176,177 +1344,6 @@ class XCBarAnalyser : public XSCBase protected: // - // - // Actions ... - - /** - * Calculate Loopback Data for Specific Bar ... - * - * @param index: Integer, Bar Current Index ... - * @param start: Integer, Start of Loopback ... - * @param end: Integer, End of Loopback ... - * @param count: Integer, Number of Calculating Bars ... - * @param bar: XOHCL instance, Specified Bar ... - * @param loopback: Integer, Loopback Length ... - * @return ( bool ) - */ - bool CalculateLoopBackData( - int &index, - int &start, - int &end, - int &count, - XOHCL &bar, - int loopback = 1 // - ) - { - // - bool result = false; - - // - if (loopback < 1) - { - loopback = 1; - } - - // - index = -1; - start = -1; - end = -1; - count = -1; - - // - result = bar.IsValid(); - if (!result) - { - return result; - } - - // - index = bar.Index(); - start = index + 1; - end = start + loopback; - count = end - start; - result = count >= 1; - if (!result) - { - return result; - } - - // - return result; - } - - /** - * Retrieve Loopback HH & LL Data ... - * - * @param hhIDX: Integer, HH Index ... - * @param hh: Double, HH Value ... - * @param llIDX: Integer, LL Index ... - * @param ll: Double, LL Value ... - * @param bar: XOHCL instance ... - * @param loopback: Integer, Loopback Length ... - * - * @return ( bool ) - */ - bool CalculateLoopbackHLData( - int &hhIDX, - double &hh, - int &llIDX, - double &ll, - XOHCL &bar, - int loopback // - ) - { - // - bool result = false; - - // - if (loopback < 1) - { - loopback = 1; - } - - // - int index = -1; - int start = -1; - int end = -1; - int count = -1; - result = CalculateLoopBackData( - index, - start, - end, - count, - bar, - loopback // - ); - if (!result) - { - return result; - } - - // - hhIDX = iHighest( - bar.symbol, - bar.period, - MODE_HIGH, - count, - start // - ); - result = IsValidIndex(hhIDX); - if (!result) - { - return result; - } - - // - llIDX = iLowest( - bar.symbol, - bar.period, - MODE_LOW, - count, - start // - ); - result = IsValidIndex(llIDX); - if (!result) - { - return result; - } - - // - hh = iHigh( - bar.symbol, - bar.period, - hhIDX // - ); - ll = iLow( - bar.symbol, - bar.period, - llIDX // - ); - - // - return result; - } - - /** - * Calculate Bar Range ... - * - * @param bar: XOHCL instance ... - * - * @return ( double ) - */ - double GetBarRangePercent(XOHCL &bar) - { - // - double result = 0; - - // - result = bar.GetRange() / 100; - - // - return result; - } - // private: // diff --git a/X121SMCEA/Strategy/x-121.smc.test.strategy.class.mq5 b/X121SMCEA/Strategy/x-121.smc.test.strategy.class.mq5 index 950c3ce690329b6246fb155d695ebb8227c02448..aee4184aef27f549f3ee1b6f8ba33409c80699a0 100644 GIT binary patch delta 2178 zcmcIlO-vI}5Pn-~Ev3*(A+;1t+qHj5fA|T9ic%C4FoMFtq|~Tg5mVxV#o|v0#uBa` zkTJfa#T%Y92*#USJ;B9;F~*Y@jiNCz#2%ctyKVXlm}r`I``*m^=6f^W?7aP|ee$^a zS-qpSp9~NiIY|UEO$55G5%;^Y)=N6>f-zkZmSwZKNOu7+8ZJ!%iC!UnN| zqe#R8$Er9PpqGNGMy>+{V+VZPQqx$c$_1(IKrldhk%CA@$xZxaWX6!#b^IjAWn7Pv zYlKl%h=OoBRGs4p>)sHe$Jw)*g_W4I6(_=6iyeCWP23DDwTDe2vM<7g@BB7wHEF;W zH13a(4l+oN!-Eg6ptyKOm=Yal8Ywc(PVxY_?v-y(DHfNzRj2a)I~?*qCc4$T+!@wSwTcgpg+z zp#pxsM;;#CY*JZjMJ(U#9N_S$KIf!-`4X^kGWlQ0%J_dn*4zoHj4>?Lo}7?WDPn$- zsGlKamDQ!(4RT*}f zciXl*$7oFQ--(gjfHFp|js=XGS9J!Naf!VGqatrQ$6grNI4kvz4_sFGu_~rbUdFtI z5)iP9PGb()6ZHvG4!bEpN|Xu1JZ}g{nJiFbFu#Ol5m|5LH0xtH(7LQHm7<+h zs1i3xF8`EU839(}CMyqLlHVfc;9j+++(fEw?EXQfHB-KN^6fo-qjz_`Wlx~ykjp)1 zB`&2Z%bsM~XIxNarhMJx+beS^bAqX@%fJSNm>UX7d1j?D^|0|9TpUX3u9b-UP#c?1+&C=#GC_CLp{!oH ztu!Ta(h{N`7yaqt;#BA1^u<81>E|JFMqN0MT#$~|LBQ1vZ=y$FXyjelC{~XZ93kDB_y@$C_vI0ZoC;b_F7gFj=d~efd1o92s>$0?i+awtpyM+;j&35zQs)