This commit is contained in:
2024-12-30 03:08:21 +03:30
parent b5003968bc
commit 4094a92949
9 changed files with 833 additions and 267 deletions
@@ -1398,6 +1398,53 @@ class XC121SMCCycleHelper : public XCBase
return result;
}
/**
* Detect Market Structure based on Peaks and Vales ...
*
* @param dir: ENUM_X_DIRECTION member Reference ...
* @param minVerification: Integer ...
*
* @return ( bool )
*/
bool HasPVDirection(
ENUM_X_DIRECTION &dir,
int minVerification = 12 //
)
{
//
bool result = false;
//
if (minVerification < 7)
{
minVerification = 7;
}
//
dir = X_DIRECTION_NONE;
//
int bullishSum = mBullishPeaks + mBullishVales;
int bearishSum = mBearishPeaks + mBearishVales;
//
int diff = MathAbs(bullishSum - bearishSum);
bool isDiffPassed = diff >= minVerification;
result = isDiffPassed;
if (!result)
{
return result;
}
//
dir = bullishSum > bearishSum
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
//
return result;
}
//
// Change Values Actions ...
@@ -2180,7 +2227,9 @@ class XC121SMCCycleHelper : public XCBase
//
bool isNewPeak = conditions.x121Conditions.isNewPeak;
double peak = conditions.x121Conditions.peaksBuffer[0];
double peak = conditions.x121Conditions.peaksBuffer[1];
double peakPrev = conditions.x121Conditions.peaksBuffer[2];
bool isPeakSameAsPrev = peak == peakPrev;
bool isNewPeakOverLast = conditions.x121Conditions.isNewPeakOverLast;
bool isNewPeakUnderLast = conditions.x121Conditions.isNewPeakUnderLast;
@@ -2229,7 +2278,9 @@ class XC121SMCCycleHelper : public XCBase
//
bool isNewVale = conditions.x121Conditions.isNewVale;
double vale = conditions.x121Conditions.valesBuffer[0];
double vale = conditions.x121Conditions.valesBuffer[1];
double valePrev = conditions.x121Conditions.valesBuffer[2];
bool isValeSameAsPrev = vale == valePrev;
bool isNewValeOverLast = conditions.x121Conditions.isNewValeOverLast;
bool isNewValeUnderLast = conditions.x121Conditions.isNewValeUnderLast;
@@ -2273,6 +2324,99 @@ class XC121SMCCycleHelper : public XCBase
}
}
//
// Count Bullish / Bearish Peaks and Vales ...
//
// Peaks ...
//
if (isNewPeakOverLast)
{
//
mBullishPeaks++;
mIsLastPeakBullish = true;
}
//
if (isNewPeakUnderLast)
{
//
mBearishPeaks++;
mIsLastPeakBullish = false;
}
//
if (isPeakSameAsPrev)
{
//
if (mIsLastPeakBullish)
{
//
mBullishPeaks++;
mBearishPeaks--;
if (mBearishPeaks < 0)
{
mBearishPeaks = 0;
}
}
else
{
//
mBullishPeaks--;
mBearishPeaks++;
if (mBullishPeaks < 0)
{
mBullishPeaks = 0;
}
}
}
//
// Vales ...
//
if (isNewValeOverLast)
{
//
mBullishVales++;
mIsLastValeBullish = true;
}
//
if (isNewValeUnderLast)
{
//
mBearishVales++;
mIsLastValeBullish = false;
}
//
if (isValeSameAsPrev)
{
//
if (mIsLastValeBullish)
{
//
mBullishVales++;
mBearishVales--;
if (mBearishVales < 0)
{
mBearishVales = 0;
}
}
else
{
//
mBullishVales--;
mBearishVales++;
if (mBullishVales < 0)
{
mBullishVales = 0;
}
}
}
//
// VWap Direction Change ...
@@ -2962,6 +3106,16 @@ class XC121SMCCycleHelper : public XCBase
//
// Props ...
//
bool mIsLastPeakBullish;
int mBullishPeaks; // Count Bullish Peaks ...
int mBearishPeaks; // Count Bearish Peaks ...
//
bool mIsLastValeBullish;
int mBullishVales; // Count Bullish Vales ...
int mBearishVales; // Count Bearish Vales ...
//
// Change Holders ...
int mMaxAllowedSavedChanges; // Max llowed Changes to Save ...