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
+759 -20
View File
@@ -56,10 +56,13 @@ enum ENUM_X121_XCA_BUFFERS
X121_XCA_SWING_HIGH_LINE = 23,
X121_XCA_TKI_LINE = 24,
X121_XCA_VIDYA_LINE = 26,
X121_XCA_TREND_STATE_LINE = 28,
X121_XCA_KI_STATE_LINE = 29,
X121_XCA_TKI_STATE_LINE = 30,
X121_XCA_VIDYA_STATE_LINE = 31,
X121_XCA_MAH_LINE = 28,
X121_XCA_MAL_LINE = 29,
X121_XCA_MAC_LINE = 30,
X121_XCA_TREND_STATE_LINE = 31,
X121_XCA_KI_STATE_LINE = 32,
X121_XCA_TKI_STATE_LINE = 33,
X121_XCA_VIDYA_STATE_LINE = 34,
};
//
@@ -119,6 +122,11 @@ struct X121XCAInputs
int vidyaEMALength; // EMA Length
ENUM_APPLIED_PRICE vidyaAppliedTo; // Applied To
//
// MANALYSER ...
int manalyserLength; // Length
ENUM_MA_METHOD manalyserMethod; // Method
//
// Swing Detection ...
int swingLength; // Length
@@ -138,6 +146,9 @@ struct X121XCAInputs
bool showSar; // Show Sar
bool showKI; // Show KI
bool showTKI; // Show TKI
bool showMAH; // Show MAH
bool showMAL; // Show MAL
bool showMAC; // Show MAC
bool showVidya; // Show Vidya
bool showTrend; // Show Trend
bool showSwings; // Show Swings
@@ -223,6 +234,11 @@ struct X121XCAInputs
vidyaEMALength = 0;
vidyaAppliedTo = PRICE_CLOSE;
//
// MANALYSER ...
manalyserLength = 0; // Length
manalyserMethod = MODE_SMA; // Method
//
// Swing Detection ...
swingLength = 0; // Length
@@ -239,22 +255,25 @@ struct X121XCAInputs
startCalculationForLastBars = 0; // Calculate Last n Bars
//
showSar = true; // Show Sar
showKI = true; // Show KI
showTKI = true; // Show TKI
showVidya = true; // Show Vidya
showTrend = true; // Show Trend
showSwings = true; // Show Swings
showFiboLevel1 = true; // Show Fibo Level 1
showFiboLevel2 = true; // Show Fibo Level 2
showFiboLevel3 = true; // Show Fibo Level 3
showPeaksAndVales = true; // Show Peaks And Vales
showPeakAndValeGolden = true; // Show Peak and Vale Golden
showSupportAndResistance = true; // Show Support and Resistance
showShortCycle = true; // Show Short Cycle
showMediumCycle = true; // Show Medium Cycle
showLongCycle = true; // Show Long Cycle
showHindCycle = true; // Show Hind Cycle
showSar = false; // Show Sar
showKI = false; // Show KI
showTKI = false; // Show TKI
showMAH = false; // Show MAH
showMAL = false; // Show MAL
showMAC = false; // Show MAC
showVidya = false; // Show Vidya
showTrend = false; // Show Trend
showSwings = false; // Show Swings
showFiboLevel1 = false; // Show Fibo Level 1
showFiboLevel2 = false; // Show Fibo Level 2
showFiboLevel3 = false; // Show Fibo Level 3
showPeaksAndVales = false; // Show Peaks And Vales
showPeakAndValeGolden = false; // Show Peak and Vale Golden
showSupportAndResistance = false; // Show Support and Resistance
showShortCycle = false; // Show Short Cycle
showMediumCycle = false; // Show Medium Cycle
showLongCycle = false; // Show Long Cycle
showHindCycle = false; // Show Hind Cycle
//
sarArrowCode = 0; // Parabolic Sar Arrow Code
@@ -320,6 +339,11 @@ struct X121XCAInputs
vidyaEMALength = 14;
vidyaAppliedTo = PRICE_CLOSE;
//
// MANALYSER ...
manalyserLength = 14; // Length
manalyserMethod = MODE_SMA; // Method
//
// Swing Detection ...
swingLength = 5; // Length
@@ -334,6 +358,9 @@ struct X121XCAInputs
showSar = true; // Show Sar
showKI = true; // Show KI
showTKI = true; // Show TKI
showMAH = true; // Show MAH
showMAL = true; // Show MAL
showMAC = true; // Show MAC
showVidya = true; // Show Vidya
showTrend = true; // Show Trend
showSwings = true; // Show Swings
@@ -374,6 +401,7 @@ struct X121XCAInputs
sarMax > sarStep &&
vidyaCMOLength > 0 &&
vidyaEMALength > 0 &&
manalyserLength > 0 &&
//
// XCA ...
(IsValid(scMethod, scPeriod) &&
@@ -398,6 +426,7 @@ struct X121XCAInputs
result = MathMax(kiLength, swingLength);
result = MathMax(result, vidyaCMOLength);
result = MathMax(result, vidyaEMALength);
result = MathMax(result, manalyserLength);
//
return result;
@@ -427,6 +456,9 @@ struct X121XCAConditions
double hHHBuffer[];
double hLLBuffer[];
double sarBuffer[];
double mahBuffer[];
double malBuffer[];
double macBuffer[];
double peakBuffer[];
double valeBuffer[];
double vidyaBuffer[];
@@ -520,6 +552,66 @@ struct X121XCAConditions
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 ...
@@ -666,6 +758,9 @@ struct X121XCAConditions
Clean(hHHBuffer);
Clean(hLLBuffer);
Clean(sarBuffer);
Clean(mahBuffer);
Clean(malBuffer);
Clean(macBuffer);
Clean(peakBuffer);
Clean(valeBuffer);
Clean(vidyaBuffer);
@@ -696,6 +791,9 @@ struct X121XCAConditions
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);
@@ -788,6 +886,66 @@ struct X121XCAConditions
//
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 ...
@@ -1039,6 +1197,152 @@ struct X121XCAConditions
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 ...
@@ -1304,6 +1608,36 @@ struct X121XCAConditions
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) +
@@ -1426,6 +1760,9 @@ class XCX121XCAHelper : public XCBaseHelper
Clean(hHHBuffer);
Clean(hLLBuffer);
Clean(sarBuffer);
Clean(mahBuffer);
Clean(malBuffer);
Clean(macBuffer);
Clean(peakBuffer);
Clean(valeBuffer);
Clean(vidyaBuffer);
@@ -1479,6 +1816,9 @@ class XCX121XCAHelper : public XCBaseHelper
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);
@@ -1534,6 +1874,9 @@ class XCX121XCAHelper : public XCBaseHelper
mInputs.vidyaCMOLength,
mInputs.vidyaEMALength,
mInputs.vidyaAppliedTo,
"", // MANALYSER ...
mInputs.manalyserLength,
mInputs.manalyserMethod,
"", // Swing Detection ...
mInputs.swingLength,
"", // Support and Resistance ...
@@ -1544,6 +1887,9 @@ class XCX121XCAHelper : public XCBaseHelper
mInputs.showSar,
mInputs.showKI,
mInputs.showTKI,
mInputs.showMAH,
mInputs.showMAL,
mInputs.showMAC,
mInputs.showVidya,
mInputs.showTrend,
mInputs.showSwings,
@@ -2393,6 +2739,165 @@ class XCX121XCAHelper : public XCBaseHelper
);
}
//
// MANALYSER ...
//
// MAH ...
//
double GetMah(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate(barIndex);
//
int count = ArraySize(mahBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return mahBuffer[barIndex];
}
//
int CopyMah(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
bool forceClean = true // Force To Clean buffer
)
{
//
// Update Calculations ...
Calculate(start);
//
// Copy Items ...
return Copy(
0,
count,
mahBuffer,
buffer,
forceClean
//
);
}
//
// MAL ,,,
//
double GetMal(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate(barIndex);
//
int count = ArraySize(malBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return malBuffer[barIndex];
}
//
int CopyMlh(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
bool forceClean = true // Force To Clean buffer
)
{
//
// Update Calculations ...
Calculate(start);
//
// Copy Items ...
return Copy(
0,
count,
malBuffer,
buffer,
forceClean
//
);
}
//
// MAC ...
//
double GetMac(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate(barIndex);
//
int count = ArraySize(macBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return macBuffer[barIndex];
}
//
int CopyMac(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
bool forceClean = true // Force To Clean buffer
)
{
//
// Update Calculations ...
Calculate(start);
//
// Copy Items ...
return Copy(
0,
count,
macBuffer,
buffer,
forceClean
//
);
}
//
// PEAK ...
@@ -3249,6 +3754,27 @@ class XCX121XCAHelper : public XCBaseHelper
conditions.sarBuffer //
);
//
CopyMah(
zIndex,
loopback,
conditions.mahBuffer //
);
//
CopyMal(
zIndex,
loopback,
conditions.malBuffer //
);
//
CopyMac(
zIndex,
loopback,
conditions.macBuffer //
);
//
CopyPeak(
zIndex,
@@ -3522,6 +4048,141 @@ class XCX121XCAHelper : public XCBaseHelper
bool isSarFinishedFromBearish = !isSarBearish &&
isSarBearishPrev;
//
// MANALYSER ...
//
// MAH ...
//
bool isOverMah = cBar.low > conditions.mahBuffer[cIDX];
bool isOverMahPrev = pBar.low > conditions.mahBuffer[pIDX];
//
bool isUnderMah = cBar.high < conditions.mahBuffer[cIDX];
bool isUnderMahPrev = pBar.high < conditions.mahBuffer[pIDX];
//
bool isCrossedOverMah = isOverMah &&
!isOverMahPrev;
bool isCrossedUnderMah = isUnderMah &&
!isUnderMahPrev;
//
bool isCloseOverMah = cBar.close > conditions.mahBuffer[cIDX];
bool isCloseOverMahPrev = pBar.close > conditions.mahBuffer[pIDX];
bool isCloseUnderMah = cBar.close < conditions.mahBuffer[cIDX];
bool isCloseUnderMahPrev = pBar.close < conditions.mahBuffer[pIDX];
//
bool isCloseCrossedOverMah = isCloseOverMah &&
!isCloseOverMahPrev;
bool isCloseCrossedUnderMah = isCloseUnderMah &&
!isCloseUnderMahPrev;
//
bool isMahBullishRejected = cBar.IsRejected(
conditions.mahBuffer[cIDX],
X_DIRECTION_BULLISH,
false,
false //
);
bool isMahBearishRejected = cBar.IsRejected(
conditions.mahBuffer[cIDX],
X_DIRECTION_BEARISH,
false,
false //
);
//
// MAL ...
//
bool isOverMal = cBar.low > conditions.malBuffer[cIDX];
bool isOverMalPrev = pBar.low > conditions.malBuffer[pIDX];
//
bool isUnderMal = cBar.high < conditions.malBuffer[cIDX];
bool isUnderMalPrev = pBar.high < conditions.malBuffer[pIDX];
//
bool isCrossedOverMal = isOverMal &&
!isOverMalPrev;
bool isCrossedUnderMal = isUnderMal &&
!isUnderMalPrev;
//
bool isCloseOverMal = cBar.close > conditions.malBuffer[cIDX];
bool isCloseOverMalPrev = pBar.close > conditions.malBuffer[pIDX];
bool isCloseUnderMal = cBar.close < conditions.malBuffer[cIDX];
bool isCloseUnderMalPrev = pBar.close < conditions.malBuffer[pIDX];
//
bool isCloseCrossedOverMal = isCloseOverMal &&
!isCloseOverMalPrev;
bool isCloseCrossedUnderMal = isCloseUnderMal &&
!isCloseUnderMalPrev;
//
bool isMalBullishRejected = cBar.IsRejected(
conditions.malBuffer[cIDX],
X_DIRECTION_BULLISH,
false,
false //
);
bool isMalBearishRejected = cBar.IsRejected(
conditions.malBuffer[cIDX],
X_DIRECTION_BEARISH,
false,
false //
);
//
// MAC ...
//
bool isOverMac = cBar.low > conditions.macBuffer[cIDX];
bool isOverMacPrev = pBar.low > conditions.macBuffer[pIDX];
//
bool isUnderMac = cBar.high < conditions.macBuffer[cIDX];
bool isUnderMacPrev = pBar.high < conditions.macBuffer[pIDX];
//
bool isCrossedOverMac = isOverMac &&
!isOverMacPrev;
bool isCrossedUnderMac = isUnderMac &&
!isUnderMacPrev;
//
bool isCloseOverMac = cBar.close > conditions.macBuffer[cIDX];
bool isCloseOverMacPrev = pBar.close > conditions.macBuffer[pIDX];
bool isCloseUnderMac = cBar.close < conditions.macBuffer[cIDX];
bool isCloseUnderMacPrev = pBar.close < conditions.macBuffer[pIDX];
//
bool isCloseCrossedOverMac = isCloseOverMac &&
!isCloseOverMacPrev;
bool isCloseCrossedUnderMac = isCloseUnderMac &&
!isCloseUnderMacPrev;
//
bool isMacBullishRejected = cBar.IsRejected(
conditions.macBuffer[cIDX],
X_DIRECTION_BULLISH,
false,
false //
);
bool isMacBearishRejected = cBar.IsRejected(
conditions.macBuffer[cIDX],
X_DIRECTION_BEARISH,
false,
false //
);
//
// PEAK ...
@@ -3747,6 +4408,12 @@ class XCX121XCAHelper : public XCBaseHelper
// Attached ...
//
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;
@@ -3757,6 +4424,9 @@ class XCX121XCAHelper : public XCBaseHelper
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;
@@ -3766,10 +4436,19 @@ class XCX121XCAHelper : public XCBaseHelper
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;
@@ -3780,11 +4459,20 @@ class XCX121XCAHelper : public XCBaseHelper
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;
@@ -3793,6 +4481,9 @@ class XCX121XCAHelper : public XCBaseHelper
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;
@@ -3857,6 +4548,9 @@ class XCX121XCAHelper : public XCBaseHelper
double hHHBuffer[];
double hLLBuffer[];
double sarBuffer[];
double mahBuffer[];
double malBuffer[];
double macBuffer[];
double peakBuffer[];
double valeBuffer[];
double vidyaBuffer[];
@@ -3996,6 +4690,33 @@ class XCX121XCAHelper : public XCBaseHelper
sarBuffer //
);
//
CopyBuffer(
mHandler,
X121_XCA_MAH_LINE,
barIndex,
maxRequiredBars,
mahBuffer //
);
//
CopyBuffer(
mHandler,
X121_XCA_MAL_LINE,
barIndex,
maxRequiredBars,
malBuffer //
);
//
CopyBuffer(
mHandler,
X121_XCA_MAC_LINE,
barIndex,
maxRequiredBars,
macBuffer //
);
//
CopyBuffer(
mHandler,
@@ -4218,6 +4939,24 @@ class XCX121XCAHelper : public XCBaseHelper
maxAllowed //
);
//
CleanupArray(
mahBuffer,
maxAllowed //
);
//
CleanupArray(
malBuffer,
maxAllowed //
);
//
CleanupArray(
macBuffer,
maxAllowed //
);
//
CleanupArray(
peakBuffer,
+3 -3
View File
@@ -36,21 +36,21 @@
// Fast ...
input group "Fast";
input int fastLength = 6; // Length
input ENUM_MA_METHOD fastMethod = MODE_SMA; // Mwethod
input ENUM_MA_METHOD fastMethod = MODE_SMA; // Method
input ENUM_APPLIED_PRICE fastAppliedTo = PRICE_CLOSE; // Applied To
//
// Medium ...
input group "Medium";
input int mediumLength = 21; // Length
input ENUM_MA_METHOD mediumMethod = MODE_SMA; // Mwethod
input ENUM_MA_METHOD mediumMethod = MODE_SMA; // Method
input ENUM_APPLIED_PRICE mediumAppliedTo = PRICE_CLOSE; // Applied To
//
// Slow ...
input group "Slow";
input int slowLength = 34; // Length
input ENUM_MA_METHOD slowMethod = MODE_SMA; // Mwethod
input ENUM_MA_METHOD slowMethod = MODE_SMA; // Method
input ENUM_APPLIED_PRICE slowAppliedTo = PRICE_CLOSE; // Applied To
//
+218 -5
View File
@@ -84,6 +84,12 @@ input int vidyaCMOLength = 20; // CMO (Candle Momentum)
input int vidyaEMALength = 14; // EMA Length
input ENUM_APPLIED_PRICE vidyaAppliedTo = PRICE_CLOSE; // Applied To
//
// Manalyser ...
input group "Manalyser";
input int manalyserLength = 14; // Length
input ENUM_MA_METHOD manalyserMethod = MODE_SMA; // Method
//
input group "Swing Detection";
input int swingLength = 5; // Length
@@ -104,6 +110,9 @@ input int startCalculationForLastBars = 1000; // Calculate Last n Bars
input bool showSar = true; // Show Sar
input bool showKI = true; // Show KI
input bool showTKI = true; // Show KI Trend
input bool showMAH = true; // Show MAH
input bool showMAL = true; // Show MAL
input bool showMAC = true; // Show MAC
input bool showVidya = true; // Show Vidya
input bool showTrend = true; // Show Trend
input bool showSwings = true; // Show Swings
@@ -146,8 +155,8 @@ input int swingHighArrowCode = 226; // Swing High Arrow Code
#property indicator_chart_window
//
#property indicator_buffers 34
#property indicator_plots 24
#property indicator_buffers 37
#property indicator_plots 27
//
// Plot Buffers ...
@@ -493,10 +502,55 @@ double vidyaColorBuffer[];
#property indicator_style24 STYLE_SOLID
#property indicator_width24 1
//
// MAH ...
//
#define mahBufferIndex 28
#define mahBufferPlotIndex 24
double mahBuffer[];
//
#property indicator_label25 "MAH"
#property indicator_type25 DRAW_LINE
#property indicator_color25 clrMagenta
#property indicator_style25 STYLE_SOLID
#property indicator_width25 1
//
// MAL ...
//
#define malBufferIndex 29
#define malBufferPlotIndex 25
double malBuffer[];
//
#property indicator_label26 "MAL"
#property indicator_type26 DRAW_LINE
#property indicator_color26 clrAqua
#property indicator_style26 STYLE_SOLID
#property indicator_width26 1
//
// MAC ...
//
#define macBufferIndex 30
#define macBufferPlotIndex 26
double macBuffer[];
//
#property indicator_label27 "MAC"
#property indicator_type27 DRAW_LINE
#property indicator_color27 clrYellow
#property indicator_style27 STYLE_SOLID
#property indicator_width27 1
//
// Data Buffers ...
#define mLastBufferIndex 27
#define mLastBufferIndex 30
//
#define trendStateBufferIndex mLastBufferIndex + 1
@@ -545,6 +599,12 @@ int tkiHandler = INVALID_HANDLE;
int vidyaHandler = INVALID_HANDLE;
int trendHandler = INVALID_HANDLE;
//
// Manalyser Handlers ...
int mahHandler = INVALID_HANDLE;
int malHandler = INVALID_HANDLE;
int macHandler = INVALID_HANDLE;
//
// XMarketCycle sc;
int mSCLength = 0;
@@ -653,6 +713,57 @@ int OnInit()
return INIT_FAILED;
}
//
// MANALYSE ...
//
// MAH ...
mahHandler = iMA(
_Symbol,
_Period,
manalyserLength,
0,
manalyserMethod,
PRICE_HIGH //
);
isInited = mahHandler != INVALID_HANDLE;
if (!isInited)
{
return INIT_FAILED;
}
//
// MAL ...
malHandler = iMA(
_Symbol,
_Period,
manalyserLength,
0,
manalyserMethod,
PRICE_LOW //
);
isInited = malHandler != INVALID_HANDLE;
if (!isInited)
{
return INIT_FAILED;
}
//
// MAC ...
macHandler = iMA(
_Symbol,
_Period,
manalyserLength,
0,
manalyserMethod,
PRICE_CLOSE //
);
isInited = macHandler != INVALID_HANDLE;
if (!isInited)
{
return INIT_FAILED;
}
//
// because in some cases we may have more than one input for
// calculation and we must prevent any calculation
@@ -758,6 +869,21 @@ int OnCalculate(
// TREND ...
int trendCalculatedBars = BarsCalculated(trendHandler);
//
// MANALYSER ...
//
// MAH ...
int mahCalculatedBars = BarsCalculated(mahHandler);
//
// MAL ...
int malCalculatedBars = BarsCalculated(malHandler);
//
// MAC ...
int macCalculatedBars = BarsCalculated(macHandler);
//
bool isPassedRequiredCalculatedBars =
//
@@ -771,7 +897,15 @@ int OnCalculate(
vidyaCalculatedBars >= maxLength &&
//
// TREND ...
trendCalculatedBars >= maxLength
trendCalculatedBars >= maxLength &&
//
// MANALYSER ...
// MAH ...
mahCalculatedBars >= maxLength &&
// MAL ...
malCalculatedBars >= maxLength &&
// MAC ...
macCalculatedBars >= maxLength
//
;
if (!isPassedRequiredCalculatedBars)
@@ -803,6 +937,21 @@ int OnCalculate(
// TREND ...
int copiedTrends = CopyBuffer(trendHandler, MAIN_LINE, 0, limit + 1, trendBuffer);
//
// MANALYSER ...
//
// MAH ...
int copiedMahs = CopyBuffer(mahHandler, 0, 0, limit, mahBuffer);
//
// MAL ...
int copiedMals = CopyBuffer(malHandler, 0, 0, limit, malBuffer);
//
// MAC ...
int copiedMacs = CopyBuffer(macHandler, 0, 0, limit, macBuffer);
//
// Validate Copied Items ...
bool isPassedRequiredCopiedItems =
@@ -817,7 +966,15 @@ int OnCalculate(
copiedVidyas >= limit &&
//
// TREND ...
copiedTrends >= limit
copiedTrends >= limit &&
//
// MANALYSER ...
// MAH ...
copiedMahs >= limit &&
// MAL ...
copiedMals >= limit &&
// MAC ...
copiedMacs >= limit
//
;
if (!isPassedRequiredCopiedItems)
@@ -871,6 +1028,7 @@ bool ValidateInputs()
sarMax > sarStep &&
vidyaEMALength > 0 &&
vidyaCMOLength > 0 &&
manalyserLength > 0 &&
//
// XCA ...
(IsValid(scMethod, scPeriod) &&
@@ -898,6 +1056,7 @@ int ExtractMaxLengthOfInputs()
result = MathMax(kiLength, swingLength);
result = MathMax(result, vidyaCMOLength);
result = MathMax(result, vidyaEMALength);
result = MathMax(result, manalyserLength);
//
return result;
@@ -1340,6 +1499,60 @@ void DefineBuffers()
PlotIndexSetDouble(swingHighBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue);
PlotIndexSetInteger(swingHighBufferPlotIndex, PLOT_ARROW, swingHighArrowCode);
//
// MANALYSER ...
//
// MAH ...
//
ENUM_DRAW_TYPE mahDrawType = showMAH ? DRAW_LINE : DRAW_NONE;
//
ArraySetAsSeries(mahBuffer, true);
SetIndexBuffer(mahBufferIndex, mahBuffer, INDICATOR_DATA);
//
PlotIndexSetInteger(mahBufferPlotIndex, PLOT_SHOW_DATA, showMAH);
PlotIndexSetInteger(mahBufferPlotIndex, PLOT_DRAW_TYPE, mahDrawType);
//
PlotIndexSetDouble(mahBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue);
//
// MAL ...
//
ENUM_DRAW_TYPE malDrawType = showMAL ? DRAW_LINE : DRAW_NONE;
//
ArraySetAsSeries(malBuffer, true);
SetIndexBuffer(malBufferIndex, malBuffer, INDICATOR_DATA);
//
PlotIndexSetInteger(malBufferPlotIndex, PLOT_SHOW_DATA, showMAL);
PlotIndexSetInteger(malBufferPlotIndex, PLOT_DRAW_TYPE, malDrawType);
//
PlotIndexSetDouble(malBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue);
//
// MAC ...
//
ENUM_DRAW_TYPE macDrawType = showMAC ? DRAW_LINE : DRAW_NONE;
//
ArraySetAsSeries(macBuffer, true);
SetIndexBuffer(macBufferIndex, macBuffer, INDICATOR_DATA);
//
PlotIndexSetInteger(macBufferPlotIndex, PLOT_SHOW_DATA, showMAC);
PlotIndexSetInteger(macBufferPlotIndex, PLOT_DRAW_TYPE, mahDrawType);
//
PlotIndexSetDouble(macBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue);
//
// Data Buffers ...
+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 ...