add some new conditions to XPV and also implement usage of XRL in setup class ...

This commit is contained in:
2024-07-01 14:27:18 +03:30
parent 0add5e2e16
commit 852de5889d
3 changed files with 244 additions and 4 deletions
+185 -1
View File
@@ -391,6 +391,37 @@ struct XPVConditions
bool isHCHHSwitchedToBearish;
bool isHCLLSwitchedToBeraish;
//
// Fibonachi Conditions ...
//
bool isCloseOverFib1;
bool isCloseOverFib2;
bool isCloseOverFib3;
bool isCloseOverFib4;
bool isCloseOverFib5;
//
bool isCloseUnderFib1;
bool isCloseUnderFib2;
bool isCloseUnderFib3;
bool isCloseUnderFib4;
bool isCloseUnderFib5;
//
bool isCloseCrossedOverFib1;
bool isCloseCrossedOverFib2;
bool isCloseCrossedOverFib3;
bool isCloseCrossedOverFib4;
bool isCloseCrossedOverFib5;
//
bool isCloseCrossedUnderFib1;
bool isCloseCrossedUnderFib2;
bool isCloseCrossedUnderFib3;
bool isCloseCrossedUnderFib4;
bool isCloseCrossedUnderFib5;
//
void Clean()
{
@@ -442,6 +473,26 @@ struct XPVConditions
isFiboIncreased = false;
isFiboDecreased = false;
isFiboSectionChanged = false;
isCloseOverFib1 = false;
isCloseOverFib2 = false;
isCloseOverFib3 = false;
isCloseOverFib4 = false;
isCloseOverFib5 = false;
isCloseUnderFib1 = false;
isCloseUnderFib2 = false;
isCloseUnderFib3 = false;
isCloseUnderFib4 = false;
isCloseUnderFib5 = false;
isCloseCrossedOverFib1 = false;
isCloseCrossedOverFib2 = false;
isCloseCrossedOverFib3 = false;
isCloseCrossedOverFib4 = false;
isCloseCrossedOverFib5 = false;
isCloseCrossedUnderFib1 = false;
isCloseCrossedUnderFib2 = false;
isCloseCrossedUnderFib3 = false;
isCloseCrossedUnderFib4 = false;
isCloseCrossedUnderFib5 = false;
isSCBullish = false;
isSCHHBullish = false;
isSCLLBullish = false;
@@ -793,6 +844,26 @@ struct XPVConditions
ToString("isFiboIncreased", isFiboIncreased, ignoreFalseConditions, separator) +
ToString("isFiboDecreased", isFiboDecreased, ignoreFalseConditions, separator) +
ToString("isFiboSectionChanged", isFiboSectionChanged, ignoreFalseConditions, separator) +
ToString("isCloseOverFib1", isCloseOverFib1, ignoreFalseConditions, separator) +
ToString("isCloseOverFib2", isCloseOverFib2, ignoreFalseConditions, separator) +
ToString("isCloseOverFib3", isCloseOverFib3, ignoreFalseConditions, separator) +
ToString("isCloseOverFib4", isCloseOverFib4, ignoreFalseConditions, separator) +
ToString("isCloseOverFib5", isCloseOverFib5, ignoreFalseConditions, separator) +
ToString("isCloseUnderFib1", isCloseUnderFib1, ignoreFalseConditions, separator) +
ToString("isCloseUnderFib2", isCloseUnderFib2, ignoreFalseConditions, separator) +
ToString("isCloseUnderFib3", isCloseUnderFib3, ignoreFalseConditions, separator) +
ToString("isCloseUnderFib4", isCloseUnderFib4, ignoreFalseConditions, separator) +
ToString("isCloseUnderFib5", isCloseUnderFib5, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverFib1", isCloseCrossedOverFib1, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverFib2", isCloseCrossedOverFib2, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverFib3", isCloseCrossedOverFib3, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverFib4", isCloseCrossedOverFib4, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverFib5", isCloseCrossedOverFib5, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderFib1", isCloseCrossedUnderFib1, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderFib2", isCloseCrossedUnderFib2, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderFib3", isCloseCrossedUnderFib3, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderFib4", isCloseCrossedUnderFib4, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderFib5", isCloseCrossedUnderFib5, ignoreFalseConditions, separator) +
ToString("isSCBullish", isSCBullish, ignoreFalseConditions, separator) +
ToString("isSCHHBullish", isSCHHBullish, ignoreFalseConditions, separator) +
ToString("isSCLLBullish", isSCLLBullish, ignoreFalseConditions, separator) +
@@ -841,6 +912,7 @@ struct XPVConditions
ToString("isHCSwitchedToBearish", isHCSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isHCHHSwitchedToBearish", isHCHHSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isHCLLSwitchedToBeraish", isHCLLSwitchedToBeraish, ignoreFalseConditions, separator) +
//
""
//
;
@@ -2711,6 +2783,97 @@ public:
//
;
//
// Define Bars For Calculations ...
//
XOHCL cBar;
result = cBar.Init(
mSymbol,
mPeriod,
cIndex //
);
if (!result)
{
return result;
}
//
XOHCL pBar;
result = pBar.Init(
mSymbol,
mPeriod,
pIndex //
);
if (!result)
{
return result;
}
//
bool isCloseOverFib1 = cBar.close > conditions.fib1s[cIndex];
bool isCloseOverFib1Prev = pBar.close > conditions.fib1s[pIndex];
//
bool isCloseOverFib2 = cBar.close > conditions.fib2s[cIndex];
bool isCloseOverFib2Prev = pBar.close > conditions.fib2s[pIndex];
//
bool isCloseOverFib3 = cBar.close > conditions.fib3s[cIndex];
bool isCloseOverFib3Prev = pBar.close > conditions.fib3s[pIndex];
//
bool isCloseOverFib4 = cBar.close > conditions.fib4s[cIndex];
bool isCloseOverFib4Prev = pBar.close > conditions.fib4s[pIndex];
//
bool isCloseOverFib5 = cBar.close > conditions.fib5s[cIndex];
bool isCloseOverFib5Prev = pBar.close > conditions.fib5s[pIndex];
//
bool isCloseUnderFib1 = cBar.close < conditions.fib1s[cIndex];
bool isCloseUnderFib1Prev = pBar.close < conditions.fib1s[pIndex];
//
bool isCloseUnderFib2 = cBar.close < conditions.fib2s[cIndex];
bool isCloseUnderFib2Prev = pBar.close < conditions.fib2s[pIndex];
//
bool isCloseUnderFib3 = cBar.close < conditions.fib3s[cIndex];
bool isCloseUnderFib3Prev = pBar.close < conditions.fib3s[pIndex];
//
bool isCloseUnderFib4 = cBar.close < conditions.fib4s[cIndex];
bool isCloseUnderFib4Prev = pBar.close < conditions.fib4s[pIndex];
//
bool isCloseUnderFib5 = cBar.close < conditions.fib5s[cIndex];
bool isCloseUnderFib5Prev = pBar.close < conditions.fib5s[pIndex];
//
bool isCloseCrossedOverFib1 = isCloseOverFib1 &&
!isCloseOverFib1Prev;
bool isCloseCrossedOverFib2 = isCloseOverFib2 &&
!isCloseOverFib2Prev;
bool isCloseCrossedOverFib3 = isCloseOverFib3 &&
!isCloseOverFib3Prev;
bool isCloseCrossedOverFib4 = isCloseOverFib4 &&
!isCloseOverFib4Prev;
bool isCloseCrossedOverFib5 = isCloseOverFib5 &&
!isCloseOverFib5Prev;
//
bool isCloseCrossedUnderFib1 = isCloseUnderFib1 &&
!isCloseUnderFib1Prev;
bool isCloseCrossedUnderFib2 = isCloseUnderFib2 &&
!isCloseUnderFib2Prev;
bool isCloseCrossedUnderFib3 = isCloseUnderFib3 &&
!isCloseUnderFib3Prev;
bool isCloseCrossedUnderFib4 = isCloseUnderFib4 &&
!isCloseUnderFib4Prev;
bool isCloseCrossedUnderFib5 = isCloseUnderFib5 &&
!isCloseUnderFib5Prev;
//
conditions.isNewPeak = isNewPeak;
conditions.isNewPeakOverLast = isNewPeakOverLast;
@@ -2721,6 +2884,26 @@ public:
conditions.isFiboIncreased = isFiboIncreased;
conditions.isFiboDecreased = isFiboDecreased;
conditions.isFiboSectionChanged = isFiboSectionChanged;
conditions.isCloseOverFib1 = isCloseOverFib1;
conditions.isCloseOverFib2 = isCloseOverFib2;
conditions.isCloseOverFib3 = isCloseOverFib3;
conditions.isCloseOverFib4 = isCloseOverFib4;
conditions.isCloseOverFib5 = isCloseOverFib5;
conditions.isCloseUnderFib1 = isCloseUnderFib1;
conditions.isCloseUnderFib2 = isCloseUnderFib2;
conditions.isCloseUnderFib3 = isCloseUnderFib3;
conditions.isCloseUnderFib4 = isCloseUnderFib4;
conditions.isCloseUnderFib5 = isCloseUnderFib5;
conditions.isCloseCrossedOverFib1 = isCloseCrossedOverFib1;
conditions.isCloseCrossedOverFib2 = isCloseCrossedOverFib2;
conditions.isCloseCrossedOverFib3 = isCloseCrossedOverFib3;
conditions.isCloseCrossedOverFib4 = isCloseCrossedOverFib4;
conditions.isCloseCrossedOverFib5 = isCloseCrossedOverFib5;
conditions.isCloseCrossedUnderFib1 = isCloseCrossedUnderFib1;
conditions.isCloseCrossedUnderFib2 = isCloseCrossedUnderFib2;
conditions.isCloseCrossedUnderFib3 = isCloseCrossedUnderFib3;
conditions.isCloseCrossedUnderFib4 = isCloseCrossedUnderFib4;
conditions.isCloseCrossedUnderFib5 = isCloseCrossedUnderFib5;
conditions.isSCBullish = isSCBullish;
conditions.isSCHHBullish = isSCHHBullish;
conditions.isSCLLBullish = isSCLLBullish;
@@ -2812,7 +2995,8 @@ private:
{
//
int totalBars = CountBars();
if (totalBars > 1000) {
if (totalBars > 1000)
{
totalBars = 1000;
}