// // Reading Previous Conditions ... ENUM_XPOI_EVENTS consolidationPoiEventsPrev[]; ENUM_X_CYCLE_EVENTS consolidationCycleEventsPrev[]; X121SMCCycleConditions consolidationConditionsPrev; result = consolidationCycleHelper.GetConditions( consolidationCycleEventsPrev, consolidationPoiEventsPrev, consolidationConditionsPrev, cIndex, loopback // ); if (!result) { return result; } // X121SMCCycleConditions conditionState = consolidationConditions; X121SMCCycleConditions conditionStatePrev = consolidationConditionsPrev; // XOHCL cCBar; result = cCBar.Init( conditionState.symbol, conditionState.period, cIndex // ); if (!result) { return result; } // XOHCL cPBar; result = cCBar.GetPreviousBar(cPBar); if (!result) { return result; } // // Engulf ... ENUM_X_DIRECTION cCBarEngulfDir; bool isCCBarEngulfed = consolidationCycleHelper .mBarAnalyser .IsEngulfBar( cCBar, cCBarEngulfDir, 0 // Extended ... ); bool isCCBarBullishEngulfed = isCCBarEngulfed && IsBullish(cCBarEngulfDir); bool isCCBarBearishEngulfed = isCCBarEngulfed && IsBearish(cCBarEngulfDir); // // Momentum ... ENUM_X_DIRECTION cCBarMomentumDir; bool isCCBarMomentum = consolidationCycleHelper .mBarAnalyser .IsMomentumBar( cCBar, cCBarMomentumDir, 1 // Extended ... ); bool isCCBarBullishMomentum = isCCBarMomentum && IsBullish(cCBarMomentumDir); bool isCCBarBearishMomentum = isCCBarMomentum && IsBearish(cCBarMomentumDir); // // Reject ... ENUM_X_DIRECTION cCBarRejectDir; bool isCCBarRejected = consolidationCycleHelper .mBarAnalyser .IsRejectionBar( cCBar, cCBarRejectDir, 1 // Extended ... ); bool isCCBarBullishRejected = isCCBarRejected && IsBullish(cCBarRejectDir); bool isCCBarBearishRejected = isCCBarRejected && IsBearish(cCBarRejectDir); // // Bar Checking Summary ... // // Bullish ... bool isCCBarPassedBullish = // isCCBarBullishEngulfed || isCCBarBullishMomentum || isCCBarBullishRejected // ; // // Bearish ... bool isCCBarPassedBearish = // isCCBarBearishEngulfed || isCCBarBearishMomentum || isCCBarBearishRejected // ; // double cPeakPrev = conditionStatePrev.x121Conditions.peaksBuffer[0]; double cValePrev = conditionStatePrev.x121Conditions.valesBuffer[0]; // double cPeak = conditionState.x121Conditions.peaksBuffer[1]; double cVale = conditionState.x121Conditions.valesBuffer[1]; // bool isCPeakSame = cPeak == cPeakPrev; bool isCValeSame = cVale == cValePrev; // bool isCNewPeakPrev = conditionStatePrev.x121Conditions.isNewPeak; bool isCNewPeakOverLastPrev = conditionStatePrev.x121Conditions.isNewPeakOverLast; bool isCNewPeakUnderLastPrev = conditionStatePrev.x121Conditions.isNewPeakUnderLast; // bool isCNewValePrev = conditionStatePrev.x121Conditions.isNewVale; bool isCNewValeOverLastPrev = conditionStatePrev.x121Conditions.isNewValeOverLast; bool isCNewValeUnderLastPrev = conditionStatePrev.x121Conditions.isNewValeUnderLast; // bool isCRSIOverSold = conditionState.x121Conditions.isRSIOverSold; bool isCRSICrossedOverOverSold = conditionState.x121Conditions.isRSICrossedOverOverSold; bool isCRSICrossedUnderOverSold = conditionState.x121Conditions.isRSICrossedUnderOverSold; // bool isCRSIOverBought = conditionState.x121Conditions.isRSIOverBought; bool isCRSICrossedOverOverBought = conditionState.x121Conditions.isRSICrossedOverOverBought; bool isCRSICrossedUnderOverBought = conditionState.x121Conditions.isRSICrossedUnderOverBought; // bool isCRSIOverSoldPrev = conditionStatePrev.x121Conditions.isRSIOverSold; bool isCRSICrossedOverOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverSold; bool isCRSICrossedUnderOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverSold; // bool isCRSIOverBoughtPrev = conditionStatePrev.x121Conditions.isRSIOverBought; bool isCRSICrossedOverOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverBought; bool isCRSICrossedUnderOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverBought; // isBullish = // isCNewValePrev && isCCBarPassedBullish // ; // isBearish = // isCNewPeakPrev && isCCBarPassedBearish // ; // result = isBullish || isBearish; if (!result) { return result; } // conditions.pivot = isBullish ? conditionState.x121Conditions.valesBuffer[1] : conditionState.x121Conditions.peaksBuffer[1]; // double peak = analyseConditions.x121Conditions.peaksBuffer[1]; double vale = analyseConditions.x121Conditions.valesBuffer[1]; // double strUpper = analyseConditions.x121Conditions.strUpBuffer[1]; double strLower = analyseConditions.x121Conditions.strDownBuffer[1]; // bool isStrSwitchedToBullish = analyseConditions.x121Conditions.isStrSwitchedToBullish; bool isStrSwitchedToBearish = analyseConditions.x121Conditions.isStrSwitchedToBearish; // isBullish = isStrSwitchedToBullish; isBearish = isStrSwitchedToBearish; // result = isBullish || isBearish; if (!result) { return result; } // conditions.pivot = isBullish ? peak : vale; // // Looking For Sar Change ... // double sar = analyseConditions.x121Conditions.sarBuffer[1]; // double peak = analyseConditions.x121Conditions.peaksBuffer[1]; double vale = analyseConditions.x121Conditions.valesBuffer[1]; // bool isSarEqualsToPeak = analyseConditions.x121Conditions.isSarEqualsToPeak; bool isSarEqualsToVale = analyseConditions.x121Conditions.isSarEqualsToVale; // bool isSarSwitchedToBullish = analyseConditions.x121Conditions.isSarSwitchedToBullish; bool isSarSwitchedToBearish = analyseConditions.x121Conditions.isSarSwitchedToBearish; // isBullish = isBullish && isSarEqualsToPeak && isSarSwitchedToBullish; // isBearish = isBearish && isSarEqualsToVale && isSarSwitchedToBearish; // result = isBullish || isBearish; if (!result) { return result; } // Print("Sar Switched ..."); // // Detect a Zone Arround Price Zone ... int supplyZonesCount = consolidationState.CountSupplyZones(); if (IsValidSize(supplyZonesCount)) { // for (int i = 0; i < supplyZonesCount; i++) { // XCSupplyZone *iZone = consolidationState.supplyZones[i]; // bool isOver = iZone.Lower() > pzUpper; bool isUnder = iZone.Upper() < pzLower; // bool isValid = isOver || isUnder; if (isValid) { } } } // // Method 1 ... // VWap Switch Start ... // bool bullishMethod1 = // isSarBullish && isStrBullish && isSlopesBullish && hasBullishTrend && cBar.IsBullish() && isAtrBullishSlope && isPVBullishFormed && isRsiBullishFormed && isVWapBullishFormed // ; // bool bearishMethod1 = // isSarBearish && isStrBearish && isSlopesBearish && hasBearishTrend && cBar.IsBearish() && isAtrBearishSlope && isPVBearishFormed && isRsiBearishFormed && isVWapBearishFormed // ;