This commit is contained in:
2025-04-29 02:57:02 +03:30
parent ab6a32c264
commit 2d24c65dda
+89 -2
View File
@@ -741,6 +741,34 @@ bool DetectXCAEAConditions(
double pSwingHigh = conditions.swingHighBuffer[pIDX];
double p2SwingHigh = conditions.swingHighBuffer[p2IDX];
//
// TREND ...
double zTrend = conditions.trendBuffer[zIDX];
double cTrend = conditions.trendBuffer[cIDX];
double pTrend = conditions.trendBuffer[pIDX];
double p2Trend = conditions.trendBuffer[p2IDX];
//
// KI ...
double zKI = conditions.kiBuffer[zIDX];
double cKI = conditions.kiBuffer[cIDX];
double pKI = conditions.kiBuffer[pIDX];
double p2KI = conditions.kiBuffer[p2IDX];
//
// TKI ...
double zTKI = conditions.tkiBuffer[zIDX];
double cTKI = conditions.tkiBuffer[cIDX];
double pTKI = conditions.tkiBuffer[pIDX];
double p2TKI = conditions.tkiBuffer[p2IDX];
//
// VIDYA ...
double zVIDYA = conditions.vidyaBuffer[zIDX];
double cVIDYA = conditions.vidyaBuffer[cIDX];
double pVIDYA = conditions.vidyaBuffer[pIDX];
double p2VIDYA = conditions.vidyaBuffer[p2IDX];
//
// X3MA ...
@@ -797,6 +825,58 @@ bool DetectXCAEAConditions(
double x3maBearishGapUpper = c3MASlow;
double x3maBearishGapLower = c3MAMedium;
//
double cTrendValues[7] = {
cKI,
cTKI,
cTrend,
cVIDYA,
c3MAFast,
c3MASlow,
c3MAMedium,
};
double pTrendValues[7] = {
pKI,
pTKI,
pTrend,
pVIDYA,
p3MAFast,
p3MASlow,
p3MAMedium,
};
//
double minCTrendValue = GetMin(cTrendValues);
double maxCTrendValue = GetMax(cTrendValues);
//
double minPTrendValue = GetMin(pTrendValues);
double maxPTrendValue = GetMax(pTrendValues);
//
double cTrendValuesRange = (maxCTrendValue - minCTrendValue);
double cTrendValuesRangePoint = (cTrendValuesRange / points);
//
double pTrendValuesRange = (maxPTrendValue - minPTrendValue);
double pTrendValuesRangePoint = (pTrendValuesRange / points);
//
bool isLowOverMax = cBar.low > maxCTrendValue;
bool isHighUnderMin = cBar.high < minCTrendValue;
bool isCloseOverMax = cBar.close > maxCTrendValue;
bool isCloseUnderMin = cBar.close < minCTrendValue;
//
bool isCTrendRangeValid = cTrendValuesRangePoint <= 50;
bool isPTrendRangeValid = pTrendValuesRangePoint <= 50;
//
bool isTrendRangeSwitchedToValid = isCTrendRangeValid &&
!isPTrendRangeValid;
bool isTrendRangeFinishedFromValid = !isCTrendRangeValid &&
isPTrendRangeValid;
//
// Create Conditions ...
@@ -928,7 +1008,7 @@ bool DetectXCAEAConditions(
//
bool isCond1Bullish =
//
// false && // TODO: Remove this ...
false && // TODO: Remove this ...
isVolumeOverAvg &&
isVolumeOverLast &&
conditions.isSarBullish &&
@@ -941,7 +1021,7 @@ bool DetectXCAEAConditions(
//
bool isCond1Bearish =
//
// false && // TODO: Remove this ...
false && // TODO: Remove this ...
isVolumeOverAvg &&
isVolumeOverLast &&
conditions.isSarBearish &&
@@ -977,12 +1057,17 @@ bool DetectXCAEAConditions(
//
// false &&
//
isVolumeOverAvg &&
isVolumeBullish &&
isVolumeOverLast &&
c3MASlowState > 0 &&
c3MAMediumState > 0 &&
cBar.GetUp() > pSar &&
conditions.isFastOverSlow &&
conditions.isVidyaBullish &&
conditions.isFastOverMedium &&
isTrendRangeFinishedFromValid &&
conditions.isSwingHighOverLast &&
conditions.isSarSwitchedToBullish
//
//
@@ -1214,6 +1299,8 @@ bool DetectXCAEAConditions(
p2Bar.Clean();
p3Bar.Clean();
p4Bar.Clean();
Clean(cTrendValues);
Clean(pTrendValues);
Clean(insidePivots);
pConditions.Clean();
rejectedPivot.Clean();