From 030f3ee2ee7321a5d86cbe067d5f543f85f3f10e Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Fri, 24 Jan 2025 00:19:09 +0330 Subject: [PATCH] last ... --- Helpers/x-saherelm.x121.helper.mq5 | 230 ++++++++++++------- Helpers/x-saherelm.x121.xatr.helper.mq5 | 60 ++--- Helpers/x-saherelm.x121.xdon.helper.mq5 | 160 ++++++------- Libraries/x-saherelm.common.lib.mq5 | 11 +- X121SMCEA/Signals/x-121.smc.x.signal.lib.mq5 | 3 +- 5 files changed, 260 insertions(+), 204 deletions(-) diff --git a/Helpers/x-saherelm.x121.helper.mq5 b/Helpers/x-saherelm.x121.helper.mq5 index a183cdb7..0c9a0d3b 100644 --- a/Helpers/x-saherelm.x121.helper.mq5 +++ b/Helpers/x-saherelm.x121.helper.mq5 @@ -244,44 +244,44 @@ struct X121Conditions bool isClosedUnderAtrLower; // - bool isRejectUpAtrUpper; - bool isRejectDownAtrUpper; + bool isRejectedUpAtrUpper; + bool isRejectedDownAtrUpper; // - bool isRejectUpAtrLower; - bool isRejectDownAtrLower; + bool isRejectedUpAtrLower; + bool isRejectedDownAtrLower; // bool isBreakedUpAtrUpper; - bool isBreakDownAtrUpper; + bool isBreakedDownAtrUpper; // bool isBreakedUpAtrLower; - bool isBreakDownAtrLower; + bool isBreakedDownAtrLower; // - bool isRejectDonOpenUpper; - bool isRejectDonHighUpper; - bool isRejectDonLowUpper; - bool isRejectDonCloseUpper; + bool isRejectedDonOpenUpper; + bool isRejectedDonHighUpper; + bool isRejectedDonLowUpper; + bool isRejectedDonCloseUpper; // - bool isRejectDonOpenLower; - bool isRejectDonHighLower; - bool isRejectDonLowLower; - bool isRejectDonCloseLower; + bool isRejectedDonOpenLower; + bool isRejectedDonHighLower; + bool isRejectedDonLowLower; + bool isRejectedDonCloseLower; // - bool isBreakDonOpenUpper; - bool isBreakDonHighUpper; - bool isBreakDonLowUpper; - bool isBreakDonCloseUpper; + bool isBreakedDonOpenUpper; + bool isBreakedDonHighUpper; + bool isBreakedDonLowUpper; + bool isBreakedDonCloseUpper; // - bool isBreakDonOpenLower; - bool isBreakDonHighLower; - bool isBreakDonLowLower; - bool isBreakDonCloseLower; + bool isBreakedDonOpenLower; + bool isBreakedDonHighLower; + bool isBreakedDonLowLower; + bool isBreakedDonCloseLower; // bool isSarBullish; @@ -423,6 +423,14 @@ struct X121Conditions bool isBreakedUpPrevAtrLower; bool isBreakedDownPrevAtrLower; + // + bool isRejectedUpPrevAtrUpper; + bool isRejectedDownPrevAtrUpper; + + // + bool isRejectedUpPrevAtrLower; + bool isRejectedDownPrevAtrLower; + // bool isSarEqualsToPeak; bool isSarEqualsToVale; @@ -700,47 +708,47 @@ struct X121Conditions isClosedUnderAtrLower = false; // - isRejectUpAtrUpper = false; - isRejectDownAtrUpper = false; + isRejectedUpAtrUpper = false; + isRejectedDownAtrUpper = false; // - isRejectUpAtrLower = false; - isRejectDownAtrLower = false; + isRejectedUpAtrLower = false; + isRejectedDownAtrLower = false; // isBreakedUpAtrUpper = false; - isBreakDownAtrUpper = false; + isBreakedDownAtrUpper = false; // isBreakedUpAtrLower = false; - isBreakDownAtrLower = false; + isBreakedDownAtrLower = false; // // DON ... // - isRejectDonOpenUpper = false; - isRejectDonHighUpper = false; - isRejectDonLowUpper = false; - isRejectDonCloseUpper = false; + isRejectedDonOpenUpper = false; + isRejectedDonHighUpper = false; + isRejectedDonLowUpper = false; + isRejectedDonCloseUpper = false; // - isRejectDonOpenLower = false; - isRejectDonHighLower = false; - isRejectDonLowLower = false; - isRejectDonCloseLower = false; + isRejectedDonOpenLower = false; + isRejectedDonHighLower = false; + isRejectedDonLowLower = false; + isRejectedDonCloseLower = false; // - isBreakDonOpenUpper = false; - isBreakDonHighUpper = false; - isBreakDonLowUpper = false; - isBreakDonCloseUpper = false; + isBreakedDonOpenUpper = false; + isBreakedDonHighUpper = false; + isBreakedDonLowUpper = false; + isBreakedDonCloseUpper = false; // - isBreakDonOpenLower = false; - isBreakDonHighLower = false; - isBreakDonLowLower = false; - isBreakDonCloseLower = false; + isBreakedDonOpenLower = false; + isBreakedDonHighLower = false; + isBreakedDonLowLower = false; + isBreakedDonCloseLower = false; // // SAR ... @@ -899,10 +907,18 @@ struct X121Conditions isBreakedUpPrevAtrUpper = false; isBreakedDownPrevAtrUpper = false; + // + isRejectedUpPrevAtrUpper = false; + isRejectedDownPrevAtrUpper = false; + // isBreakedUpPrevAtrLower = false; isBreakedDownPrevAtrLower = false; + // + isRejectedUpPrevAtrLower = false; + isRejectedDownPrevAtrLower = false; + // isBreakedUpPrevCheMin = false; isBreakedUpPrevCheMax = false; @@ -1124,34 +1140,34 @@ struct X121Conditions ToString("isClosedOverAtrLower", isClosedOverAtrLower, ignoreFalseConditions, separator) + ToString("isClosedUnderAtrUpper", isClosedUnderAtrUpper, ignoreFalseConditions, separator) + ToString("isClosedUnderAtrLower", isClosedUnderAtrLower, ignoreFalseConditions, separator) + - ToString("isRejectUpAtrUpper", isRejectUpAtrUpper, ignoreFalseConditions, separator) + - ToString("isRejectDownAtrUpper", isRejectDownAtrUpper, ignoreFalseConditions, separator) + - ToString("isRejectUpAtrLower", isRejectUpAtrLower, ignoreFalseConditions, separator) + - ToString("isRejectDownAtrLower", isRejectDownAtrLower, ignoreFalseConditions, separator) + + ToString("isRejectedUpAtrUpper", isRejectedUpAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDownAtrUpper", isRejectedDownAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedUpAtrLower", isRejectedUpAtrLower, ignoreFalseConditions, separator) + + ToString("isRejectedDownAtrLower", isRejectedDownAtrLower, ignoreFalseConditions, separator) + ToString("isBreakedUpAtrUpper", isBreakedUpAtrUpper, ignoreFalseConditions, separator) + - ToString("isBreakDownAtrUpper", isBreakDownAtrUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDownAtrUpper", isBreakedDownAtrUpper, ignoreFalseConditions, separator) + ToString("isBreakedUpAtrLower", isBreakedUpAtrLower, ignoreFalseConditions, separator) + // "-----------------------" + separator + "DON ..." + separator + "-----------------------" + separator + - ToString("isBreakDownAtrLower", isBreakDownAtrLower, ignoreFalseConditions, separator) + - ToString("isRejectDonOpenUpper", isRejectDonOpenUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonHighUpper", isRejectDonHighUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonLowUpper", isRejectDonLowUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonCloseUpper", isRejectDonCloseUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonOpenLower", isRejectDonOpenLower, ignoreFalseConditions, separator) + - ToString("isRejectDonHighLower", isRejectDonHighLower, ignoreFalseConditions, separator) + - ToString("isRejectDonLowLower", isRejectDonLowLower, ignoreFalseConditions, separator) + - ToString("isRejectDonCloseLower", isRejectDonCloseLower, ignoreFalseConditions, separator) + - ToString("isBreakDonOpenUpper", isBreakDonOpenUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonHighUpper", isBreakDonHighUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonLowUpper", isBreakDonLowUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonCloseUpper", isBreakDonCloseUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonOpenLower", isBreakDonOpenLower, ignoreFalseConditions, separator) + - ToString("isBreakDonHighLower", isBreakDonHighLower, ignoreFalseConditions, separator) + - ToString("isBreakDonLowLower", isBreakDonLowLower, ignoreFalseConditions, separator) + - ToString("isBreakDonCloseLower", isBreakDonCloseLower, ignoreFalseConditions, separator) + + ToString("isBreakedDownAtrLower", isBreakedDownAtrLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonOpenUpper", isRejectedDonOpenUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonHighUpper", isRejectedDonHighUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonLowUpper", isRejectedDonLowUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonCloseUpper", isRejectedDonCloseUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonOpenLower", isRejectedDonOpenLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonHighLower", isRejectedDonHighLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonLowLower", isRejectedDonLowLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonCloseLower", isRejectedDonCloseLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonOpenUpper", isBreakedDonOpenUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonHighUpper", isBreakedDonHighUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonLowUpper", isBreakedDonLowUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonCloseUpper", isBreakedDonCloseUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonOpenLower", isBreakedDonOpenLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonHighLower", isBreakedDonHighLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonLowLower", isBreakedDonLowLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonCloseLower", isBreakedDonCloseLower, ignoreFalseConditions, separator) + // "-----------------------" + separator + "VWAP ..." + separator + @@ -1224,7 +1240,7 @@ struct X121Conditions ToString("isSarIncreased", isSarIncreased, ignoreFalseConditions, separator) + ToString("isSarDecreased", isSarDecreased, ignoreFalseConditions, separator) + ToString("isSarEqualsToPeak", isSarEqualsToPeak, ignoreFalseConditions, separator) + - ToString("isSarEqualsToVale", isSarEqualsToVale, ignoreFalseConditions, separator) + + ToString("isStrEqualsToPeak", isStrEqualsToPeak, ignoreFalseConditions, separator) + ToString("isStrEqualsToVale", isStrEqualsToVale, ignoreFalseConditions, separator) + ToString("isPeakOverAtrUpper", isPeakOverAtrUpper, ignoreFalseConditions, separator) + @@ -1276,6 +1292,8 @@ struct X121Conditions ToString("isBreakedUpPrevAtrUpper", isBreakedUpPrevAtrUpper, ignoreFalseConditions, separator) + ToString("isBreakedUpPrevAtrLower", isBreakedUpPrevAtrLower, ignoreFalseConditions, separator) + ToString("isVWapFastCrossedOverMid", isVWapFastCrossedOverMid, ignoreFalseConditions, separator) + + ToString("isRejectedUpPrevAtrUpper", isRejectedUpPrevAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedUpPrevAtrLower", isRejectedUpPrevAtrLower, ignoreFalseConditions, separator) + ToString("isAtrUpperCrossedDownPeak", isAtrUpperCrossedDownPeak, ignoreFalseConditions, separator) + ToString("isAtrLowerCrossedDownVale", isAtrLowerCrossedDownVale, ignoreFalseConditions, separator) + ToString("isBreakedDownPrevAtrUpper", isBreakedDownPrevAtrUpper, ignoreFalseConditions, separator) + @@ -1286,6 +1304,8 @@ struct X121Conditions ToString("isStrLowerOverDonLowLower", isStrLowerOverDonLowLower, ignoreFalseConditions, separator) + ToString("isStrLowerCrossedOverVale", isStrLowerCrossedOverVale, ignoreFalseConditions, separator) + ToString("isDonLowLowerEqualsToVale", isDonLowLowerEqualsToVale, ignoreFalseConditions, separator) + + ToString("isRejectedDownPrevAtrUpper", isRejectedDownPrevAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDownPrevAtrLower", isRejectedDownPrevAtrLower, ignoreFalseConditions, separator) + ToString("isVWapFastCrossedUnderSlow", isVWapFastCrossedUnderSlow, ignoreFalseConditions, separator) + ToString("isStrUpperCrossedUnderPeak", isStrUpperCrossedUnderPeak, ignoreFalseConditions, separator) + ToString("isStrLowerCrossedUnderVale", isStrLowerCrossedUnderVale, ignoreFalseConditions, separator) + @@ -2000,15 +2020,15 @@ class XCX121Helper : public XCBase conditions.isBreakedUpAtrUpper = xatrConditions.isBreakedUpAtrUpper; conditions.isBreakedUpAtrLower = xatrConditions.isBreakedUpAtrLower; conditions.isClosedOverAtrUpper = xatrConditions.isClosedOverAtrUpper; - conditions.isRejectUpAtrUpper = xatrConditions.isRejectUpAtrUpper; - conditions.isRejectUpAtrLower = xatrConditions.isRejectUpAtrLower; + conditions.isRejectedUpAtrUpper = xatrConditions.isRejectedUpAtrUpper; + conditions.isRejectedUpAtrLower = xatrConditions.isRejectedUpAtrLower; conditions.isClosedOverAtrLower = xatrConditions.isClosedOverAtrLower; - conditions.isBreakDownAtrUpper = xatrConditions.isBreakDownAtrUpper; - conditions.isBreakDownAtrLower = xatrConditions.isBreakDownAtrLower; + conditions.isBreakedDownAtrUpper = xatrConditions.isBreakedDownAtrUpper; + conditions.isBreakedDownAtrLower = xatrConditions.isBreakedDownAtrLower; conditions.isClosedUnderAtrUpper = xatrConditions.isClosedUnderAtrUpper; conditions.isClosedUnderAtrLower = xatrConditions.isClosedUnderAtrLower; - conditions.isRejectDownAtrUpper = xatrConditions.isRejectDownAtrUpper; - conditions.isRejectDownAtrLower = xatrConditions.isRejectDownAtrLower; + conditions.isRejectedDownAtrUpper = xatrConditions.isRejectedDownAtrUpper; + conditions.isRejectedDownAtrLower = xatrConditions.isRejectedDownAtrLower; conditions.isRsiCrossedOverOverSold = xatrConditions.isRsiCrossedOverOverSold; conditions.isRsiCrossedUnderOverSold = xatrConditions.isRsiCrossedUnderOverSold; conditions.isRsiCrossedOverOverBought = xatrConditions.isRsiCrossedOverOverBought; @@ -2191,22 +2211,22 @@ class XCX121Helper : public XCBase // Conditions ... // - conditions.isBreakDonLowUpper = xdonConditions.isBreakDonLowUpper; - conditions.isBreakDonLowLower = xdonConditions.isBreakDonLowLower; - conditions.isRejectDonLowUpper = xdonConditions.isRejectDonLowUpper; - conditions.isRejectDonLowLower = xdonConditions.isRejectDonLowLower; - conditions.isBreakDonOpenUpper = xdonConditions.isBreakDonOpenUpper; - conditions.isBreakDonHighUpper = xdonConditions.isBreakDonHighUpper; - conditions.isBreakDonOpenLower = xdonConditions.isBreakDonOpenLower; - conditions.isBreakDonHighLower = xdonConditions.isBreakDonHighLower; - conditions.isRejectDonOpenUpper = xdonConditions.isRejectDonOpenUpper; - conditions.isRejectDonHighUpper = xdonConditions.isRejectDonHighUpper; - conditions.isRejectDonOpenLower = xdonConditions.isRejectDonOpenLower; - conditions.isRejectDonHighLower = xdonConditions.isRejectDonHighLower; - conditions.isBreakDonCloseUpper = xdonConditions.isBreakDonCloseUpper; - conditions.isBreakDonCloseLower = xdonConditions.isBreakDonCloseLower; - conditions.isRejectDonCloseUpper = xdonConditions.isRejectDonCloseUpper; - conditions.isRejectDonCloseLower = xdonConditions.isRejectDonCloseLower; + conditions.isBreakedDonLowUpper = xdonConditions.isBreakedDonLowUpper; + conditions.isBreakedDonLowLower = xdonConditions.isBreakedDonLowLower; + conditions.isRejectedDonLowUpper = xdonConditions.isRejectedDonLowUpper; + conditions.isRejectedDonLowLower = xdonConditions.isRejectedDonLowLower; + conditions.isBreakedDonOpenUpper = xdonConditions.isBreakedDonOpenUpper; + conditions.isBreakedDonHighUpper = xdonConditions.isBreakedDonHighUpper; + conditions.isBreakedDonOpenLower = xdonConditions.isBreakedDonOpenLower; + conditions.isBreakedDonHighLower = xdonConditions.isBreakedDonHighLower; + conditions.isRejectedDonOpenUpper = xdonConditions.isRejectedDonOpenUpper; + conditions.isRejectedDonHighUpper = xdonConditions.isRejectedDonHighUpper; + conditions.isRejectedDonOpenLower = xdonConditions.isRejectedDonOpenLower; + conditions.isRejectedDonHighLower = xdonConditions.isRejectedDonHighLower; + conditions.isBreakedDonCloseUpper = xdonConditions.isBreakedDonCloseUpper; + conditions.isBreakedDonCloseLower = xdonConditions.isBreakedDonCloseLower; + conditions.isRejectedDonCloseUpper = xdonConditions.isRejectedDonCloseUpper; + conditions.isRejectedDonCloseLower = xdonConditions.isRejectedDonCloseLower; // // XVWAP ... @@ -2505,6 +2525,34 @@ class XCX121Helper : public XCBase cBar // ); + // + bool isRejectedUpPrevAtrUpper = IsBarReject( + prevAtrUpper, + X_DIRECTION_BULLISH, + cBar // + ); + + // + bool isRejectedDownPrevAtrUpper = IsBarReject( + prevAtrUpper, + X_DIRECTION_BEARISH, + cBar // + ); + + // + bool isRejectedUpPrevAtrLower = IsBarReject( + prevAtrLower, + X_DIRECTION_BULLISH, + cBar // + ); + + // + bool isRejectedDownPrevAtrLower = IsBarReject( + prevAtrLower, + X_DIRECTION_BEARISH, + cBar // + ); + // bool isBreakedUpPrevAtrUpper = IsBarBreak( prevAtrUpper, @@ -2821,6 +2869,8 @@ class XCX121Helper : public XCBase conditions.isAtrUpperCrossedUpPeak = isAtrUpperCrossedUpPeak; conditions.isAtrLowerCrossedUpVale = isAtrLowerCrossedUpVale; conditions.isVWapFastCrossedOverMid = isVWapFastCrossedOverMid; + conditions.isRejectedUpPrevAtrUpper = isRejectedUpPrevAtrUpper; + conditions.isRejectedUpPrevAtrLower = isRejectedUpPrevAtrLower; conditions.isAtrUpperCrossedDownPeak = isAtrUpperCrossedDownPeak; conditions.isAtrLowerCrossedDownVale = isAtrLowerCrossedDownVale; conditions.isBreakedDownPrevAtrUpper = isBreakedDownPrevAtrUpper; @@ -2831,6 +2881,8 @@ class XCX121Helper : public XCBase conditions.isStrLowerCrossedOverVale = isStrLowerCrossedOverVale; conditions.isStrLowerOverDonLowLower = isStrLowerOverDonLowLower; conditions.isVWapFastCrossedOverSlow = isVWapFastCrossedOverSlow; + conditions.isRejectedDownPrevAtrUpper = isRejectedDownPrevAtrUpper; + conditions.isRejectedDownPrevAtrLower = isRejectedDownPrevAtrLower; conditions.isVWapFastCrossedUnderSlow = isVWapFastCrossedUnderSlow; conditions.isStrUpperOverDonHighUpper = isStrUpperOverDonHighUpper; conditions.isStrLowerUnderDonLowLower = isStrLowerUnderDonLowLower; diff --git a/Helpers/x-saherelm.x121.xatr.helper.mq5 b/Helpers/x-saherelm.x121.xatr.helper.mq5 index ad7f8d17..8ee75d0c 100644 --- a/Helpers/x-saherelm.x121.xatr.helper.mq5 +++ b/Helpers/x-saherelm.x121.xatr.helper.mq5 @@ -218,20 +218,20 @@ struct X121XATRConditions bool isClosedUnderAtrLower; // - bool isRejectUpAtrUpper; - bool isRejectDownAtrUpper; + bool isRejectedUpAtrUpper; + bool isRejectedDownAtrUpper; // - bool isRejectUpAtrLower; - bool isRejectDownAtrLower; + bool isRejectedUpAtrLower; + bool isRejectedDownAtrLower; // bool isBreakedUpAtrUpper; - bool isBreakDownAtrUpper; + bool isBreakedDownAtrUpper; // bool isBreakedUpAtrLower; - bool isBreakDownAtrLower; + bool isBreakedDownAtrLower; // // bool isCloseLower @@ -304,20 +304,20 @@ struct X121XATRConditions isClosedUnderAtrLower = false; // - isRejectUpAtrUpper = false; - isRejectDownAtrUpper = false; + isRejectedUpAtrUpper = false; + isRejectedDownAtrUpper = false; // - isRejectUpAtrLower = false; - isRejectDownAtrLower = false; + isRejectedUpAtrLower = false; + isRejectedDownAtrLower = false; // isBreakedUpAtrUpper = false; - isBreakDownAtrUpper = false; + isBreakedDownAtrUpper = false; // isBreakedUpAtrLower = false; - isBreakDownAtrLower = false; + isBreakedDownAtrLower = false; // // XDON ... @@ -406,14 +406,14 @@ struct X121XATRConditions ToString("isClosedOverAtrLower", isClosedOverAtrLower, ignoreFalseConditions, separator) + ToString("isClosedUnderAtrUpper", isClosedUnderAtrUpper, ignoreFalseConditions, separator) + ToString("isClosedUnderAtrLower", isClosedUnderAtrLower, ignoreFalseConditions, separator) + - ToString("isRejectUpAtrUpper", isRejectUpAtrUpper, ignoreFalseConditions, separator) + - ToString("isRejectDownAtrUpper", isRejectDownAtrUpper, ignoreFalseConditions, separator) + - ToString("isRejectUpAtrLower", isRejectUpAtrLower, ignoreFalseConditions, separator) + - ToString("isRejectDownAtrLower", isRejectDownAtrLower, ignoreFalseConditions, separator) + + ToString("isRejectedUpAtrUpper", isRejectedUpAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDownAtrUpper", isRejectedDownAtrUpper, ignoreFalseConditions, separator) + + ToString("isRejectedUpAtrLower", isRejectedUpAtrLower, ignoreFalseConditions, separator) + + ToString("isRejectedDownAtrLower", isRejectedDownAtrLower, ignoreFalseConditions, separator) + ToString("isBreakedUpAtrUpper", isBreakedUpAtrUpper, ignoreFalseConditions, separator) + - ToString("isBreakDownAtrUpper", isBreakDownAtrUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDownAtrUpper", isBreakedDownAtrUpper, ignoreFalseConditions, separator) + ToString("isBreakedUpAtrLower", isBreakedUpAtrLower, ignoreFalseConditions, separator) + - ToString("isBreakDownAtrLower", isBreakDownAtrLower, ignoreFalseConditions, separator) + + ToString("isBreakedDownAtrLower", isBreakedDownAtrLower, ignoreFalseConditions, separator) + // "" // @@ -1040,25 +1040,25 @@ class XCX121XATRHelper : public XCBaseHelper bool isClosedUnderAtrLower = cBar.close < conditions.atrLowerBuffer[cIDX]; // - bool isRejectUpAtrUpper = IsBarReject( + bool isRejectedUpAtrUpper = IsBarReject( atrUpperBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isRejectDownAtrUpper = IsBarReject( + bool isRejectedDownAtrUpper = IsBarReject( atrUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); // - bool isRejectUpAtrLower = IsBarReject( + bool isRejectedUpAtrLower = IsBarReject( atrLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); ; - bool isRejectDownAtrLower = IsBarReject( + bool isRejectedDownAtrLower = IsBarReject( atrLowerBuffer[cIDX], X_DIRECTION_BEARISH, cBar // @@ -1071,7 +1071,7 @@ class XCX121XATRHelper : public XCBaseHelper X_DIRECTION_BULLISH, cBar // ); - bool isBreakDownAtrUpper = IsBarBreak( + bool isBreakedDownAtrUpper = IsBarBreak( atrUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // @@ -1083,7 +1083,7 @@ class XCX121XATRHelper : public XCBaseHelper X_DIRECTION_BULLISH, cBar // ); - bool isBreakDownAtrLower = IsBarBreak( + bool isBreakedDownAtrLower = IsBarBreak( atrLowerBuffer[cIDX], X_DIRECTION_BEARISH, cBar // @@ -1092,16 +1092,16 @@ class XCX121XATRHelper : public XCBaseHelper // conditions.isRsiOverSold = isRsiOverSold; conditions.isRsiOverBought = isRsiOverBought; - conditions.isRejectUpAtrUpper = isRejectUpAtrUpper; - conditions.isRejectUpAtrLower = isRejectUpAtrLower; + conditions.isRejectedUpAtrUpper = isRejectedUpAtrUpper; + conditions.isRejectedUpAtrLower = isRejectedUpAtrLower; conditions.isBreakedUpAtrUpper = isBreakedUpAtrUpper; conditions.isBreakedUpAtrLower = isBreakedUpAtrLower; - conditions.isRejectDownAtrUpper = isRejectDownAtrUpper; - conditions.isRejectDownAtrLower = isRejectDownAtrLower; + conditions.isRejectedDownAtrUpper = isRejectedDownAtrUpper; + conditions.isRejectedDownAtrLower = isRejectedDownAtrLower; conditions.isClosedOverAtrUpper = isClosedOverAtrUpper; conditions.isClosedOverAtrLower = isClosedOverAtrLower; - conditions.isBreakDownAtrUpper = isBreakDownAtrUpper; - conditions.isBreakDownAtrLower = isBreakDownAtrLower; + conditions.isBreakedDownAtrUpper = isBreakedDownAtrUpper; + conditions.isBreakedDownAtrLower = isBreakedDownAtrLower; conditions.isClosedUnderAtrUpper = isClosedUnderAtrUpper; conditions.isClosedUnderAtrLower = isClosedUnderAtrLower; conditions.isRsiCrossedOverOverSold = isRsiCrossedOverOverSold; diff --git a/Helpers/x-saherelm.x121.xdon.helper.mq5 b/Helpers/x-saherelm.x121.xdon.helper.mq5 index c4bd5f69..d56bc3db 100644 --- a/Helpers/x-saherelm.x121.xdon.helper.mq5 +++ b/Helpers/x-saherelm.x121.xdon.helper.mq5 @@ -176,28 +176,28 @@ struct X121XDONConditions // Conditions ... // - bool isRejectDonOpenUpper; - bool isRejectDonHighUpper; - bool isRejectDonLowUpper; - bool isRejectDonCloseUpper; + bool isRejectedDonOpenUpper; + bool isRejectedDonHighUpper; + bool isRejectedDonLowUpper; + bool isRejectedDonCloseUpper; // - bool isRejectDonOpenLower; - bool isRejectDonHighLower; - bool isRejectDonLowLower; - bool isRejectDonCloseLower; + bool isRejectedDonOpenLower; + bool isRejectedDonHighLower; + bool isRejectedDonLowLower; + bool isRejectedDonCloseLower; // - bool isBreakDonOpenUpper; - bool isBreakDonHighUpper; - bool isBreakDonLowUpper; - bool isBreakDonCloseUpper; + bool isBreakedDonOpenUpper; + bool isBreakedDonHighUpper; + bool isBreakedDonLowUpper; + bool isBreakedDonCloseUpper; // - bool isBreakDonOpenLower; - bool isBreakDonHighLower; - bool isBreakDonLowLower; - bool isBreakDonCloseLower; + bool isBreakedDonOpenLower; + bool isBreakedDonHighLower; + bool isBreakedDonLowLower; + bool isBreakedDonCloseLower; // // Constructor ... @@ -247,28 +247,28 @@ struct X121XDONConditions // Conditions ... // - isRejectDonOpenUpper = false; - isRejectDonHighUpper = false; - isRejectDonLowUpper = false; - isRejectDonCloseUpper = false; + isRejectedDonOpenUpper = false; + isRejectedDonHighUpper = false; + isRejectedDonLowUpper = false; + isRejectedDonCloseUpper = false; // - isRejectDonOpenLower = false; - isRejectDonHighLower = false; - isRejectDonLowLower = false; - isRejectDonCloseLower = false; + isRejectedDonOpenLower = false; + isRejectedDonHighLower = false; + isRejectedDonLowLower = false; + isRejectedDonCloseLower = false; // - isBreakDonOpenUpper = false; - isBreakDonHighUpper = false; - isBreakDonLowUpper = false; - isBreakDonCloseUpper = false; + isBreakedDonOpenUpper = false; + isBreakedDonHighUpper = false; + isBreakedDonLowUpper = false; + isBreakedDonCloseUpper = false; // - isBreakDonOpenLower = false; - isBreakDonHighLower = false; - isBreakDonLowLower = false; - isBreakDonCloseLower = false; + isBreakedDonOpenLower = false; + isBreakedDonHighLower = false; + isBreakedDonLowLower = false; + isBreakedDonCloseLower = false; } /** @@ -341,25 +341,25 @@ struct X121XDONConditions // string conditionsStr = // - ToString("isRejectDonOpenUpper", isRejectDonOpenUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonHighUpper", isRejectDonHighUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonLowUpper", isRejectDonLowUpper, ignoreFalseConditions, separator) + - ToString("isRejectDonCloseUpper", isRejectDonCloseUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonOpenUpper", isRejectedDonOpenUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonHighUpper", isRejectedDonHighUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonLowUpper", isRejectedDonLowUpper, ignoreFalseConditions, separator) + + ToString("isRejectedDonCloseUpper", isRejectedDonCloseUpper, ignoreFalseConditions, separator) + // - ToString("isRejectDonOpenLower", isRejectDonOpenLower, ignoreFalseConditions, separator) + - ToString("isRejectDonHighLower", isRejectDonHighLower, ignoreFalseConditions, separator) + - ToString("isRejectDonLowLower", isRejectDonLowLower, ignoreFalseConditions, separator) + - ToString("isRejectDonCloseLower", isRejectDonCloseLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonOpenLower", isRejectedDonOpenLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonHighLower", isRejectedDonHighLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonLowLower", isRejectedDonLowLower, ignoreFalseConditions, separator) + + ToString("isRejectedDonCloseLower", isRejectedDonCloseLower, ignoreFalseConditions, separator) + // - ToString("isBreakDonOpenUpper", isBreakDonOpenUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonHighUpper", isBreakDonHighUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonLowUpper", isBreakDonLowUpper, ignoreFalseConditions, separator) + - ToString("isBreakDonCloseUpper", isBreakDonCloseUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonOpenUpper", isBreakedDonOpenUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonHighUpper", isBreakedDonHighUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonLowUpper", isBreakedDonLowUpper, ignoreFalseConditions, separator) + + ToString("isBreakedDonCloseUpper", isBreakedDonCloseUpper, ignoreFalseConditions, separator) + // - ToString("isBreakDonOpenLower", isBreakDonOpenLower, ignoreFalseConditions, separator) + - ToString("isBreakDonHighLower", isBreakDonHighLower, ignoreFalseConditions, separator) + - ToString("isBreakDonLowLower", isBreakDonLowLower, ignoreFalseConditions, separator) + - ToString("isBreakDonCloseLower", isBreakDonCloseLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonOpenLower", isBreakedDonOpenLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonHighLower", isBreakedDonHighLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonLowLower", isBreakedDonLowLower, ignoreFalseConditions, separator) + + ToString("isBreakedDonCloseLower", isBreakedDonCloseLower, ignoreFalseConditions, separator) + // "" // @@ -1092,110 +1092,110 @@ class XCX121XDONHelper : public XCBaseHelper int pIDX = cIDX + 1; // - bool isRejectDonOpenUpper = IsBarReject( + bool isRejectedDonOpenUpper = IsBarReject( donOpenUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isRejectDonHighUpper = IsBarReject( + bool isRejectedDonHighUpper = IsBarReject( donHighUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isRejectDonLowUpper = IsBarReject( + bool isRejectedDonLowUpper = IsBarReject( donLowUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isRejectDonCloseUpper = IsBarReject( + bool isRejectedDonCloseUpper = IsBarReject( donCloseUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); // - bool isRejectDonOpenLower = IsBarReject( + bool isRejectedDonOpenLower = IsBarReject( donOpenLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isRejectDonHighLower = IsBarReject( + bool isRejectedDonHighLower = IsBarReject( donHighLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isRejectDonLowLower = IsBarReject( + bool isRejectedDonLowLower = IsBarReject( donLowLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isRejectDonCloseLower = IsBarReject( + bool isRejectedDonCloseLower = IsBarReject( donCloseLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); // - bool isBreakDonOpenUpper = IsBarBreak( + bool isBreakedDonOpenUpper = IsBarBreak( donOpenUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isBreakDonHighUpper = IsBarBreak( + bool isBreakedDonHighUpper = IsBarBreak( donHighUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isBreakDonLowUpper = IsBarBreak( + bool isBreakedDonLowUpper = IsBarBreak( donLowUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); - bool isBreakDonCloseUpper = IsBarBreak( + bool isBreakedDonCloseUpper = IsBarBreak( donCloseUpperBuffer[cIDX], X_DIRECTION_BEARISH, cBar // ); // - bool isBreakDonOpenLower = IsBarBreak( + bool isBreakedDonOpenLower = IsBarBreak( donOpenLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isBreakDonHighLower = IsBarBreak( + bool isBreakedDonHighLower = IsBarBreak( donHighLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isBreakDonLowLower = IsBarBreak( + bool isBreakedDonLowLower = IsBarBreak( donLowLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); - bool isBreakDonCloseLower = IsBarBreak( + bool isBreakedDonCloseLower = IsBarBreak( donCloseLowerBuffer[cIDX], X_DIRECTION_BULLISH, cBar // ); // - conditions.isBreakDonLowUpper = isBreakDonLowUpper; - conditions.isBreakDonLowLower = isBreakDonLowLower; - conditions.isRejectDonLowUpper = isRejectDonLowUpper; - conditions.isRejectDonLowLower = isRejectDonLowLower; - conditions.isBreakDonOpenUpper = isBreakDonOpenUpper; - conditions.isBreakDonHighUpper = isBreakDonHighUpper; - conditions.isBreakDonOpenLower = isBreakDonOpenLower; - conditions.isBreakDonHighLower = isBreakDonHighLower; - conditions.isRejectDonOpenUpper = isRejectDonOpenUpper; - conditions.isRejectDonOpenLower = isRejectDonOpenLower; - conditions.isRejectDonHighUpper = isRejectDonHighUpper; - conditions.isRejectDonHighLower = isRejectDonHighLower; - conditions.isBreakDonCloseUpper = isBreakDonCloseUpper; - conditions.isBreakDonCloseLower = isBreakDonCloseLower; - conditions.isRejectDonCloseUpper = isRejectDonCloseUpper; - conditions.isRejectDonCloseLower = isRejectDonCloseLower; + conditions.isBreakedDonLowUpper = isBreakedDonLowUpper; + conditions.isBreakedDonLowLower = isBreakedDonLowLower; + conditions.isRejectedDonLowUpper = isRejectedDonLowUpper; + conditions.isRejectedDonLowLower = isRejectedDonLowLower; + conditions.isBreakedDonOpenUpper = isBreakedDonOpenUpper; + conditions.isBreakedDonHighUpper = isBreakedDonHighUpper; + conditions.isBreakedDonOpenLower = isBreakedDonOpenLower; + conditions.isBreakedDonHighLower = isBreakedDonHighLower; + conditions.isRejectedDonOpenUpper = isRejectedDonOpenUpper; + conditions.isRejectedDonOpenLower = isRejectedDonOpenLower; + conditions.isRejectedDonHighUpper = isRejectedDonHighUpper; + conditions.isRejectedDonHighLower = isRejectedDonHighLower; + conditions.isBreakedDonCloseUpper = isBreakedDonCloseUpper; + conditions.isBreakedDonCloseLower = isBreakedDonCloseLower; + conditions.isRejectedDonCloseUpper = isRejectedDonCloseUpper; + conditions.isRejectedDonCloseLower = isRejectedDonCloseLower; // return result; diff --git a/Libraries/x-saherelm.common.lib.mq5 b/Libraries/x-saherelm.common.lib.mq5 index a33fc7cb..2480adf4 100644 --- a/Libraries/x-saherelm.common.lib.mq5 +++ b/Libraries/x-saherelm.common.lib.mq5 @@ -6472,13 +6472,18 @@ bool IsBarReject( // result = + // isUp - ? bar.low < value && + ? bar.IsBullish() && + bar.low < value && bar.GetDown() > value : isDown - ? bar.high > value && + ? bar.IsBearish() && + bar.high > value && bar.GetUp() < value - : false; + : false + // + ; // return result; diff --git a/X121SMCEA/Signals/x-121.smc.x.signal.lib.mq5 b/X121SMCEA/Signals/x-121.smc.x.signal.lib.mq5 index 5f2549a0..204b4306 100644 --- a/X121SMCEA/Signals/x-121.smc.x.signal.lib.mq5 +++ b/X121SMCEA/Signals/x-121.smc.x.signal.lib.mq5 @@ -796,9 +796,8 @@ bool DetectX121SMCXSiganlSetup( // consolidationXConditions.isRsiSlopeBullish && // visionXConditions.isRsiCrossedOverOverSold // - // cBar.IsBullish() && decisionXConditions.isBreakedUpPrevAtrLower // && - // cBar.open > analyseXConditions.atrLowerBuffer[0] + // decisionXConditions.isRejectedPrevAtrLower // ;