This commit is contained in:
2025-01-23 20:52:45 +03:30
parent aa3630bc82
commit 330c70088c
10 changed files with 3085 additions and 774 deletions
+33 -11
View File
@@ -230,12 +230,12 @@ struct X121Conditions
bool isVwapSlowSlopeBearish;
//
bool isRsiOverSold;
bool isRsiOverBought;
bool isRsiCrossedOverOverSold;
bool isRsiCrossedUnderOverSold;
bool isRsiCrossedOverOverBought;
bool isRsiCrossedUnderOverBought;
bool isRsiOverSold;
bool isRsiCrossedUnderOverSold;
bool isRsiCrossedOverOverSold;
//
bool isClosedOverAtrUpper;
@@ -252,11 +252,11 @@ struct X121Conditions
bool isRejectDownAtrLower;
//
bool isBreakUpAtrUpper;
bool isBreakedUpAtrUpper;
bool isBreakDownAtrUpper;
//
bool isBreakUpAtrLower;
bool isBreakedUpAtrLower;
bool isBreakDownAtrLower;
//
@@ -373,6 +373,12 @@ struct X121Conditions
bool isBreakedDownPrevCheSE1;
bool isBreakedDownPrevCheSE2;
//
bool isClosedOverCheMin;
bool isClosedOverCheMax;
bool isClosedUnderCheMin;
bool isClosedUnderCheMax;
//
bool isSarIncreased;
bool isSarDecreased;
@@ -702,11 +708,11 @@ struct X121Conditions
isRejectDownAtrLower = false;
//
isBreakUpAtrUpper = false;
isBreakedUpAtrUpper = false;
isBreakDownAtrUpper = false;
//
isBreakUpAtrLower = false;
isBreakedUpAtrLower = false;
isBreakDownAtrLower = false;
//
@@ -846,6 +852,14 @@ struct X121Conditions
isCheSwitchedToBullish = false;
isCheSwitchedToBearish = false;
//
isClosedOverCheMin = false;
isClosedOverCheMax = false;
//
isClosedUnderCheMin = false;
isClosedUnderCheMax = false;
//
// Complex Conditions ...
@@ -1114,9 +1128,9 @@ struct X121Conditions
ToString("isRejectDownAtrUpper", isRejectDownAtrUpper, ignoreFalseConditions, separator) +
ToString("isRejectUpAtrLower", isRejectUpAtrLower, ignoreFalseConditions, separator) +
ToString("isRejectDownAtrLower", isRejectDownAtrLower, ignoreFalseConditions, separator) +
ToString("isBreakUpAtrUpper", isBreakUpAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakedUpAtrUpper", isBreakedUpAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakDownAtrUpper", isBreakDownAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakUpAtrLower", isBreakUpAtrLower, ignoreFalseConditions, separator) +
ToString("isBreakedUpAtrLower", isBreakedUpAtrLower, ignoreFalseConditions, separator) +
//
"-----------------------" + separator +
"DON ..." + separator +
@@ -1181,6 +1195,10 @@ struct X121Conditions
ToString("isCheBearish", isCheBearish, ignoreFalseConditions, separator) +
ToString("isCheSwitchedToBullish", isCheSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("isCheSwitchedToBearish", isCheSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isClosedOverCheMin", isClosedOverCheMin, ignoreFalseConditions, separator) +
ToString("isClosedOverCheMax", isClosedOverCheMax, ignoreFalseConditions, separator) +
ToString("isClosedUnderCheMin", isClosedUnderCheMin, ignoreFalseConditions, separator) +
ToString("isClosedUnderCheMax", isClosedUnderCheMax, ignoreFalseConditions, separator) +
//
"-----------------------" + separator +
"Slopes ..." + separator +
@@ -1979,8 +1997,8 @@ class XCX121Helper : public XCBase
//
conditions.isRsiOverSold = xatrConditions.isRsiOverSold;
conditions.isRsiOverBought = xatrConditions.isRsiOverBought;
conditions.isBreakUpAtrUpper = xatrConditions.isBreakUpAtrUpper;
conditions.isBreakUpAtrLower = xatrConditions.isBreakUpAtrLower;
conditions.isBreakedUpAtrUpper = xatrConditions.isBreakedUpAtrUpper;
conditions.isBreakedUpAtrLower = xatrConditions.isBreakedUpAtrLower;
conditions.isClosedOverAtrUpper = xatrConditions.isClosedOverAtrUpper;
conditions.isRejectUpAtrUpper = xatrConditions.isRejectUpAtrUpper;
conditions.isRejectUpAtrLower = xatrConditions.isRejectUpAtrLower;
@@ -2104,6 +2122,10 @@ class XCX121Helper : public XCBase
conditions.isChe1Bearish = xcheConditions.isChe1Bearish;
conditions.isChe2Bullish = xcheConditions.isChe2Bullish;
conditions.isChe2Bearish = xcheConditions.isChe2Bearish;
conditions.isClosedOverCheMin = xcheConditions.isClosedOverCheMin;
conditions.isClosedOverCheMax = xcheConditions.isClosedOverCheMax;
conditions.isClosedUnderCheMin = xcheConditions.isClosedUnderCheMin;
conditions.isClosedUnderCheMax = xcheConditions.isClosedUnderCheMax;
conditions.isCheSwitchedToBullish = xcheConditions.isCheSwitchedToBullish;
conditions.isCheSwitchedToBearish = xcheConditions.isCheSwitchedToBearish;
conditions.isChe1SwitchedToBullish = xcheConditions.isChe1SwitchedToBullish;
+11 -11
View File
@@ -226,11 +226,11 @@ struct X121XATRConditions
bool isRejectDownAtrLower;
//
bool isBreakUpAtrUpper;
bool isBreakedUpAtrUpper;
bool isBreakDownAtrUpper;
//
bool isBreakUpAtrLower;
bool isBreakedUpAtrLower;
bool isBreakDownAtrLower;
//
@@ -312,11 +312,11 @@ struct X121XATRConditions
isRejectDownAtrLower = false;
//
isBreakUpAtrUpper = false;
isBreakedUpAtrUpper = false;
isBreakDownAtrUpper = false;
//
isBreakUpAtrLower = false;
isBreakedUpAtrLower = false;
isBreakDownAtrLower = false;
//
@@ -410,9 +410,9 @@ struct X121XATRConditions
ToString("isRejectDownAtrUpper", isRejectDownAtrUpper, ignoreFalseConditions, separator) +
ToString("isRejectUpAtrLower", isRejectUpAtrLower, ignoreFalseConditions, separator) +
ToString("isRejectDownAtrLower", isRejectDownAtrLower, ignoreFalseConditions, separator) +
ToString("isBreakUpAtrUpper", isBreakUpAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakedUpAtrUpper", isBreakedUpAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakDownAtrUpper", isBreakDownAtrUpper, ignoreFalseConditions, separator) +
ToString("isBreakUpAtrLower", isBreakUpAtrLower, ignoreFalseConditions, separator) +
ToString("isBreakedUpAtrLower", isBreakedUpAtrLower, ignoreFalseConditions, separator) +
ToString("isBreakDownAtrLower", isBreakDownAtrLower, ignoreFalseConditions, separator) +
//
""
@@ -1066,7 +1066,7 @@ class XCX121XATRHelper : public XCBaseHelper
;
//
bool isBreakUpAtrUpper = IsBarBreak(
bool isBreakedUpAtrUpper = IsBarBreak(
atrUpperBuffer[cIDX],
X_DIRECTION_BULLISH,
cBar //
@@ -1078,7 +1078,7 @@ class XCX121XATRHelper : public XCBaseHelper
);
//
bool isBreakUpAtrLower = IsBarBreak(
bool isBreakedUpAtrLower = IsBarBreak(
atrLowerBuffer[cIDX],
X_DIRECTION_BULLISH,
cBar //
@@ -1094,8 +1094,8 @@ class XCX121XATRHelper : public XCBaseHelper
conditions.isRsiOverBought = isRsiOverBought;
conditions.isRejectUpAtrUpper = isRejectUpAtrUpper;
conditions.isRejectUpAtrLower = isRejectUpAtrLower;
conditions.isBreakUpAtrUpper = isBreakUpAtrUpper;
conditions.isBreakUpAtrLower = isBreakUpAtrLower;
conditions.isBreakedUpAtrUpper = isBreakedUpAtrUpper;
conditions.isBreakedUpAtrLower = isBreakedUpAtrLower;
conditions.isRejectDownAtrUpper = isRejectDownAtrUpper;
conditions.isRejectDownAtrLower = isRejectDownAtrLower;
conditions.isClosedOverAtrUpper = isClosedOverAtrUpper;
@@ -1108,7 +1108,7 @@ class XCX121XATRHelper : public XCBaseHelper
conditions.isRsiCrossedUnderOverSold = isRsiCrossedUnderOverSold;
conditions.isRsiCrossedOverOverBought = isRsiCrossedOverOverBought;
conditions.isRsiCrossedUnderOverBought = isRsiCrossedUnderOverBought;
//
return result;
}
+69 -2
View File
@@ -200,7 +200,12 @@ struct X121XCHEConditions
bool isCheSwitchedToBearish;
//
// bool isCloseLower
bool isClosedOverCheMin;
bool isClosedOverCheMax;
//
bool isClosedUnderCheMin;
bool isClosedUnderCheMax;
//
// Constructor ...
@@ -274,7 +279,12 @@ struct X121XCHEConditions
isCheSwitchedToBearish = false;
//
// XDON ...
isClosedOverCheMin = false;
isClosedOverCheMax = false;
//
isClosedUnderCheMin = false;
isClosedUnderCheMax = false;
}
/**
@@ -359,6 +369,10 @@ struct X121XCHEConditions
ToString("isCheBearish", isCheBearish, ignoreFalseConditions, separator) +
ToString("isCheSwitchedToBullish", isCheSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("isCheSwitchedToBearish", isCheSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isClosedOverCheMin", isClosedOverCheMin, ignoreFalseConditions, separator) +
ToString("isClosedOverCheMax", isClosedOverCheMax, ignoreFalseConditions, separator) +
ToString("isClosedUnderCheMin", isClosedUnderCheMin, ignoreFalseConditions, separator) +
ToString("isClosedUnderCheMax", isClosedUnderCheMax, ignoreFalseConditions, separator) +
//
""
//
@@ -1108,6 +1122,55 @@ class XCX121XCHEHelper : public XCBaseHelper
!isCheBullishPrev;
bool isCheSwitchedToBearish = isCheBearish &&
!isCheBearishPrev;
//
double ches[];
double prevCheLE1 = le1Buffer[pIDX];
double prevCheLE2 = le2Buffer[pIDX];
double prevCheSE1 = se1Buffer[pIDX];
double prevCheSE2 = se2Buffer[pIDX];
if (prevCheLE1 != EMPTY_VALUE)
{
//
Add(
prevCheLE1,
ches //
);
}
if (prevCheLE2 != EMPTY_VALUE)
{
//
Add(
prevCheLE2,
ches //
);
}
if (prevCheSE1 != EMPTY_VALUE)
{
//
Add(
prevCheSE1,
ches //
);
}
if (prevCheSE2 != EMPTY_VALUE)
{
//
Add(
prevCheSE2,
ches //
);
}
//
double cheMin = GetMin(ches);
double cheMax = GetMax(ches);
//
bool isClosedOverCheMin = cBar.close > cheMin;
bool isClosedOverCheMax = cBar.close > cheMax;
bool isClosedUnderCheMin = cBar.close < cheMin;
bool isClosedUnderCheMax = cBar.close < cheMax;
//
conditions.isChe1Bullish = isChe1Bullish;
@@ -1122,6 +1185,10 @@ class XCX121XCHEHelper : public XCBaseHelper
conditions.isCheBearish = isCheBearish;
conditions.isCheSwitchedToBullish = isCheSwitchedToBullish;
conditions.isCheSwitchedToBearish = isCheSwitchedToBearish;
conditions.isClosedOverCheMin = isClosedOverCheMin;
conditions.isClosedOverCheMax = isClosedOverCheMax;
conditions.isClosedUnderCheMin = isClosedUnderCheMin;
conditions.isClosedUnderCheMax = isClosedUnderCheMax;
//
return result;