add supports for MANALYSER and attached it to XCAEAHelper ...

This commit is contained in:
2025-04-29 11:11:35 +03:30
parent f7e8e1c5bf
commit 4974e10e0c
4 changed files with 1408 additions and 105 deletions
+428 -77
View File
@@ -261,6 +261,9 @@ struct XCAEAConditions
double hHHBuffer[];
double hLLBuffer[];
double sarBuffer[];
double mahBuffer[];
double malBuffer[];
double macBuffer[];
double peakBuffer[];
double valeBuffer[];
double vidyaBuffer[];
@@ -270,13 +273,13 @@ struct XCAEAConditions
double tkiStateBuffer[];
double swingLowBuffer[];
double swingHighBuffer[];
double vidyaStateBuffer[];
double resistanceBuffer[];
double peakGoldenBuffer[];
double valeGoldenBuffer[];
double fiboLevel1Buffer[];
double fiboLevel2Buffer[];
double fiboLevel3Buffer[];
double vidyaStateBuffer[];
double trendStateBuffer[];
//
@@ -354,6 +357,66 @@ struct XCAEAConditions
bool isSarFinishedFromBullish;
bool isSarFinishedFromBearish;
//
// MANALYSER ...
//
// MAH ...
//
bool isOverMah;
bool isUnderMah;
bool isCrossedOverMah;
bool isCrossedUnderMah;
//
bool isCloseOverMah;
bool isCloseUnderMah;
bool isCloseCrossedOverMah;
bool isCloseCrossedUnderMah;
//
bool isMahBullishRejected;
bool isMahBearishRejected;
//
// MAL ...
//
bool isOverMal;
bool isUnderMal;
bool isCrossedOverMal;
bool isCrossedUnderMal;
//
bool isCloseOverMal;
bool isCloseUnderMal;
bool isCloseCrossedOverMal;
bool isCloseCrossedUnderMal;
//
bool isMalBullishRejected;
bool isMalBearishRejected;
//
// MAC ...
//
bool isOverMac;
bool isUnderMac;
bool isCrossedOverMac;
bool isCrossedUnderMac;
//
bool isCloseOverMac;
bool isCloseUnderMac;
bool isCloseCrossedOverMac;
bool isCloseCrossedUnderMac;
//
bool isMacBullishRejected;
bool isMacBearishRejected;
//
// PEAK ...
@@ -722,8 +785,6 @@ struct XCAEAConditions
//
// Specified Conditions ...
//
//
// Constructor ...
XCAEAConditions()
@@ -844,6 +905,9 @@ struct XCAEAConditions
Clean(hHHBuffer);
Clean(hLLBuffer);
Clean(sarBuffer);
Clean(mahBuffer);
Clean(malBuffer);
Clean(macBuffer);
Clean(peakBuffer);
Clean(valeBuffer);
Clean(vidyaBuffer);
@@ -874,6 +938,9 @@ struct XCAEAConditions
ArraySetAsSeries(hHHBuffer, true);
ArraySetAsSeries(hLLBuffer, true);
ArraySetAsSeries(sarBuffer, true);
ArraySetAsSeries(mahBuffer, true);
ArraySetAsSeries(malBuffer, true);
ArraySetAsSeries(macBuffer, true);
ArraySetAsSeries(peakBuffer, true);
ArraySetAsSeries(valeBuffer, true);
ArraySetAsSeries(vidyaBuffer, true);
@@ -967,6 +1034,66 @@ struct XCAEAConditions
isSarFinishedFromBullish = false;
isSarFinishedFromBearish = false;
//
// MANALYSER ...
//
// MAH ...
//
isOverMah = false;
isUnderMah = false;
isCrossedOverMah = false;
isCrossedUnderMah = false;
//
isCloseOverMah = false;
isCloseUnderMah = false;
isCloseCrossedOverMah = false;
isCloseCrossedUnderMah = false;
//
isMahBullishRejected = false;
isMahBearishRejected = false;
//
// MAL ...
//
isOverMal = false;
isUnderMal = false;
isCrossedOverMal = false;
isCrossedUnderMal = false;
//
isCloseOverMal = false;
isCloseUnderMal = false;
isCloseCrossedOverMal = false;
isCloseCrossedUnderMal = false;
//
isMalBullishRejected = false;
isMalBearishRejected = false;
//
// MAC ...
//
isOverMac = false;
isUnderMac = false;
isCrossedOverMac = false;
isCrossedUnderMac = false;
//
isCloseOverMac = false;
isCloseUnderMac = false;
isCloseCrossedOverMac = false;
isCloseCrossedUnderMac = false;
//
isMacBullishRejected = false;
isMacBearishRejected = false;
//
// PEAK ...
@@ -1544,6 +1671,152 @@ struct XCAEAConditions
bearishScore += minScore;
}
//
// MANALYSER ...
//
// MAH ...
//
if (isUnderMah)
{
bullishScore += minScore;
}
if (isCloseUnderMah)
{
bullishScore += minScore;
}
if (isCrossedUnderMah)
{
bullishScore += minScore;
}
if (isMahBullishRejected)
{
bullishScore += minScore;
}
if (isCloseCrossedUnderMah)
{
bullishScore += minScore;
}
//
if (isOverMah)
{
bearishScore += minScore;
}
if (isCloseOverMah)
{
bearishScore += minScore;
}
if (isCrossedOverMah)
{
bearishScore += minScore;
}
if (isMahBearishRejected)
{
bearishScore += minScore;
}
if (isCloseCrossedOverMah)
{
bearishScore += minScore;
}
//
//
// MAL ...
//
if (isOverMal)
{
bullishScore += minScore;
}
if (isCloseOverMal)
{
bullishScore += minScore;
}
if (isCrossedOverMal)
{
bullishScore += minScore;
}
if (isMalBullishRejected)
{
bullishScore += minScore;
}
if (isCloseCrossedOverMal)
{
bullishScore += minScore;
}
//
if (isUnderMal)
{
bearishScore += minScore;
}
if (isCloseUnderMal)
{
bearishScore += minScore;
}
if (isCrossedUnderMal)
{
bearishScore += minScore;
}
if (isMalBearishRejected)
{
bearishScore += minScore;
}
if (isCloseCrossedUnderMal)
{
bearishScore += minScore;
}
//
// MAC ...
//
if (isOverMac)
{
bullishScore += minScore;
}
if (isCloseOverMac)
{
bullishScore += minScore;
}
if (isCrossedOverMac)
{
bullishScore += minScore;
}
if (isMacBullishRejected)
{
bullishScore += minScore;
}
if (isCloseCrossedOverMac)
{
bullishScore += minScore;
}
//
if (isUnderMac)
{
bearishScore += minScore;
}
if (isCloseUnderMac)
{
bearishScore += minScore;
}
if (isCrossedUnderMac)
{
bearishScore += minScore;
}
if (isMacBearishRejected)
{
bearishScore += minScore;
}
if (isCloseCrossedUnderMac)
{
bearishScore += minScore;
}
//
// TREND ...
@@ -2261,6 +2534,36 @@ struct XCAEAConditions
ToString("isSarFinishedFromBullish", isSarFinishedFromBullish, ignoreFalseConditions, separator) +
ToString("isSarSwitchedToBearish", isSarSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isSarFinishedFromBearish", isSarFinishedFromBearish, ignoreFalseConditions, separator) +
ToString("isOverMah", isOverMah, ignoreFalseConditions, separator) +
ToString("isUnderMah", isUnderMah, ignoreFalseConditions, separator) +
ToString("isCrossedOverMah", isCrossedOverMah, ignoreFalseConditions, separator) +
ToString("isCrossedUnderMah", isCrossedUnderMah, ignoreFalseConditions, separator) +
ToString("isCloseOverMah", isCloseOverMah, ignoreFalseConditions, separator) +
ToString("isCloseUnderMah", isCloseUnderMah, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverMah", isCloseCrossedOverMah, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderMah", isCloseCrossedUnderMah, ignoreFalseConditions, separator) +
ToString("isMahBullishRejected", isMahBullishRejected, ignoreFalseConditions, separator) +
ToString("isMahBearishRejected", isMahBearishRejected, ignoreFalseConditions, separator) +
ToString("isOverMal", isOverMal, ignoreFalseConditions, separator) +
ToString("isUnderMal", isUnderMal, ignoreFalseConditions, separator) +
ToString("isCrossedOverMal", isCrossedOverMal, ignoreFalseConditions, separator) +
ToString("isCrossedUnderMal", isCrossedUnderMal, ignoreFalseConditions, separator) +
ToString("isCloseOverMal", isCloseOverMal, ignoreFalseConditions, separator) +
ToString("isCloseUnderMal", isCloseUnderMal, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverMal", isCloseCrossedOverMal, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderMal", isCloseCrossedUnderMal, ignoreFalseConditions, separator) +
ToString("isMalBullishRejected", isMalBullishRejected, ignoreFalseConditions, separator) +
ToString("isMalBearishRejected", isMalBearishRejected, ignoreFalseConditions, separator) +
ToString("isOverMac", isOverMac, ignoreFalseConditions, separator) +
ToString("isUnderMac", isUnderMac, ignoreFalseConditions, separator) +
ToString("isCrossedOverMac", isCrossedOverMac, ignoreFalseConditions, separator) +
ToString("isCrossedUnderMac", isCrossedUnderMac, ignoreFalseConditions, separator) +
ToString("isCloseOverMac", isCloseOverMac, ignoreFalseConditions, separator) +
ToString("isCloseUnderMac", isCloseUnderMac, ignoreFalseConditions, separator) +
ToString("isCloseCrossedOverMac", isCloseCrossedOverMac, ignoreFalseConditions, separator) +
ToString("isCloseCrossedUnderMac", isCloseCrossedUnderMac, ignoreFalseConditions, separator) +
ToString("isMacBullishRejected", isMacBullishRejected, ignoreFalseConditions, separator) +
ToString("isMacBearishRejected", isMacBearishRejected, ignoreFalseConditions, separator) +
ToString("isPeakSameLast", isPeakSameLast, ignoreFalseConditions, separator) +
ToString("isPeakOverLast", isPeakOverLast, ignoreFalseConditions, separator) +
ToString("isPeakUnderLast", isPeakUnderLast, ignoreFalseConditions, separator) +
@@ -3250,6 +3553,24 @@ class XCXCAEAHelper : XCBase
conditions.sarBuffer //
);
//
Copy(
xcaConditions.mahBuffer,
conditions.mahBuffer //
);
//
Copy(
xcaConditions.malBuffer,
conditions.malBuffer //
);
//
Copy(
xcaConditions.macBuffer,
conditions.macBuffer //
);
//
Copy(
xcaConditions.peakBuffer,
@@ -3350,80 +3671,110 @@ class XCXCAEAHelper : XCBase
// Conditions ...
//
conditions.isKIBullish = xcaConditions.isKIBullish;
conditions.isKIBearish = xcaConditions.isKIBearish;
conditions.isKIRejectUp = xcaConditions.isKIRejectUp;
conditions.isTKIBullish = xcaConditions.isTKIBullish;
conditions.isTKIBearish = xcaConditions.isTKIBearish;
conditions.isSarBullish = xcaConditions.isSarBullish;
conditions.isSarBearish = xcaConditions.isSarBearish;
conditions.isTKIRejectUp = xcaConditions.isTKIRejectUp;
conditions.isPeakIsPivot = xcaConditions.isPeakIsPivot;
conditions.isValeIsPivot = xcaConditions.isValeIsPivot;
conditions.isVidyaBullish = xcaConditions.isVidyaBullish;
conditions.isVidyaBearish = xcaConditions.isVidyaBearish;
conditions.isKIRejectDown = xcaConditions.isKIRejectDown;
conditions.isPeakSameLast = xcaConditions.isPeakSameLast;
conditions.isPeakOverLast = xcaConditions.isPeakOverLast;
conditions.isValeSameLast = xcaConditions.isValeSameLast;
conditions.isValeOverLast = xcaConditions.isValeOverLast;
conditions.isTrendBullish = xcaConditions.isTrendBullish;
conditions.isTrendBearish = xcaConditions.isTrendBearish;
conditions.isTKIRejectDown = xcaConditions.isTKIRejectDown;
conditions.isPeakUnderLast = xcaConditions.isPeakUnderLast;
conditions.isValeUnderLast = xcaConditions.isValeUnderLast;
conditions.isTrendRejectUp = xcaConditions.isTrendRejectUp;
conditions.isTrendRejectDown = xcaConditions.isTrendRejectDown;
conditions.isSupportSameLast = xcaConditions.isSupportSameLast;
conditions.isSupportOverLast = xcaConditions.isSupportOverLast;
conditions.isSupportUnderLast = xcaConditions.isSupportUnderLast;
conditions.isSwingLowSameLast = xcaConditions.isSwingLowSameLast;
conditions.isSwingLowOverLast = xcaConditions.isSwingLowOverLast;
conditions.isSwingLowUnderLast = xcaConditions.isSwingLowUnderLast;
conditions.isSwingHighSameLast = xcaConditions.isSwingHighSameLast;
conditions.isSwingHighOverLast = xcaConditions.isSwingHighOverLast;
conditions.isSupportSameAsVale = xcaConditions.isSupportSameAsVale;
conditions.isLastSupportBreaked = xcaConditions.isLastSupportBreaked;
conditions.isResistanceSameLast = xcaConditions.isResistanceSameLast;
conditions.isResistanceOverLast = xcaConditions.isResistanceOverLast;
conditions.isSwingHighUnderLast = xcaConditions.isSwingHighUnderLast;
conditions.isSwingLowSameAsVale = xcaConditions.isSwingLowSameAsVale;
conditions.isLastSupportRejected = xcaConditions.isLastSupportRejected;
conditions.isResistanceUnderLast = xcaConditions.isResistanceUnderLast;
conditions.isKISwitchedToBullish = xcaConditions.isKISwitchedToBullish;
conditions.isKISwitchedToBearish = xcaConditions.isKISwitchedToBearish;
conditions.isLastSwingLowBreaked = xcaConditions.isLastSwingLowBreaked;
conditions.isSwingHighSameAsPeak = xcaConditions.isSwingHighSameAsPeak;
conditions.isPeakSwitchedToPivot = xcaConditions.isPeakSwitchedToPivot;
conditions.isValeSwitchedToPivot = xcaConditions.isValeSwitchedToPivot;
conditions.isTKISwitchedToBullish = xcaConditions.isTKISwitchedToBullish;
conditions.isTKISwitchedToBearish = xcaConditions.isTKISwitchedToBearish;
conditions.isLastSwingLowRejected = xcaConditions.isLastSwingLowRejected;
conditions.isSarSwitchedToBullish = xcaConditions.isSarSwitchedToBullish;
conditions.isSarSwitchedToBearish = xcaConditions.isSarSwitchedToBearish;
conditions.isLastSwingHighBreaked = xcaConditions.isLastSwingHighBreaked;
conditions.isResistanceSameAsPeak = xcaConditions.isResistanceSameAsPeak;
conditions.isPeakFinishedFromPivot = xcaConditions.isPeakFinishedFromPivot;
conditions.isValeFinishedFromPivot = xcaConditions.isValeFinishedFromPivot;
conditions.isLastSwingHighRejected = xcaConditions.isLastSwingHighRejected;
conditions.isLastResistanceBreaked = xcaConditions.isLastResistanceBreaked;
conditions.isSupportSameAsSwingLow = xcaConditions.isSupportSameAsSwingLow;
conditions.isKIFinishedFromBullish = xcaConditions.isKIFinishedFromBullish;
conditions.isKIFinishedFromBearish = xcaConditions.isKIFinishedFromBearish;
conditions.isTKIFinishedFromBullish = xcaConditions.isTKIFinishedFromBullish;
conditions.isTKIFinishedFromBearish = xcaConditions.isTKIFinishedFromBearish;
conditions.isSarFinishedFromBullish = xcaConditions.isSarFinishedFromBullish;
conditions.isSarFinishedFromBearish = xcaConditions.isSarFinishedFromBearish;
conditions.isVidyaSwitchedToBullish = xcaConditions.isVidyaSwitchedToBullish;
conditions.isVidyaSwitchedToBearish = xcaConditions.isVidyaSwitchedToBearish;
conditions.isLastResistanceRejected = xcaConditions.isLastResistanceRejected;
conditions.isTrendSwitchedToBullish = xcaConditions.isTrendSwitchedToBullish;
conditions.isTrendSwitchedToBearish = xcaConditions.isTrendSwitchedToBearish;
conditions.isVidyaFinishedFromBullish = xcaConditions.isVidyaFinishedFromBullish;
conditions.isVidyaFinishedFromBearish = xcaConditions.isVidyaFinishedFromBearish;
conditions.isTrendFinishedFromBullish = xcaConditions.isTrendFinishedFromBullish;
conditions.isTrendFinishedFromBearish = xcaConditions.isTrendFinishedFromBearish;
conditions.isResistanceSameAsSwingHigh = xcaConditions.isResistanceSameAsSwingHigh;
conditions.isOverMah = isOverMah;
conditions.isOverMal = isOverMal;
conditions.isOverMac = isOverMac;
conditions.isUnderMah = isUnderMah;
conditions.isUnderMal = isUnderMal;
conditions.isUnderMac = isUnderMac;
conditions.isKIBullish = isKIBullish;
conditions.isKIBearish = isKIBearish;
conditions.isKIRejectUp = isKIRejectUp;
conditions.isTKIBullish = isTKIBullish;
conditions.isTKIBearish = isTKIBearish;
conditions.isSarBullish = isSarBullish;
conditions.isSarBearish = isSarBearish;
conditions.isTKIRejectUp = isTKIRejectUp;
conditions.isPeakIsPivot = isPeakIsPivot;
conditions.isValeIsPivot = isValeIsPivot;
conditions.isCloseOverMah = isCloseOverMah;
conditions.isCloseOverMal = isCloseOverMal;
conditions.isCloseOverMac = isCloseOverMac;
conditions.isVidyaBullish = isVidyaBullish;
conditions.isVidyaBearish = isVidyaBearish;
conditions.isKIRejectDown = isKIRejectDown;
conditions.isPeakSameLast = isPeakSameLast;
conditions.isPeakOverLast = isPeakOverLast;
conditions.isValeSameLast = isValeSameLast;
conditions.isValeOverLast = isValeOverLast;
conditions.isTrendBullish = isTrendBullish;
conditions.isTrendBearish = isTrendBearish;
conditions.isCloseUnderMah = isCloseUnderMah;
conditions.isCloseUnderMal = isCloseUnderMal;
conditions.isCloseUnderMac = isCloseUnderMac;
conditions.isTKIRejectDown = isTKIRejectDown;
conditions.isPeakUnderLast = isPeakUnderLast;
conditions.isValeUnderLast = isValeUnderLast;
conditions.isTrendRejectUp = isTrendRejectUp;
conditions.isCrossedOverMah = isCrossedOverMah;
conditions.isCrossedOverMal = isCrossedOverMal;
conditions.isCrossedOverMac = isCrossedOverMac;
conditions.isCrossedUnderMah = isCrossedUnderMah;
conditions.isCrossedUnderMal = isCrossedUnderMal;
conditions.isCrossedUnderMac = isCrossedUnderMac;
conditions.isTrendRejectDown = isTrendRejectDown;
conditions.isSupportSameLast = isSupportSameLast;
conditions.isSupportOverLast = isSupportOverLast;
conditions.isSupportUnderLast = isSupportUnderLast;
conditions.isSwingLowSameLast = isSwingLowSameLast;
conditions.isSwingLowOverLast = isSwingLowOverLast;
conditions.isSwingLowUnderLast = isSwingLowUnderLast;
conditions.isSwingHighSameLast = isSwingHighSameLast;
conditions.isSwingHighOverLast = isSwingHighOverLast;
conditions.isSupportSameAsVale = isSupportSameAsVale;
conditions.isMahBullishRejected = isMahBullishRejected;
conditions.isMahBearishRejected = isMahBearishRejected;
conditions.isMalBullishRejected = isMalBullishRejected;
conditions.isMalBearishRejected = isMalBearishRejected;
conditions.isMacBullishRejected = isMacBullishRejected;
conditions.isMacBearishRejected = isMacBearishRejected;
conditions.isLastSupportBreaked = isLastSupportBreaked;
conditions.isResistanceSameLast = isResistanceSameLast;
conditions.isResistanceOverLast = isResistanceOverLast;
conditions.isSwingHighUnderLast = isSwingHighUnderLast;
conditions.isSwingLowSameAsVale = isSwingLowSameAsVale;
conditions.isCloseCrossedOverMah = isCloseCrossedOverMah;
conditions.isCloseCrossedOverMal = isCloseCrossedOverMal;
conditions.isCloseCrossedOverMac = isCloseCrossedOverMac;
conditions.isLastSupportRejected = isLastSupportRejected;
conditions.isResistanceUnderLast = isResistanceUnderLast;
conditions.isKISwitchedToBullish = isKISwitchedToBullish;
conditions.isKISwitchedToBearish = isKISwitchedToBearish;
conditions.isLastSwingLowBreaked = isLastSwingLowBreaked;
conditions.isSwingHighSameAsPeak = isSwingHighSameAsPeak;
conditions.isPeakSwitchedToPivot = isPeakSwitchedToPivot;
conditions.isValeSwitchedToPivot = isValeSwitchedToPivot;
conditions.isCloseCrossedUnderMah = isCloseCrossedUnderMah;
conditions.isCloseCrossedUnderMal = isCloseCrossedUnderMal;
conditions.isCloseCrossedUnderMac = isCloseCrossedUnderMac;
conditions.isTKISwitchedToBullish = isTKISwitchedToBullish;
conditions.isTKISwitchedToBearish = isTKISwitchedToBearish;
conditions.isLastSwingLowRejected = isLastSwingLowRejected;
conditions.isSarSwitchedToBullish = isSarSwitchedToBullish;
conditions.isSarSwitchedToBearish = isSarSwitchedToBearish;
conditions.isLastSwingHighBreaked = isLastSwingHighBreaked;
conditions.isResistanceSameAsPeak = isResistanceSameAsPeak;
conditions.isPeakFinishedFromPivot = isPeakFinishedFromPivot;
conditions.isValeFinishedFromPivot = isValeFinishedFromPivot;
conditions.isLastSwingHighRejected = isLastSwingHighRejected;
conditions.isLastResistanceBreaked = isLastResistanceBreaked;
conditions.isSupportSameAsSwingLow = isSupportSameAsSwingLow;
conditions.isKIFinishedFromBullish = isKIFinishedFromBullish;
conditions.isKIFinishedFromBearish = isKIFinishedFromBearish;
conditions.isTKIFinishedFromBullish = isTKIFinishedFromBullish;
conditions.isTKIFinishedFromBearish = isTKIFinishedFromBearish;
conditions.isSarFinishedFromBullish = isSarFinishedFromBullish;
conditions.isSarFinishedFromBearish = isSarFinishedFromBearish;
conditions.isVidyaSwitchedToBullish = isVidyaSwitchedToBullish;
conditions.isVidyaSwitchedToBearish = isVidyaSwitchedToBearish;
conditions.isLastResistanceRejected = isLastResistanceRejected;
conditions.isTrendSwitchedToBullish = isTrendSwitchedToBullish;
conditions.isTrendSwitchedToBearish = isTrendSwitchedToBearish;
conditions.isVidyaFinishedFromBullish = isVidyaFinishedFromBullish;
conditions.isVidyaFinishedFromBearish = isVidyaFinishedFromBearish;
conditions.isTrendFinishedFromBullish = isTrendFinishedFromBullish;
conditions.isTrendFinishedFromBearish = isTrendFinishedFromBearish;
conditions.isResistanceSameAsSwingHigh = isResistanceSameAsSwingHigh;
//
// XOSCS ...