diff --git a/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 b/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 index 16578f5f..5227ff5a 100644 --- a/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 +++ b/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 @@ -2626,6 +2626,7 @@ struct X121SMCStrategyConditionParser } // + // Rejected Box ... bool HasSenario1Conditions( ENUM_X_CYCLES cycle, XBoxZone &box, @@ -2633,7 +2634,6 @@ struct X121SMCStrategyConditionParser ENUM_X_DIRECTION &dir, XSignalBox &waitingBoxes[], X121SMCStrategySignalProviderData &provider, - ENUM_X_CYCLES holderCycle = X_CYCLE_NONE, int barIndex = 0 // ) { @@ -2669,41 +2669,6 @@ struct X121SMCStrategyConditionParser } Parse(cXConditions); - // - // Fil Selected Data ... - XPOIState chState; - X121Conditions chXConditions; - XPOIStateEvents chStateEvents; - XC121SMCCycleHelper *chHelper; - X121SMCCycleConditions chConditions; - if (holderCycle != X_CYCLE_NONE) - { - // - result = provider.SelectCycle( - holderCycle, - chState, - chStateEvents, - chXConditions, - chHelper, - chConditions // - ); - if (!result) - { - // - chState.Clean(); - ZeroMemory(chHelper); - chConditions.Clean(); - chXConditions.Clean(); - chStateEvents.Clean(); - - // - return result; - } - - // - Parse(chXConditions); - } - // // Checking Waiting Baoxes Exists ... result = HasChild(waitingBoxes); @@ -2712,11 +2677,6 @@ struct X121SMCStrategyConditionParser return result; } - // - XCPOIDrawer *drawer = provider - .visionCycleHelper - .mPOIDrawer; - // // Normalize Args ... @@ -2771,13 +2731,9 @@ struct X121SMCStrategyConditionParser cBar.Clean(); pBar.Clean(); cState.Clean(); - chState.Clean(); ZeroMemory(cHelper); cConditions.Clean(); cXConditions.Clean(); - ZeroMemory(chHelper); - chConditions.Clean(); - chXConditions.Clean(); // return result; @@ -3007,6 +2963,100 @@ struct X121SMCStrategyConditionParser // box.to = TimeCurrent(); + + // + // Detect Holder Box ... + XBoxZone tmpBoxes[]; + if (isBullish) + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bullishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + else + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bearishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + + // + count = ArraySize(tmpBoxes); + has = IsValidSize(count); + if (has) + { + // + while (HasChild(tmpBoxes)) + { + // + idx = GetOldest(tmpBoxes); + has = IsValidIndex(idx); + if (!has) + { + break; + } + + // + XBoxZone iBox = tmpBoxes[idx]; + ArrayRemove( + tmpBoxes, + idx, + 1 // + ); + + // + has = IsBoxInside( + iBox, + box // + ); + if (has) + { + // + holderBox = iBox; + holderBox.to = TimeCurrent(); + iBox.Clean(); + break; + } + + // + iBox.Clean(); + } + } + + // + Clean(tmpBoxes); + + // + result = + result && + holderBox.IsValid() && + holderBox.dir == dir; + if (!result) + { + // + box.Clean(); + isBullish = false; + isBearish = false; + holderBox.Clean(); + } } // @@ -3023,16 +3073,906 @@ struct X121SMCStrategyConditionParser cBar.Clean(); pBar.Clean(); cState.Clean(); - chState.Clean(); iSignalBox.Clean(); ZeroMemory(cHelper); cConditions.Clean(); cStateEvents.Clean(); cXConditions.Clean(); - ZeroMemory(chHelper); - chConditions.Clean(); - chStateEvents.Clean(); - chXConditions.Clean(); + + // + return result; + } + + // + // Activated Box + bool HasSenario2Conditions( + ENUM_X_CYCLES cycle, + XBoxZone &box, + XBoxZone &holderBox, + ENUM_X_DIRECTION &dir, + XSignalBox &waitingBoxes[], + X121SMCStrategySignalProviderData &provider, + int barIndex = 0 // + ) + { + // + bool result = false; + + // + // Fil Selected Data ... + XPOIState cState; + X121Conditions cXConditions; + XPOIStateEvents cStateEvents; + XC121SMCCycleHelper *cHelper; + X121SMCCycleConditions cConditions; + result = provider.SelectCycle( + cycle, + cState, + cStateEvents, + cXConditions, + cHelper, + cConditions // + ); + if (!result) + { + // + cState.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cXConditions.Clean(); + cStateEvents.Clean(); + + // + return result; + } + Parse(cXConditions); + + // + // Checking Waiting Baoxes Exists ... + result = HasChild(waitingBoxes); + if (!result) + { + return result; + } + + // + // Normalize Args ... + + // + box.Clean(); + holderBox.Clean(); + dir = X_DIRECTION_NONE; + + // + if (barIndex < 0) + { + barIndex = 0; + } + + // + int idx = -1; + int count = 0; + bool has = false; + + // + int zIDX = barIndex; + int cIDX = zIDX + 1; + int pIDX = cIDX + 1; + int ppIDX = pIDX + 1; + + // + bool isBullish = false; + bool isBearish = false; + + // + XOHCL zBar; + XOHCL cBar; + XOHCL pBar; + XOHCL pPBar; + + // + // Initial Bars ... + result = zBar.Init( + cState.symbol, + cState.period, + barIndex // + ); + result = + result && + zBar.GetPreviousBar(cBar); + result = + result && + cBar.GetPreviousBar(pBar); + result = + result && + pBar.GetPreviousBar(pPBar); + if (!result) + { + // + zBar.Clean(); + cBar.Clean(); + pBar.Clean(); + pPBar.Clean(); + cState.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cXConditions.Clean(); + + // + return result; + } + + // + ENUM_X_DIRECTION iBarPosDir; + bool isBarValidForDir = cHelper + .mBarAnalyser + .IsValidForPosition( + cBar, + iBarPosDir // + ); + bool isBarValidForBullish = + isBarValidForDir && + IsBullish(iBarPosDir); + bool isBarValidForBearish = + isBarValidForDir && + IsBearish(iBarPosDir); + + // + XSignalBox iSignalBox; + count = ArraySize(waitingBoxes); + has = IsValidSize(count); + if (has) + { + // + for (int i = 0; i < count; i++) + { + // + XSignalBox iBox = waitingBoxes[i]; + + // + bool isBullish = iBox.ob.IsBullish(); + bool hasFVG = iBox.fvg.IsValid(); + + // + // Checking Inside ... + + // + bool isBullishInsideFVG = + // + hasFVG && + pBar.high < iBox.fvg.upper && + pPBar.high < iBox.fvg.upper + // + ; + + // + bool isBearishInsideFVG = + // + hasFVG && + pBar.low > iBox.fvg.lower && + pPBar.low > iBox.fvg.lower + // + ; + + // + bool isBullishInsideOB = + // + pBar.high < iBox.ob.upper && + pPBar.high < iBox.ob.upper + // + ; + + // + bool isBearishInsideOB = + // + pBar.low > iBox.ob.lower && + pPBar.low > iBox.ob.lower + // + ; + + // + // Checking Breakes Box ... + + // + bool isFVGBullishBreaked = + // + hasFVG && + isBullishInsideFVG && + // + cBar.high > iBox.fvg.upper && + cBar.close > iBox.fvg.upper && + // + zBar.open > iBox.fvg.upper + // + ; + + // + bool isFVGBearishBreaked = + // + hasFVG && + isBearishInsideFVG && + // + cBar.low < iBox.fvg.lower && + cBar.close < iBox.fvg.lower && + // + zBar.open > iBox.fvg.lower + // + ; + + // + bool isOBBullishBreaked = + // + isBullishInsideOB && + // + cBar.high > iBox.ob.upper && + cBar.close > iBox.ob.upper && + // + zBar.open > iBox.ob.upper + // + ; + + // + bool isOBBearishBreaked = + // + isBearishInsideOB && + // + cBar.low < iBox.ob.lower && + cBar.close < iBox.ob.lower && + // + zBar.open > iBox.ob.lower + // + ; + + // + // Summarise ... + + // + bool isBullishBreaked = + isBarValidForBullish && + (hasFVG + ? isFVGBullishBreaked + : isOBBullishBreaked); + + // + bool isBearishBreaked = + isBarValidForBearish && + (hasFVG + ? isFVGBearishBreaked + : isOBBearishBreaked); + + // + has = isBullishBreaked || + isBearishBreaked; + // + if (has) + { + // + iSignalBox = iBox; + iBox.Clean(); + + // + dir = + isBullishBreaked + ? X_DIRECTION_BULLISH + : isBearishBreaked + ? X_DIRECTION_BEARISH + : X_DIRECTION_NONE; + + // + break; + } + + // + iBox.Clean(); + } + } + + // + bool hasSignalBox = HasDirection(dir) && + iSignalBox.IsValid(); + bool isSignalBoxBullish = IsBullish(dir); + + // + // Bullish Conditions ... + isBullish = + // + // Base Condition ... + ( + // + hasSignalBox && + isSignalBoxBullish && + isBarValidForBullish + // + ) + // + ; + + // + // Bearish Conditions ... + isBearish = + // + // Base Condition ... + ( + // + hasSignalBox && + !isSignalBoxBullish && + isBarValidForBearish + // + ) + // + ; + + // + // Filling Requirements ... + result = + isBullish || + isBearish; + if (result) + { + // + dir = + isBullish + ? X_DIRECTION_BULLISH + : X_DIRECTION_BEARISH; + + // + if (iSignalBox.fvg.IsValid()) + { + box = iSignalBox.fvg; + } + else + { + box = iSignalBox.ob; + } + + // + box.to = TimeCurrent(); + + // + // Detect Holder Box ... + XBoxZone tmpBoxes[]; + if (isBullish) + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bullishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + else + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bearishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + + // + count = ArraySize(tmpBoxes); + has = IsValidSize(count); + if (has) + { + // + while (HasChild(tmpBoxes)) + { + // + idx = GetOldest(tmpBoxes); + has = IsValidIndex(idx); + if (!has) + { + break; + } + + // + XBoxZone iBox = tmpBoxes[idx]; + ArrayRemove( + tmpBoxes, + idx, + 1 // + ); + + // + has = IsBoxInside( + iBox, + box // + ); + if (has) + { + // + holderBox = iBox; + holderBox.to = TimeCurrent(); + iBox.Clean(); + break; + } + + // + iBox.Clean(); + } + } + + // + Clean(tmpBoxes); + + // + result = + result && + holderBox.IsValid() && + holderBox.dir == dir; + if (!result) + { + // + box.Clean(); + isBullish = false; + isBearish = false; + holderBox.Clean(); + } + } + + // + // Check All Conditions ... + result = + box.IsValid() && + HasDirection(dir) && + (isBullish || + isBearish); + + // + // Cleanup Resources ... + zBar.Clean(); + cBar.Clean(); + pBar.Clean(); + pPBar.Clean(); + cState.Clean(); + iSignalBox.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cStateEvents.Clean(); + cXConditions.Clean(); + + // + return result; + } + + // + // Breaked Box + bool HasSenario3Conditions( + ENUM_X_CYCLES cycle, + XBoxZone &box, + XBoxZone &holderBox, + ENUM_X_DIRECTION &dir, + XSignalBox &waitingBoxes[], + X121SMCStrategySignalProviderData &provider, + int barIndex = 0 // + ) + { + // + bool result = false; + + // + // Fil Selected Data ... + XPOIState cState; + X121Conditions cXConditions; + XPOIStateEvents cStateEvents; + XC121SMCCycleHelper *cHelper; + X121SMCCycleConditions cConditions; + result = provider.SelectCycle( + cycle, + cState, + cStateEvents, + cXConditions, + cHelper, + cConditions // + ); + if (!result) + { + // + cState.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cXConditions.Clean(); + cStateEvents.Clean(); + + // + return result; + } + Parse(cXConditions); + + // + // Checking Waiting Baoxes Exists ... + result = HasChild(waitingBoxes); + if (!result) + { + return result; + } + + // + // Normalize Args ... + + // + box.Clean(); + holderBox.Clean(); + dir = X_DIRECTION_NONE; + + // + if (barIndex < 0) + { + barIndex = 0; + } + + // + int idx = -1; + int count = 0; + bool has = false; + + // + int zIDX = barIndex; + int cIDX = zIDX + 1; + int pIDX = cIDX + 1; + int ppIDX = pIDX + 1; + + // + bool isBullish = false; + bool isBearish = false; + + // + XOHCL zBar; + XOHCL cBar; + XOHCL pBar; + XOHCL pPBar; + + // + // Initial Bars ... + result = zBar.Init( + cState.symbol, + cState.period, + barIndex // + ); + result = + result && + zBar.GetPreviousBar(cBar); + result = + result && + cBar.GetPreviousBar(pBar); + result = + result && + pBar.GetPreviousBar(pPBar); + if (!result) + { + // + zBar.Clean(); + cBar.Clean(); + pBar.Clean(); + pPBar.Clean(); + cState.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cXConditions.Clean(); + + // + return result; + } + + // + ENUM_X_DIRECTION iBarPosDir; + bool isBarValidForDir = cHelper + .mBarAnalyser + .IsValidForPosition( + cBar, + iBarPosDir // + ); + bool isBarValidForBullish = + isBarValidForDir && + IsBullish(iBarPosDir); + bool isBarValidForBearish = + isBarValidForDir && + IsBearish(iBarPosDir); + + // + XSignalBox iSignalBox; + count = ArraySize(waitingBoxes); + has = IsValidSize(count); + if (has) + { + // + for (int i = 0; i < count; i++) + { + // + XSignalBox iBox = waitingBoxes[i]; + + // + bool isBullish = iBox.ob.IsBullish(); + bool hasFVG = iBox.fvg.IsValid(); + + // + // Checking Breakes Box ... + + // + bool isFVGBullishBreaked = + // + hasFVG && + // + pBar.low < iBox.fvg.upper && + // + cBar.high > iBox.fvg.upper && + cBar.close > iBox.fvg.upper && + // + zBar.open > iBox.fvg.upper + // + ; + + // + bool isFVGBearishBreaked = + // + hasFVG && + // + pBar.high > iBox.fvg.lower && + // + cBar.low < iBox.fvg.lower && + cBar.close < iBox.fvg.lower && + // + zBar.open > iBox.fvg.lower + // + ; + + // + bool isOBBullishBreaked = + // + pBar.low < iBox.ob.upper && + // + cBar.high > iBox.ob.upper && + cBar.close > iBox.ob.upper && + // + zBar.open > iBox.ob.upper + // + ; + + // + bool isOBBearishBreaked = + // + pBar.high > iBox.ob.lower && + // + cBar.low < iBox.ob.lower && + cBar.close < iBox.ob.lower && + // + zBar.open > iBox.ob.lower + // + ; + + // + // Summarise ... + + // + bool isBullishBreaked = + isBarValidForBullish && + (hasFVG + ? isFVGBullishBreaked + : isOBBullishBreaked); + + // + bool isBearishBreaked = + isBarValidForBearish && + (hasFVG + ? isFVGBearishBreaked + : isOBBearishBreaked); + + // + has = isBullishBreaked || + isBearishBreaked; + // + if (has) + { + // + iSignalBox = iBox; + iBox.Clean(); + + // + dir = + isBullishBreaked + ? X_DIRECTION_BULLISH + : isBearishBreaked + ? X_DIRECTION_BEARISH + : X_DIRECTION_NONE; + + // + break; + } + + // + iBox.Clean(); + } + } + + // + bool hasSignalBox = HasDirection(dir) && + iSignalBox.IsValid(); + bool isSignalBoxBullish = IsBullish(dir); + + // + // Bullish Conditions ... + isBullish = + // + // Base Condition ... + ( + // + hasSignalBox && + isSignalBoxBullish && + isBarValidForBullish + // + ) + // + ; + + // + // Bearish Conditions ... + isBearish = + // + // Base Condition ... + ( + // + hasSignalBox && + !isSignalBoxBullish && + isBarValidForBearish + // + ) + // + ; + + // + // Filling Requirements ... + result = + isBullish || + isBearish; + if (result) + { + // + dir = + isBullish + ? X_DIRECTION_BULLISH + : X_DIRECTION_BEARISH; + + // + if (iSignalBox.fvg.IsValid()) + { + box = iSignalBox.fvg; + } + else + { + box = iSignalBox.ob; + } + + // + box.to = TimeCurrent(); + + // + // Detect Holder Box ... + XBoxZone tmpBoxes[]; + if (isBullish) + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bullishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + else + { + // + // Order Blocks ... + XBoxZone tmp[]; + ToBox( + cState.bearishOrderBlocks, + tmp // + ); + Copy( + tmp, + tmpBoxes // + ); + Clean(tmp); + } + + // + count = ArraySize(tmpBoxes); + has = IsValidSize(count); + if (has) + { + // + while (HasChild(tmpBoxes)) + { + // + idx = GetOldest(tmpBoxes); + has = IsValidIndex(idx); + if (!has) + { + break; + } + + // + XBoxZone iBox = tmpBoxes[idx]; + ArrayRemove( + tmpBoxes, + idx, + 1 // + ); + + // + has = IsBoxInside( + iBox, + box // + ); + if (has) + { + // + holderBox = iBox; + holderBox.to = TimeCurrent(); + iBox.Clean(); + break; + } + + // + iBox.Clean(); + } + } + + // + Clean(tmpBoxes); + + // + result = + result && + holderBox.IsValid() && + holderBox.dir == dir; + if (!result) + { + // + box.Clean(); + isBullish = false; + isBearish = false; + holderBox.Clean(); + } + } + + // + // Check All Conditions ... + result = + box.IsValid() && + HasDirection(dir) && + (isBullish || + isBearish); + + // + // Cleanup Resources ... + zBar.Clean(); + cBar.Clean(); + pBar.Clean(); + pPBar.Clean(); + cState.Clean(); + iSignalBox.Clean(); + ZeroMemory(cHelper); + cConditions.Clean(); + cStateEvents.Clean(); + cXConditions.Clean(); // return result; diff --git a/X121SMCEA/Signals/x-121.smc.xwz.signal.class.mq5 b/X121SMCEA/Signals/x-121.smc.xwz.signal.class.mq5 index 589041bd..ad614464 100644 --- a/X121SMCEA/Signals/x-121.smc.xwz.signal.class.mq5 +++ b/X121SMCEA/Signals/x-121.smc.xwz.signal.class.mq5 @@ -488,6 +488,52 @@ class XCX121SMCXWZSignalDetector : public XCBase iSL, sls // ); + + // + // Fix rf Reward ... + rfRewar = 2; + } + else if (signalProvider == X121SMC_XWZ_PROVIDER_XACTIVATED_BOX) + { + // + iAtr = provider.decisionXConditions.atrBuffer[1]; + iAtr *= 0; + + // + Clean(sls); + + // + // Prepare Box fro SL ... + iSL = pivot; + Add( + iSL, + sls // + ); + + // + // Fix rf Reward ... + rfRewar = 2; + } + else if (signalProvider == X121SMC_XWZ_PROVIDER_XBREAKED_BOX) + { + // + iAtr = provider.decisionXConditions.atrBuffer[1]; + iAtr *= 0; + + // + Clean(sls); + + // + // Prepare Box fro SL ... + iSL = pivot; + Add( + iSL, + sls // + ); + + // + // Fix rf Reward ... + rfRewar = 2; } // diff --git a/X121SMCEA/Signals/x-121.smc.xwz.signal.lib.mq5 b/X121SMCEA/Signals/x-121.smc.xwz.signal.lib.mq5 index 257fe953..a5a8dbb6 100644 --- a/X121SMCEA/Signals/x-121.smc.xwz.signal.lib.mq5 +++ b/X121SMCEA/Signals/x-121.smc.xwz.signal.lib.mq5 @@ -32,7 +32,9 @@ enum ENUM_X121SMC_XWZ_PROVIDERS { X121SMC_XWZ_PROVIDER_NONE, X121SMC_XWZ_PROVIDER_XHKMA, + X121SMC_XWZ_PROVIDER_XBREAKED_BOX, X121SMC_XWZ_PROVIDER_XREJECTED_BOX, + X121SMC_XWZ_PROVIDER_XACTIVATED_BOX, }; // @@ -1114,7 +1116,7 @@ struct X121SMCStrategyXWZWorkingZone // // Senario 1: // --------------------------------------------- - // XPVHK Conditions ... + // Rejected Box ... // --------------------------------------------- bool useSenario1 = true; bool isSenario1Happend = false; @@ -1130,7 +1132,6 @@ struct X121SMCStrategyXWZWorkingZone dir, waitingBoxes, provider, - X_CYCLE_ANALYSE, barIndex // ); @@ -1154,68 +1155,80 @@ struct X121SMCStrategyXWZWorkingZone // // Senario 2: // --------------------------------------------------- - // Detect Signal Based On Breaked Rejection Boxes ... + // Activated Box ... // --------------------------------------------------- - bool useSenario2 = false; + bool useSenario2 = true; bool isSenario2Happend = false; bool isSenario2Bullish = false; bool isSenario2Bearish = false; - // if (useSenario2) - // { - // // - // // Senario 2 Working Based on - // // Breaked Boxes ... - // // Since we Works only - // // when Has UnAvailable Boxes ... - // has = HasBreakedBoxes(); - // if (has) - // { - // // - // ENUM_X_DIRECTION overalTrend; - // bool hasTrend = DetectOveralDirection(overalTrend); + if (useSenario2) + { + // + isSenario2Happend = cParser.HasSenario2Conditions( + X_CYCLE_DECISION, + box, + holderBox, + dir, + waitingBoxes, + provider, + barIndex // + ); - // if (hasTrend) - // { - // // - // isSenario2Happend = cParser.HasSenario2Conditions( - // X_CYCLE_DECISION, - // breakedBoxes, - // box, - // dir, - // provider, - // barIndex // - // ); + // + isSenario2Bullish = + isSenario2Happend && + IsBullish(dir); - // // - // isSenario2Bullish = - // isSenario2Happend && - // IsBullish(dir); + // + isSenario2Bearish = + isSenario2Happend && + IsBearish(dir); - // // - // isSenario2Bearish = - // isSenario2Happend && - // IsBearish(dir); - - // // - // if (isSenario2Happend) - // { - // signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX; - // } - // } - // } - // } + // + if (isSenario2Happend) + { + signalProvider = X121SMC_XWZ_PROVIDER_XACTIVATED_BOX; + } + } // // Senario 3: - // --------------------------------------------- - // --------------------------------------------- - bool useSenario3 = false; + // --------------------------------------------------- + // Breaked Box ... + // --------------------------------------------------- + bool useSenario3 = true; bool isSenario3Happend = false; bool isSenario3Bullish = false; bool isSenario3Bearish = false; - // if (useSenario3) - // { - // } + if (useSenario3) + { + // + isSenario3Happend = cParser.HasSenario3Conditions( + X_CYCLE_DECISION, + box, + holderBox, + dir, + waitingBoxes, + provider, + barIndex // + ); + + // + isSenario3Bullish = + isSenario3Happend && + IsBullish(dir); + + // + isSenario3Bearish = + isSenario3Happend && + IsBearish(dir); + + // + if (isSenario3Happend) + { + signalProvider = X121SMC_XWZ_PROVIDER_XBREAKED_BOX; + } + } // // Senario 4: @@ -1226,35 +1239,6 @@ struct X121SMCStrategyXWZWorkingZone bool isSenario4Happend = false; bool isSenario4Bullish = false; bool isSenario4Bearish = false; - // if (useSenario4) - // { - // // - // isSenario4Happend = cParser.HasSenario4Conditions( - // X_CYCLE_ANALYSE, - // box, - // holderBox, - // dir, - // provider, - // X_CYCLE_CONSOLIDATION, - // barIndex // - // ); - - // // - // isSenario4Bullish = - // isSenario4Happend && - // IsBullish(dir); - - // // - // isSenario4Bearish = - // isSenario4Happend && - // IsBearish(dir); - - // // - // if (isSenario4Happend) - // { - // signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX; - // } - // } // // Senario 5: @@ -1264,9 +1248,6 @@ struct X121SMCStrategyXWZWorkingZone bool isSenario5Happend = false; bool isSenario5Bullish = false; bool isSenario5Bearish = false; - // if (useSenario5) - // { - // } // // Summarize All Senario(s) Conditions ... diff --git a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 index 1b2c6870..b7b89f31 100644 --- a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 +++ b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 @@ -798,7 +798,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // x121Inputs.xhkInputs.drawRawXHKCandles = showAll || false; - x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || true; + x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || false; // // XMAS ...