This commit is contained in:
2025-01-24 00:19:09 +03:30
parent 330c70088c
commit 030f3ee2ee
5 changed files with 260 additions and 204 deletions
+141 -89
View File
@@ -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;