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; isSarFinishedFromBullish = false;
isSarFinishedFromBearish = false; isSarFinishedFromBearish = false;
// //
// MANALYSER ... // MANALYSER ...
@@ -1902,13 +1902,13 @@ class XCX121XCAHelper : public XCBaseHelper
mInputs.showShortCycle, mInputs.showShortCycle,
mInputs.showMediumCycle, mInputs.showMediumCycle,
mInputs.showLongCycle, mInputs.showLongCycle,
mInputs.showHindCycle, mInputs.showHindCycle // ,
// //
mInputs.sarArrowCode, // mInputs.sarArrowCode,
mInputs.peakArrowCode, // mInputs.peakArrowCode,
mInputs.valeArrowCode, // mInputs.valeArrowCode,
mInputs.swingLowArrowCode, // mInputs.swingLowArrowCode,
mInputs.swingHighArrowCode // mInputs.swingHighArrowCode
// //
); );
result = mHandler != INVALID_HANDLE; result = mHandler != INVALID_HANDLE;
@@ -2823,7 +2823,7 @@ class XCX121XCAHelper : public XCBaseHelper
} }
// //
int CopyMlh( int CopyMal(
int start, // Start int start, // Start
int count, // Number of Items for read int count, // Number of Items for read
double &buffer[], // Dest Buffer 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 bool showHindCycle = true; // Show Hind Cycle
// //
input int sarArrowCode = 159; // Parabolic Sar Arrow Code int sarArrowCode = 159; // Parabolic Sar Arrow Code
input int peakArrowCode = 159; // Peaks Arrow Code int peakArrowCode = 159; // Peaks Arrow Code
input int valeArrowCode = 159; // Vales Arrow Code int valeArrowCode = 159; // Vales Arrow Code
input int swingLowArrowCode = 225; // Swing Low Arrow Code int swingLowArrowCode = 225; // Swing Low Arrow Code
input int swingHighArrowCode = 226; // Swing High Arrow Code int swingHighArrowCode = 226; // Swing High Arrow Code
// //
// Buffers ... // Buffers ...
@@ -1626,6 +1626,11 @@ void CalculateBuffers(
barsLimit = ratesTotal; barsLimit = ratesTotal;
firstBarIndex = barsLimit - 1; firstBarIndex = barsLimit - 1;
} }
else
{
//
firstBarIndex = startCalculationForLastBars;
}
// //
// bool canCalculate = true; // bool canCalculate = true;
+104 -104
View File
@@ -3671,110 +3671,110 @@ class XCXCAEAHelper : XCBase
// Conditions ... // Conditions ...
// //
conditions.isOverMah = isOverMah; conditions.isOverMah = xcaConditions.isOverMah;
conditions.isOverMal = isOverMal; conditions.isOverMal = xcaConditions.isOverMal;
conditions.isOverMac = isOverMac; conditions.isOverMac = xcaConditions.isOverMac;
conditions.isUnderMah = isUnderMah; conditions.isUnderMah = xcaConditions.isUnderMah;
conditions.isUnderMal = isUnderMal; conditions.isUnderMal = xcaConditions.isUnderMal;
conditions.isUnderMac = isUnderMac; conditions.isUnderMac = xcaConditions.isUnderMac;
conditions.isKIBullish = isKIBullish; conditions.isKIBullish = xcaConditions.isKIBullish;
conditions.isKIBearish = isKIBearish; conditions.isKIBearish = xcaConditions.isKIBearish;
conditions.isKIRejectUp = isKIRejectUp; conditions.isKIRejectUp = xcaConditions.isKIRejectUp;
conditions.isTKIBullish = isTKIBullish; conditions.isTKIBullish = xcaConditions.isTKIBullish;
conditions.isTKIBearish = isTKIBearish; conditions.isTKIBearish = xcaConditions.isTKIBearish;
conditions.isSarBullish = isSarBullish; conditions.isSarBullish = xcaConditions.isSarBullish;
conditions.isSarBearish = isSarBearish; conditions.isSarBearish = xcaConditions.isSarBearish;
conditions.isTKIRejectUp = isTKIRejectUp; conditions.isTKIRejectUp = xcaConditions.isTKIRejectUp;
conditions.isPeakIsPivot = isPeakIsPivot; conditions.isPeakIsPivot = xcaConditions.isPeakIsPivot;
conditions.isValeIsPivot = isValeIsPivot; conditions.isValeIsPivot = xcaConditions.isValeIsPivot;
conditions.isCloseOverMah = isCloseOverMah; conditions.isCloseOverMah = xcaConditions.isCloseOverMah;
conditions.isCloseOverMal = isCloseOverMal; conditions.isCloseOverMal = xcaConditions.isCloseOverMal;
conditions.isCloseOverMac = isCloseOverMac; conditions.isCloseOverMac = xcaConditions.isCloseOverMac;
conditions.isVidyaBullish = isVidyaBullish; conditions.isVidyaBullish = xcaConditions.isVidyaBullish;
conditions.isVidyaBearish = isVidyaBearish; conditions.isVidyaBearish = xcaConditions.isVidyaBearish;
conditions.isKIRejectDown = isKIRejectDown; conditions.isKIRejectDown = xcaConditions.isKIRejectDown;
conditions.isPeakSameLast = isPeakSameLast; conditions.isPeakSameLast = xcaConditions.isPeakSameLast;
conditions.isPeakOverLast = isPeakOverLast; conditions.isPeakOverLast = xcaConditions.isPeakOverLast;
conditions.isValeSameLast = isValeSameLast; conditions.isValeSameLast = xcaConditions.isValeSameLast;
conditions.isValeOverLast = isValeOverLast; conditions.isValeOverLast = xcaConditions.isValeOverLast;
conditions.isTrendBullish = isTrendBullish; conditions.isTrendBullish = xcaConditions.isTrendBullish;
conditions.isTrendBearish = isTrendBearish; conditions.isTrendBearish = xcaConditions.isTrendBearish;
conditions.isCloseUnderMah = isCloseUnderMah; conditions.isCloseUnderMah = xcaConditions.isCloseUnderMah;
conditions.isCloseUnderMal = isCloseUnderMal; conditions.isCloseUnderMal = xcaConditions.isCloseUnderMal;
conditions.isCloseUnderMac = isCloseUnderMac; conditions.isCloseUnderMac = xcaConditions.isCloseUnderMac;
conditions.isTKIRejectDown = isTKIRejectDown; conditions.isTKIRejectDown = xcaConditions.isTKIRejectDown;
conditions.isPeakUnderLast = isPeakUnderLast; conditions.isPeakUnderLast = xcaConditions.isPeakUnderLast;
conditions.isValeUnderLast = isValeUnderLast; conditions.isValeUnderLast = xcaConditions.isValeUnderLast;
conditions.isTrendRejectUp = isTrendRejectUp; conditions.isTrendRejectUp = xcaConditions.isTrendRejectUp;
conditions.isCrossedOverMah = isCrossedOverMah; conditions.isCrossedOverMah = xcaConditions.isCrossedOverMah;
conditions.isCrossedOverMal = isCrossedOverMal; conditions.isCrossedOverMal = xcaConditions.isCrossedOverMal;
conditions.isCrossedOverMac = isCrossedOverMac; conditions.isCrossedOverMac = xcaConditions.isCrossedOverMac;
conditions.isCrossedUnderMah = isCrossedUnderMah; conditions.isCrossedUnderMah = xcaConditions.isCrossedUnderMah;
conditions.isCrossedUnderMal = isCrossedUnderMal; conditions.isCrossedUnderMal = xcaConditions.isCrossedUnderMal;
conditions.isCrossedUnderMac = isCrossedUnderMac; conditions.isCrossedUnderMac = xcaConditions.isCrossedUnderMac;
conditions.isTrendRejectDown = isTrendRejectDown; conditions.isTrendRejectDown = xcaConditions.isTrendRejectDown;
conditions.isSupportSameLast = isSupportSameLast; conditions.isSupportSameLast = xcaConditions.isSupportSameLast;
conditions.isSupportOverLast = isSupportOverLast; conditions.isSupportOverLast = xcaConditions.isSupportOverLast;
conditions.isSupportUnderLast = isSupportUnderLast; conditions.isSupportUnderLast = xcaConditions.isSupportUnderLast;
conditions.isSwingLowSameLast = isSwingLowSameLast; conditions.isSwingLowSameLast = xcaConditions.isSwingLowSameLast;
conditions.isSwingLowOverLast = isSwingLowOverLast; conditions.isSwingLowOverLast = xcaConditions.isSwingLowOverLast;
conditions.isSwingLowUnderLast = isSwingLowUnderLast; conditions.isSwingLowUnderLast = xcaConditions.isSwingLowUnderLast;
conditions.isSwingHighSameLast = isSwingHighSameLast; conditions.isSwingHighSameLast = xcaConditions.isSwingHighSameLast;
conditions.isSwingHighOverLast = isSwingHighOverLast; conditions.isSwingHighOverLast = xcaConditions.isSwingHighOverLast;
conditions.isSupportSameAsVale = isSupportSameAsVale; conditions.isSupportSameAsVale = xcaConditions.isSupportSameAsVale;
conditions.isMahBullishRejected = isMahBullishRejected; conditions.isMahBullishRejected = xcaConditions.isMahBullishRejected;
conditions.isMahBearishRejected = isMahBearishRejected; conditions.isMahBearishRejected = xcaConditions.isMahBearishRejected;
conditions.isMalBullishRejected = isMalBullishRejected; conditions.isMalBullishRejected = xcaConditions.isMalBullishRejected;
conditions.isMalBearishRejected = isMalBearishRejected; conditions.isMalBearishRejected = xcaConditions.isMalBearishRejected;
conditions.isMacBullishRejected = isMacBullishRejected; conditions.isMacBullishRejected = xcaConditions.isMacBullishRejected;
conditions.isMacBearishRejected = isMacBearishRejected; conditions.isMacBearishRejected = xcaConditions.isMacBearishRejected;
conditions.isLastSupportBreaked = isLastSupportBreaked; conditions.isLastSupportBreaked = xcaConditions.isLastSupportBreaked;
conditions.isResistanceSameLast = isResistanceSameLast; conditions.isResistanceSameLast = xcaConditions.isResistanceSameLast;
conditions.isResistanceOverLast = isResistanceOverLast; conditions.isResistanceOverLast = xcaConditions.isResistanceOverLast;
conditions.isSwingHighUnderLast = isSwingHighUnderLast; conditions.isSwingHighUnderLast = xcaConditions.isSwingHighUnderLast;
conditions.isSwingLowSameAsVale = isSwingLowSameAsVale; conditions.isSwingLowSameAsVale = xcaConditions.isSwingLowSameAsVale;
conditions.isCloseCrossedOverMah = isCloseCrossedOverMah; conditions.isCloseCrossedOverMah = xcaConditions.isCloseCrossedOverMah;
conditions.isCloseCrossedOverMal = isCloseCrossedOverMal; conditions.isCloseCrossedOverMal = xcaConditions.isCloseCrossedOverMal;
conditions.isCloseCrossedOverMac = isCloseCrossedOverMac; conditions.isCloseCrossedOverMac = xcaConditions.isCloseCrossedOverMac;
conditions.isLastSupportRejected = isLastSupportRejected; conditions.isLastSupportRejected = xcaConditions.isLastSupportRejected;
conditions.isResistanceUnderLast = isResistanceUnderLast; conditions.isResistanceUnderLast = xcaConditions.isResistanceUnderLast;
conditions.isKISwitchedToBullish = isKISwitchedToBullish; conditions.isKISwitchedToBullish = xcaConditions.isKISwitchedToBullish;
conditions.isKISwitchedToBearish = isKISwitchedToBearish; conditions.isKISwitchedToBearish = xcaConditions.isKISwitchedToBearish;
conditions.isLastSwingLowBreaked = isLastSwingLowBreaked; conditions.isLastSwingLowBreaked = xcaConditions.isLastSwingLowBreaked;
conditions.isSwingHighSameAsPeak = isSwingHighSameAsPeak; conditions.isSwingHighSameAsPeak = xcaConditions.isSwingHighSameAsPeak;
conditions.isPeakSwitchedToPivot = isPeakSwitchedToPivot; conditions.isPeakSwitchedToPivot = xcaConditions.isPeakSwitchedToPivot;
conditions.isValeSwitchedToPivot = isValeSwitchedToPivot; conditions.isValeSwitchedToPivot = xcaConditions.isValeSwitchedToPivot;
conditions.isCloseCrossedUnderMah = isCloseCrossedUnderMah; conditions.isCloseCrossedUnderMah = xcaConditions.isCloseCrossedUnderMah;
conditions.isCloseCrossedUnderMal = isCloseCrossedUnderMal; conditions.isCloseCrossedUnderMal = xcaConditions.isCloseCrossedUnderMal;
conditions.isCloseCrossedUnderMac = isCloseCrossedUnderMac; conditions.isCloseCrossedUnderMac = xcaConditions.isCloseCrossedUnderMac;
conditions.isTKISwitchedToBullish = isTKISwitchedToBullish; conditions.isTKISwitchedToBullish = xcaConditions.isTKISwitchedToBullish;
conditions.isTKISwitchedToBearish = isTKISwitchedToBearish; conditions.isTKISwitchedToBearish = xcaConditions.isTKISwitchedToBearish;
conditions.isLastSwingLowRejected = isLastSwingLowRejected; conditions.isLastSwingLowRejected = xcaConditions.isLastSwingLowRejected;
conditions.isSarSwitchedToBullish = isSarSwitchedToBullish; conditions.isSarSwitchedToBullish = xcaConditions.isSarSwitchedToBullish;
conditions.isSarSwitchedToBearish = isSarSwitchedToBearish; conditions.isSarSwitchedToBearish = xcaConditions.isSarSwitchedToBearish;
conditions.isLastSwingHighBreaked = isLastSwingHighBreaked; conditions.isLastSwingHighBreaked = xcaConditions.isLastSwingHighBreaked;
conditions.isResistanceSameAsPeak = isResistanceSameAsPeak; conditions.isResistanceSameAsPeak = xcaConditions.isResistanceSameAsPeak;
conditions.isPeakFinishedFromPivot = isPeakFinishedFromPivot; conditions.isPeakFinishedFromPivot = xcaConditions.isPeakFinishedFromPivot;
conditions.isValeFinishedFromPivot = isValeFinishedFromPivot; conditions.isValeFinishedFromPivot = xcaConditions.isValeFinishedFromPivot;
conditions.isLastSwingHighRejected = isLastSwingHighRejected; conditions.isLastSwingHighRejected = xcaConditions.isLastSwingHighRejected;
conditions.isLastResistanceBreaked = isLastResistanceBreaked; conditions.isLastResistanceBreaked = xcaConditions.isLastResistanceBreaked;
conditions.isSupportSameAsSwingLow = isSupportSameAsSwingLow; conditions.isSupportSameAsSwingLow = xcaConditions.isSupportSameAsSwingLow;
conditions.isKIFinishedFromBullish = isKIFinishedFromBullish; conditions.isKIFinishedFromBullish = xcaConditions.isKIFinishedFromBullish;
conditions.isKIFinishedFromBearish = isKIFinishedFromBearish; conditions.isKIFinishedFromBearish = xcaConditions.isKIFinishedFromBearish;
conditions.isTKIFinishedFromBullish = isTKIFinishedFromBullish; conditions.isTKIFinishedFromBullish = xcaConditions.isTKIFinishedFromBullish;
conditions.isTKIFinishedFromBearish = isTKIFinishedFromBearish; conditions.isTKIFinishedFromBearish = xcaConditions.isTKIFinishedFromBearish;
conditions.isSarFinishedFromBullish = isSarFinishedFromBullish; conditions.isSarFinishedFromBullish = xcaConditions.isSarFinishedFromBullish;
conditions.isSarFinishedFromBearish = isSarFinishedFromBearish; conditions.isSarFinishedFromBearish = xcaConditions.isSarFinishedFromBearish;
conditions.isVidyaSwitchedToBullish = isVidyaSwitchedToBullish; conditions.isVidyaSwitchedToBullish = xcaConditions.isVidyaSwitchedToBullish;
conditions.isVidyaSwitchedToBearish = isVidyaSwitchedToBearish; conditions.isVidyaSwitchedToBearish = xcaConditions.isVidyaSwitchedToBearish;
conditions.isLastResistanceRejected = isLastResistanceRejected; conditions.isLastResistanceRejected = xcaConditions.isLastResistanceRejected;
conditions.isTrendSwitchedToBullish = isTrendSwitchedToBullish; conditions.isTrendSwitchedToBullish = xcaConditions.isTrendSwitchedToBullish;
conditions.isTrendSwitchedToBearish = isTrendSwitchedToBearish; conditions.isTrendSwitchedToBearish = xcaConditions.isTrendSwitchedToBearish;
conditions.isVidyaFinishedFromBullish = isVidyaFinishedFromBullish; conditions.isVidyaFinishedFromBullish = xcaConditions.isVidyaFinishedFromBullish;
conditions.isVidyaFinishedFromBearish = isVidyaFinishedFromBearish; conditions.isVidyaFinishedFromBearish = xcaConditions.isVidyaFinishedFromBearish;
conditions.isTrendFinishedFromBullish = isTrendFinishedFromBullish; conditions.isTrendFinishedFromBullish = xcaConditions.isTrendFinishedFromBullish;
conditions.isTrendFinishedFromBearish = isTrendFinishedFromBearish; conditions.isTrendFinishedFromBearish = xcaConditions.isTrendFinishedFromBearish;
conditions.isResistanceSameAsSwingHigh = isResistanceSameAsSwingHigh; conditions.isResistanceSameAsSwingHigh = xcaConditions.isResistanceSameAsSwingHigh;
// //
// XOSCS ... // XOSCS ...
+2 -2
View File
@@ -1074,9 +1074,9 @@ bool DetectXCAEAConditions(
// //
bool isCond2Bullish = bool isCond2Bullish =
// //
// false && false // &&
// //
conditions.isRSIOS // conditions.isRSIOS
// //
// isVolumeOverAvg && // isVolumeOverAvg &&
// isVolumeBullish && // isVolumeBullish &&
+11 -8
View File
@@ -814,16 +814,19 @@ class XCXCAEASignaller : XCBase
inputs.x3maInputs.applyColor = true; inputs.x3maInputs.applyColor = true;
// //
inputs.x3maInputs.showFast = true; inputs.x3maInputs.showFast = false;
inputs.x3maInputs.showMedium = true; inputs.x3maInputs.showSlow = false;
inputs.x3maInputs.showSlow = true; inputs.x3maInputs.showMedium = false;
// //
inputs.caInputs.showKI = false; inputs.caInputs.showKI = false;
inputs.caInputs.showTKI = false; inputs.caInputs.showTKI = false;
inputs.caInputs.showSar = true; inputs.caInputs.showSar = false;
inputs.caInputs.showVidya = true; inputs.caInputs.showMAH = true;
inputs.caInputs.showTrend = true; inputs.caInputs.showMAL = true;
inputs.caInputs.showMAC = true;
inputs.caInputs.showVidya = false;
inputs.caInputs.showTrend = false;
inputs.caInputs.showSwings = true; inputs.caInputs.showSwings = true;
inputs.caInputs.showLongCycle = false; inputs.caInputs.showLongCycle = false;
inputs.caInputs.showHindCycle = false; inputs.caInputs.showHindCycle = false;
@@ -834,7 +837,7 @@ class XCXCAEASignaller : XCBase
inputs.caInputs.showMediumCycle = false; inputs.caInputs.showMediumCycle = false;
inputs.caInputs.showPeaksAndVales = true; inputs.caInputs.showPeaksAndVales = true;
inputs.caInputs.showPeakAndValeGolden = false; inputs.caInputs.showPeakAndValeGolden = false;
inputs.caInputs.showSupportAndResistance = false; inputs.caInputs.showSupportAndResistance = true;
// //
// XOSCS ... // XOSCS ...
@@ -849,7 +852,7 @@ class XCXCAEASignaller : XCBase
// //
// Oscillators Views ... // Oscillators Views ...
inputs.showRSI = true; inputs.showRSI = false;
inputs.showCCI = false; inputs.showCCI = false;
inputs.showMFI = false; inputs.showMFI = false;
inputs.showRVI = false; inputs.showRVI = false;