From 574eb85107075f28990275376e32d146cbf3b908 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Tue, 31 Dec 2024 21:50:07 +0330 Subject: [PATCH] last ... --- .../BKP/1/x-121.smc.twpv.conditions2.mq5 | 137 ++++++++++++++++++ X121SMCEA/Experts/x-121.smc.expert.class.mq5 | 6 +- .../Signals/x-121.smc.xtwpv.signal.lib.mq5 | 129 ++++------------- .../Strategy/x-121.smc.strategy.class.mq5 | 7 +- 4 files changed, 171 insertions(+), 108 deletions(-) create mode 100644 Documents/BKP/1/x-121.smc.twpv.conditions2.mq5 diff --git a/Documents/BKP/1/x-121.smc.twpv.conditions2.mq5 b/Documents/BKP/1/x-121.smc.twpv.conditions2.mq5 new file mode 100644 index 00000000..ff6c2b3d --- /dev/null +++ b/Documents/BKP/1/x-121.smc.twpv.conditions2.mq5 @@ -0,0 +1,137 @@ + + // + // OPEN ... + double triggerDonOpenUpper = triggerConditions.x121Conditions.donOpenUpperBuffer[1]; + double triggerDonOpenLower = triggerConditions.x121Conditions.donOpenLowerBuffer[1]; + double triggerDonOpenUpperPrev = triggerConditions.x121Conditions.donOpenUpperBuffer[2]; + double triggerDonOpenLowerPrev = triggerConditions.x121Conditions.donOpenLowerBuffer[2]; + + // + // HIGH ... + double triggerDonHighUpper = triggerConditions.x121Conditions.donHighUpperBuffer[1]; + double triggerDonHighLower = triggerConditions.x121Conditions.donHighLowerBuffer[1]; + double triggerDonHighUpperPrev = triggerConditions.x121Conditions.donHighUpperBuffer[2]; + double triggerDonHighLowerPrev = triggerConditions.x121Conditions.donHighLowerBuffer[2]; + + // + // CLOSE ... + double triggerDonCloseUpper = triggerConditions.x121Conditions.donCloseUpperBuffer[1]; + double triggerDonCloseLower = triggerConditions.x121Conditions.donCloseLowerBuffer[1]; + double triggerDonCloseUpperPrev = triggerConditions.x121Conditions.donCloseUpperBuffer[2]; + double triggerDonCloseLowerPrev = triggerConditions.x121Conditions.donCloseLowerBuffer[2]; + + // + // LOW ... + double triggerDonLowUpper = triggerConditions.x121Conditions.donLowUpperBuffer[1]; + double triggerDonLowLower = triggerConditions.x121Conditions.donLowLowerBuffer[1]; + double triggerDonLowUpperPrev = triggerConditions.x121Conditions.donLowUpperBuffer[2]; + double triggerDonLowLowerPrev = triggerConditions.x121Conditions.donLowLowerBuffer[2]; + + // + // Calculate PBar Rejected Don Upper and Lower ... + + // + bool isPBarRejectDonLowUpper = pBar.high > triggerDonLowUpperPrev; + bool isPBarRejectDonOpenUpper = pBar.high > triggerDonOpenUpperPrev; + bool isPBarRejectDonCloseUpper = pBar.high > triggerDonCloseUpperPrev; + bool isPBarRejectedDonUpper = isPBarRejectDonLowUpper || + isPBarRejectDonOpenUpper || + isPBarRejectDonCloseUpper; + + // + bool isPBarRejectDonHighLower = pBar.low < triggerDonHighLowerPrev; + bool isPBarRejectDonOpenLower = pBar.low < triggerDonOpenLowerPrev; + bool isPBarRejectDonCloseLower = pBar.low < triggerDonCloseLowerPrev; + bool isPBarRejectedDonLower = isPBarRejectDonHighLower || + isPBarRejectDonOpenLower || + isPBarRejectDonCloseLower; + + // + // Calculate PBar Breaked Don Upper and Lower ... + + // + bool isPBarBreakdDonLowUpper = pBar.GetUp() > triggerDonLowUpperPrev && + pBar.GetDown() < triggerDonLowUpperPrev; + bool isPBarBreakdDonOpenUpper = pBar.GetUp() > triggerDonOpenUpperPrev && + pBar.GetDown() < triggerDonOpenUpperPrev; + bool isPBarBreakdDonCloseUpper = pBar.GetUp() > triggerDonCloseUpperPrev && + pBar.GetDown() < triggerDonCloseUpperPrev; + bool isPBarBreakedDonUpper = isPBarBreakdDonLowUpper || + isPBarBreakdDonOpenUpper || + isPBarBreakdDonCloseUpper; + + // + bool isPBarBreakdDonHighLower = pBar.GetUp() > triggerDonHighLowerPrev && + pBar.GetDown() < triggerDonHighLowerPrev; + bool isPBarBreakdDonOpenLower = pBar.GetUp() > triggerDonOpenLowerPrev && + pBar.GetDown() < triggerDonOpenLowerPrev; + bool isPBarBreakdDonCloseLower = pBar.GetUp() > triggerDonCloseLowerPrev && + pBar.GetDown() < triggerDonCloseLowerPrev; + bool isPBarBreakedDonLower = isPBarBreakdDonHighLower || + isPBarBreakdDonOpenLower || + isPBarBreakdDonCloseLower; + + // + bool isRejectTriggerDonUpper = + // + // PBar ... + isPBarBearishRejected && + isPBarRejectedDonUpper && + // + // CBar ... + isCBarBearishMomentumBar && + cBar.close < triggerDonLowUpper && + // + triggerPeak == triggerDonHighUpper + // + ; + + // + bool isRejectTriggerDonLower = + // + // PBar ... + isPBarBullishRejected && + isPBarRejectedDonLower && + // + // CBar ... + isCBarBullishMomentumBar && + cBar.close > triggerDonHighLower && + // + triggerVale == triggerDonLowLower + // + ; + + // + if (isRejectTriggerDonUpper || + isRejectTriggerDonLower) + { + Print("Don Rejected ..."); + } + + // + bool isBreakedDonUpper = + // + false + // + ; + + // + bool isBreakedDonLower = + // + false + // + ; + + // + bool isEngulfedDonUpper = + // + false + // + ; + + // + bool isEngulfedDonLower = + // + false + // + ; diff --git a/X121SMCEA/Experts/x-121.smc.expert.class.mq5 b/X121SMCEA/Experts/x-121.smc.expert.class.mq5 index d0b071f3..ef63e458 100644 --- a/X121SMCEA/Experts/x-121.smc.expert.class.mq5 +++ b/X121SMCEA/Experts/x-121.smc.expert.class.mq5 @@ -1023,9 +1023,9 @@ class XC121SMCExpert : public XCBaseExpert // // Initialize Trade Handler ... mTradeHandler = new XC121SMCTradeHandler(mTrader); - mTradeHandler.SaveTrades(true); - mTradeHandler.SaveSignals(true); - mTradeHandler.SaveConditions(true); + mTradeHandler.SaveTrades(false); + mTradeHandler.SaveSignals(false); + mTradeHandler.SaveConditions(false); // ReConfigureTradeHandler(); diff --git a/X121SMCEA/Signals/x-121.smc.xtwpv.signal.lib.mq5 b/X121SMCEA/Signals/x-121.smc.xtwpv.signal.lib.mq5 index 075d3e4a..74e3cc07 100644 --- a/X121SMCEA/Signals/x-121.smc.xtwpv.signal.lib.mq5 +++ b/X121SMCEA/Signals/x-121.smc.xtwpv.signal.lib.mq5 @@ -700,7 +700,7 @@ bool DetectX121SMCXTWPVSiganlSetup( // // Detect Trend Based On Peaks and Vales ... ENUM_X_DIRECTION trend; - bool hasTrend = analyseCycleHelper + bool hasTrend = triggerCycleHelper .HasPVDirection(trend); bool hasBullishTrend = hasTrend && IsBullish(trend); @@ -972,6 +972,16 @@ bool DetectX121SMCXTWPVSiganlSetup( double triggerPeak = triggerConditions.x121Conditions.peaksBuffer[1]; double triggerVale = triggerConditions.x121Conditions.valesBuffer[1]; + // + bool isNewTriggerPeak = triggerConditions.x121Conditions.isNewPeak; + bool isNewTriggerPeakOverLast = triggerConditions.x121Conditions.isNewPeakOverLast; + bool isNewTriggerPeakUnderLast = triggerConditions.x121Conditions.isNewPeakUnderLast; + + // + bool isNewTriggerVale = triggerConditions.x121Conditions.isNewVale; + bool isNewTriggerValeOverLast = triggerConditions.x121Conditions.isNewValeOverLast; + bool isNewTriggerValeUnderLast = triggerConditions.x121Conditions.isNewValeUnderLast; + // int condition2MinPVDiffPoint = 30; bool isAnalysePeakDiffPointPassed = analysePeakDiff >= (condition2MinPVDiffPoint * points); @@ -1025,117 +1035,32 @@ bool DetectX121SMCXTWPVSiganlSetup( double triggerDonLowLowerPrev = triggerConditions.x121Conditions.donLowLowerBuffer[2]; // - // Calculate PBar Rejected Don Upper and Lower ... + double triggerAtr = triggerConditions.x121Conditions.atrBuffer[1]; + double triggerUpperAtr = triggerConditions.x121Conditions.atrUpperBuffer[1]; + double triggerLowerAtr = triggerConditions.x121Conditions.atrLowerBuffer[1]; // - bool isPBarRejectDonLowUpper = pBar.high > triggerDonLowUpperPrev; - bool isPBarRejectDonOpenUpper = pBar.high > triggerDonOpenUpperPrev; - bool isPBarRejectDonCloseUpper = pBar.high > triggerDonCloseUpperPrev; - bool isPBarRejectedDonUpper = isPBarRejectDonLowUpper || - isPBarRejectDonOpenUpper || - isPBarRejectDonCloseUpper; - - // - bool isPBarRejectDonHighLower = pBar.low < triggerDonHighLowerPrev; - bool isPBarRejectDonOpenLower = pBar.low < triggerDonOpenLowerPrev; - bool isPBarRejectDonCloseLower = pBar.low < triggerDonCloseLowerPrev; - bool isPBarRejectedDonLower = isPBarRejectDonHighLower || - isPBarRejectDonOpenLower || - isPBarRejectDonCloseLower; - - // - // Calculate PBar Breaked Don Upper and Lower ... - - // - bool isPBarBreakdDonLowUpper = pBar.GetUp() > triggerDonLowUpperPrev && - pBar.GetDown() < triggerDonLowUpperPrev; - bool isPBarBreakdDonOpenUpper = pBar.GetUp() > triggerDonOpenUpperPrev && - pBar.GetDown() < triggerDonOpenUpperPrev; - bool isPBarBreakdDonCloseUpper = pBar.GetUp() > triggerDonCloseUpperPrev && - pBar.GetDown() < triggerDonCloseUpperPrev; - bool isPBarBreakedDonUpper = isPBarBreakdDonLowUpper || - isPBarBreakdDonOpenUpper || - isPBarBreakdDonCloseUpper; - - // - bool isPBarBreakdDonHighLower = pBar.GetUp() > triggerDonHighLowerPrev && - pBar.GetDown() < triggerDonHighLowerPrev; - bool isPBarBreakdDonOpenLower = pBar.GetUp() > triggerDonOpenLowerPrev && - pBar.GetDown() < triggerDonOpenLowerPrev; - bool isPBarBreakdDonCloseLower = pBar.GetUp() > triggerDonCloseLowerPrev && - pBar.GetDown() < triggerDonCloseLowerPrev; - bool isPBarBreakedDonLower = isPBarBreakdDonHighLower || - isPBarBreakdDonOpenLower || - isPBarBreakdDonCloseLower; - - // - bool isRejectDonUpper = + bool isNewTriggerPeakOverAtrUpper = // - // PBar ... - isPBarBearishRejected && - isPBarRejectedDonUpper && - // - // CBar ... - isCBarBearishMomentumBar && - cBar.close < triggerDonLowUpper && - // - triggerPeak == triggerDonHighUpper && - // - true + isNewTriggerPeak && + triggerPeak > triggerUpperAtr // ; // - bool isRejectDonLower = + bool isNewTriggerValeUnderAtrLower = // - // PBar ... - isPBarBullishRejected && - isPBarRejectedDonLower && - // - // CBar ... - isCBarBullishMomentumBar && - cBar.close > triggerDonHighLower && - // - triggerVale == triggerDonLowLower && - // - true - // - ; - - // // - // if (isRejectDonUpper || - // isRejectDonLower) - // { - // Print("Don Rejected ..."); - // } - - // - bool isBreakedDonUpper = - // - false + isNewTriggerVale && + triggerVale < triggerLowerAtr // ; // - bool isBreakedDonLower = - // - false - // - ; - - // - bool isEngulfedDonUpper = - // - false - // - ; - - // - bool isEngulfedDonLower = - // - false - // - ; + if (isNewTriggerPeakOverAtrUpper || + isNewTriggerValeUnderAtrLower) + { + Print("ATR Break ..."); + } // // Method 1 ... @@ -1144,7 +1069,7 @@ bool DetectX121SMCXTWPVSiganlSetup( // Bullish Conditions 1 ... bool bullishConditions1 = // - // false && + false && hasBullishTrend && isBullishFiboPassed && hasConsolidationZone && @@ -1166,7 +1091,7 @@ bool DetectX121SMCXTWPVSiganlSetup( // Bearish Conditions 1 ... bool bearishConditions1 = // - // false && + false && hasBearishTrend && isBearishFiboPassed && hasConsolidationZone && diff --git a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 index 7d5d00b8..c0662305 100644 --- a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 +++ b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 @@ -266,9 +266,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // bool canReplaceTarget = - hasLong - ? signal.target > signal.tp - : signal.target < signal.tp; + signal.target > 0 && + (hasLong + ? signal.target > signal.tp + : signal.target < signal.tp); if (canReplaceTarget) { //