From e938c430f47311db489eec3bc77f82fd8e50632c Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Tue, 29 Apr 2025 12:28:35 +0330 Subject: [PATCH] apply fix issues on reading and calculating swings and ... on XCA indicators ... --- Helpers/x-saherelm.x121.xca.helper.mq5 | 16 +- Indicators/x-saherelm.x121.xca.mq5 | 15 +- XCAEA/Helpers/xcaea.helper.mq5 | 208 ++++++++++++------------ XCAEA/Libraries/xcaea.signaller.lib.mq5 | 4 +- XCAEA/Signals/xcaea.signaller.class.mq5 | 19 ++- 5 files changed, 135 insertions(+), 127 deletions(-) diff --git a/Helpers/x-saherelm.x121.xca.helper.mq5 b/Helpers/x-saherelm.x121.xca.helper.mq5 index 8c7a3603..849b24d4 100644 --- a/Helpers/x-saherelm.x121.xca.helper.mq5 +++ b/Helpers/x-saherelm.x121.xca.helper.mq5 @@ -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 diff --git a/Indicators/x-saherelm.x121.xca.mq5 b/Indicators/x-saherelm.x121.xca.mq5 index edac4e86..6810e544 100644 --- a/Indicators/x-saherelm.x121.xca.mq5 +++ b/Indicators/x-saherelm.x121.xca.mq5 @@ -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; diff --git a/XCAEA/Helpers/xcaea.helper.mq5 b/XCAEA/Helpers/xcaea.helper.mq5 index 2d106b0b..b5d2bf11 100644 --- a/XCAEA/Helpers/xcaea.helper.mq5 +++ b/XCAEA/Helpers/xcaea.helper.mq5 @@ -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 ... diff --git a/XCAEA/Libraries/xcaea.signaller.lib.mq5 b/XCAEA/Libraries/xcaea.signaller.lib.mq5 index d63bec25..c5ae7a2d 100644 --- a/XCAEA/Libraries/xcaea.signaller.lib.mq5 +++ b/XCAEA/Libraries/xcaea.signaller.lib.mq5 @@ -1074,9 +1074,9 @@ bool DetectXCAEAConditions( // bool isCond2Bullish = // - // false && + false // && // - conditions.isRSIOS + // conditions.isRSIOS // // isVolumeOverAvg && // isVolumeBullish && diff --git a/XCAEA/Signals/xcaea.signaller.class.mq5 b/XCAEA/Signals/xcaea.signaller.class.mq5 index 37f90530..13e6022c 100644 --- a/XCAEA/Signals/xcaea.signaller.class.mq5 +++ b/XCAEA/Signals/xcaea.signaller.class.mq5 @@ -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;