apply fix issues on reading and calculating swings and ... on XCA indicators ...

This commit is contained in:
2025-04-29 12:28:35 +03:30
parent 4974e10e0c
commit e938c430f4
5 changed files with 135 additions and 127 deletions
+8 -8
View File
@@ -886,7 +886,7 @@ struct X121XCAConditions
//
isSarFinishedFromBullish = false;
isSarFinishedFromBearish = false;
//
// MANALYSER ...
@@ -1902,13 +1902,13 @@ class XCX121XCAHelper : public XCBaseHelper
mInputs.showShortCycle,
mInputs.showMediumCycle,
mInputs.showLongCycle,
mInputs.showHindCycle,
mInputs.showHindCycle // ,
//
mInputs.sarArrowCode,
mInputs.peakArrowCode,
mInputs.valeArrowCode,
mInputs.swingLowArrowCode,
mInputs.swingHighArrowCode
// mInputs.sarArrowCode,
// mInputs.peakArrowCode,
// mInputs.valeArrowCode,
// mInputs.swingLowArrowCode,
// mInputs.swingHighArrowCode
//
);
result = mHandler != INVALID_HANDLE;
@@ -2823,7 +2823,7 @@ class XCX121XCAHelper : public XCBaseHelper
}
//
int CopyMlh(
int CopyMal(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
+10 -5
View File
@@ -128,11 +128,11 @@ input bool showLongCycle = true; // Show Long Cycle
input bool showHindCycle = true; // Show Hind Cycle
//
input int sarArrowCode = 159; // Parabolic Sar Arrow Code
input int peakArrowCode = 159; // Peaks Arrow Code
input int valeArrowCode = 159; // Vales Arrow Code
input int swingLowArrowCode = 225; // Swing Low Arrow Code
input int swingHighArrowCode = 226; // Swing High Arrow Code
int sarArrowCode = 159; // Parabolic Sar Arrow Code
int peakArrowCode = 159; // Peaks Arrow Code
int valeArrowCode = 159; // Vales Arrow Code
int swingLowArrowCode = 225; // Swing Low Arrow Code
int swingHighArrowCode = 226; // Swing High Arrow Code
//
// Buffers ...
@@ -1626,6 +1626,11 @@ void CalculateBuffers(
barsLimit = ratesTotal;
firstBarIndex = barsLimit - 1;
}
else
{
//
firstBarIndex = startCalculationForLastBars;
}
//
// bool canCalculate = true;
+104 -104
View File
@@ -3671,110 +3671,110 @@ class XCXCAEAHelper : XCBase
// Conditions ...
//
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;
conditions.isOverMah = xcaConditions.isOverMah;
conditions.isOverMal = xcaConditions.isOverMal;
conditions.isOverMac = xcaConditions.isOverMac;
conditions.isUnderMah = xcaConditions.isUnderMah;
conditions.isUnderMal = xcaConditions.isUnderMal;
conditions.isUnderMac = xcaConditions.isUnderMac;
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.isCloseOverMah = xcaConditions.isCloseOverMah;
conditions.isCloseOverMal = xcaConditions.isCloseOverMal;
conditions.isCloseOverMac = xcaConditions.isCloseOverMac;
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.isCloseUnderMah = xcaConditions.isCloseUnderMah;
conditions.isCloseUnderMal = xcaConditions.isCloseUnderMal;
conditions.isCloseUnderMac = xcaConditions.isCloseUnderMac;
conditions.isTKIRejectDown = xcaConditions.isTKIRejectDown;
conditions.isPeakUnderLast = xcaConditions.isPeakUnderLast;
conditions.isValeUnderLast = xcaConditions.isValeUnderLast;
conditions.isTrendRejectUp = xcaConditions.isTrendRejectUp;
conditions.isCrossedOverMah = xcaConditions.isCrossedOverMah;
conditions.isCrossedOverMal = xcaConditions.isCrossedOverMal;
conditions.isCrossedOverMac = xcaConditions.isCrossedOverMac;
conditions.isCrossedUnderMah = xcaConditions.isCrossedUnderMah;
conditions.isCrossedUnderMal = xcaConditions.isCrossedUnderMal;
conditions.isCrossedUnderMac = xcaConditions.isCrossedUnderMac;
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.isMahBullishRejected = xcaConditions.isMahBullishRejected;
conditions.isMahBearishRejected = xcaConditions.isMahBearishRejected;
conditions.isMalBullishRejected = xcaConditions.isMalBullishRejected;
conditions.isMalBearishRejected = xcaConditions.isMalBearishRejected;
conditions.isMacBullishRejected = xcaConditions.isMacBullishRejected;
conditions.isMacBearishRejected = xcaConditions.isMacBearishRejected;
conditions.isLastSupportBreaked = xcaConditions.isLastSupportBreaked;
conditions.isResistanceSameLast = xcaConditions.isResistanceSameLast;
conditions.isResistanceOverLast = xcaConditions.isResistanceOverLast;
conditions.isSwingHighUnderLast = xcaConditions.isSwingHighUnderLast;
conditions.isSwingLowSameAsVale = xcaConditions.isSwingLowSameAsVale;
conditions.isCloseCrossedOverMah = xcaConditions.isCloseCrossedOverMah;
conditions.isCloseCrossedOverMal = xcaConditions.isCloseCrossedOverMal;
conditions.isCloseCrossedOverMac = xcaConditions.isCloseCrossedOverMac;
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.isCloseCrossedUnderMah = xcaConditions.isCloseCrossedUnderMah;
conditions.isCloseCrossedUnderMal = xcaConditions.isCloseCrossedUnderMal;
conditions.isCloseCrossedUnderMac = xcaConditions.isCloseCrossedUnderMac;
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;
//
// XOSCS ...
+2 -2
View File
@@ -1074,9 +1074,9 @@ bool DetectXCAEAConditions(
//
bool isCond2Bullish =
//
// false &&
false // &&
//
conditions.isRSIOS
// conditions.isRSIOS
//
// isVolumeOverAvg &&
// isVolumeBullish &&
+11 -8
View File
@@ -814,16 +814,19 @@ class XCXCAEASignaller : XCBase
inputs.x3maInputs.applyColor = true;
//
inputs.x3maInputs.showFast = true;
inputs.x3maInputs.showMedium = true;
inputs.x3maInputs.showSlow = true;
inputs.x3maInputs.showFast = false;
inputs.x3maInputs.showSlow = false;
inputs.x3maInputs.showMedium = false;
//
inputs.caInputs.showKI = false;
inputs.caInputs.showTKI = false;
inputs.caInputs.showSar = true;
inputs.caInputs.showVidya = true;
inputs.caInputs.showTrend = true;
inputs.caInputs.showSar = false;
inputs.caInputs.showMAH = true;
inputs.caInputs.showMAL = true;
inputs.caInputs.showMAC = true;
inputs.caInputs.showVidya = false;
inputs.caInputs.showTrend = false;
inputs.caInputs.showSwings = true;
inputs.caInputs.showLongCycle = false;
inputs.caInputs.showHindCycle = false;
@@ -834,7 +837,7 @@ class XCXCAEASignaller : XCBase
inputs.caInputs.showMediumCycle = false;
inputs.caInputs.showPeaksAndVales = true;
inputs.caInputs.showPeakAndValeGolden = false;
inputs.caInputs.showSupportAndResistance = false;
inputs.caInputs.showSupportAndResistance = true;
//
// XOSCS ...
@@ -849,7 +852,7 @@ class XCXCAEASignaller : XCBase
//
// Oscillators Views ...
inputs.showRSI = true;
inputs.showRSI = false;
inputs.showCCI = false;
inputs.showMFI = false;
inputs.showRVI = false;