This commit is contained in:
2024-12-31 21:50:07 +03:30
parent f1c9610896
commit 574eb85107
4 changed files with 171 additions and 108 deletions
@@ -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
//
;
+3 -3
View File
@@ -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();
+27 -102
View File
@@ -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 &&
@@ -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)
{
//