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 4c3ea725..2e43524b 100644 --- a/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 +++ b/X121SMCEA/Classes/x-121.smc.market.cycle.helper.class.mq5 @@ -1095,7 +1095,7 @@ class XC121SMCCycleHelper : public XCBase bool mShowBidLine = true; // show bid line bool mShowAskLine = true; // show ask line bool mShowGrid = false; // show grids on chart - bool mShowVolumes = true; // show volumes + bool mShowVolumes = false; // show volumes bool mShowTradeLevels = true; // Displaying trade levels in the chart (levels of open positions, Stop Loss, Take Profit and pending orders) bool mAutoScroll = true; // chart autoscroll bool mQuickNavigation = true; // chart quick navigation state diff --git a/X121SMCEA/Signals/x-121.smc.xind.signal.lib.mq5 b/X121SMCEA/Signals/x-121.smc.xind.signal.lib.mq5 index d355d397..00ab12f0 100644 --- a/X121SMCEA/Signals/x-121.smc.xind.signal.lib.mq5 +++ b/X121SMCEA/Signals/x-121.smc.xind.signal.lib.mq5 @@ -408,7 +408,7 @@ bool HasXPVConditions( // // - bool isSwingLow = + bool isPSwingLow = // (pBar.low < pPBar.low && pBar.low < cBar.low && @@ -417,14 +417,48 @@ bool HasXPVConditions( ; // - bool isSwingHigh = + bool isCSwingLow = // - pBar.high > pPBar.high && + (pBar.low < pPBar.low && + cBar.low < pBar.low && + zBar.close > cBar.low) + // + ; + + // + bool isSwingLow = + // + isPSwingLow || + isCSwingLow + // + ; + + // + bool isPSwingHigh = + // + pBar.high >= pPBar.high && pBar.high > cBar.high && zBar.open < cBar.high // ; + // + bool isCSwingHigh = + // + (pBar.high >= pPBar.high && + cBar.high > pBar.high && + zBar.close < cBar.high) + // + ; + + // + bool isSwingHigh = + // + isPSwingHigh && + isCSwingHigh + // + ; + // bool isBarsOverPeaksGoldenZone = // @@ -465,6 +499,14 @@ bool HasXPVConditions( bool isRsiChangeUnderAtrLower = rsiChangeP < atrLowerSMP; + // + bool isRsiChangeOverPeaksGoldenZone = + rsiChangeP > peaksGoldenP; + + // + bool isRsiChangeUnderValesGoldenZone = + rsiChangeP < valesGoldenP; + // bool isPriceChangeOverAtrUpper = priceChangeP > atrUpperSMP; @@ -473,6 +515,14 @@ bool HasXPVConditions( bool isPriceChangeUnderAtrLower = priceChangeP < atrLowerSMP; + // + bool isPriceChangeOverPeaksGoldenZone = + priceChangeP > peaksGoldenP; + + // + bool isPriceChangeUnderValesGoldenZone = + priceChangeP < valesGoldenP; + // // XPV Peaks or Vales ... @@ -484,6 +534,18 @@ bool HasXPVConditions( bool isPBarEqualsToPeak = pBar.high == peakP; bool isPBarEqualsToVale = pBar.low == valeP; + // + bool isPPBarEqualsToPeak = pPBar.high == peakPP; + bool isPPBarEqualsToVale = pPBar.low == valePP; + + // + bool isBarsEqualsToPeak = isCBarEqualsToPeak || + isPBarEqualsToPeak || + isPPBarEqualsToPeak; + bool isBarsEqualsToVale = isCBarEqualsToVale || + isPBarEqualsToVale || + isPPBarEqualsToVale; + // // Detect VPatterns ... @@ -505,6 +567,23 @@ bool HasXPVConditions( // ; + // + bool isRsiChangeBullish = + // + (isRsiChangeUnderAtrLower && + isRsiChangeBullishVPattern && + isRsiChangeUnderValesGoldenZone) + // + ; + + bool isRsiChangeBearish = + // + (isRsiChangeOverAtrUpper && + isRsiChangeBearishVPattern && + isRsiChangeOverPeaksGoldenZone) + // + ; + // bool isPriceChangeBullishVPattern = // @@ -523,60 +602,99 @@ bool HasXPVConditions( // ; + // + bool isPriceChangeBullish = + // + (isPriceChangeUnderAtrLower && + isPriceChangeBullishVPattern && + isPriceChangeUnderValesGoldenZone) + // + ; + + // + bool isPriceChangeBearish = + // + (isPriceChangeOverAtrUpper && + isPriceChangeBearishVPattern && + isPriceChangeOverPeaksGoldenZone) + // + ; + + // + // XVWAP ... + + // + bool isVWapIsBullish = + // + (cXConditions.isVWapBullishOrdered && + cXConditions.isVWapSwitchedToBullishState) + // + || + // + (cXConditions.isVWapBullishState && + cXConditions.isVWapSwitchedToBullishOrdered) + // + ; + + // + bool isVWapIsBearish = + // + (cXConditions.isVWapBearishOrdered && + cXConditions.isVWapSwitchedToBearishState) + // + || + // + (cXConditions.isVWapBearishState && + cXConditions.isVWapSwitchedToBearishOrdered) + // + ; + // // Checking Bar States ... // - bool isCBarHasBullishFibPressure = - // - cBar.HasFiboPressure( - X_DIRECTION_BULLISH, - X_FIBO_LEVEL_382 // - ) - // - ; + ENUM_X_DIRECTION cBarPosDir; + bool isCBarValidForPosition = + cHelper + .mBarAnalyser + .IsValidForPosition( + cBar, + cBarPosDir // + ); // - bool isPBarHasBullishFibPressure = - // - pBar.HasFiboPressure( - X_DIRECTION_BULLISH, - X_FIBO_LEVEL_382 // - ) - // - ; - - // - bool isCBarHasBearishFibPressure = - // - cBar.HasFiboPressure( - X_DIRECTION_BEARISH, - X_FIBO_LEVEL_382 // - ) - // - ; - - // - bool isPBarHasBearishFibPressure = - // - pBar.HasFiboPressure( - X_DIRECTION_BEARISH, - X_FIBO_LEVEL_382 // - ) - // - ; + ENUM_X_DIRECTION pBarPosDir; + bool isPBarValidForPosition = + cHelper + .mBarAnalyser + .IsValidForPosition( + pBar, + pBarPosDir // + ); // bool isBarValidForBullish = // - isCBarHasBullishFibPressure + (isCBarValidForPosition && + IsBullish(cBarPosDir)) + // + && + // + (isPBarValidForPosition && + IsBullish(pBarPosDir)) // ; // bool isBarValidForBearish = // - isCBarHasBearishFibPressure + (isCBarValidForPosition && + IsBearish(cBarPosDir)) + // + && + // + (isPBarValidForPosition && + IsBearish(pBarPosDir)) // ; @@ -587,32 +705,28 @@ bool HasXPVConditions( isBullish = // // isSwingLow && + isVWapIsBullish // && + // isBarsEqualsToVale && + // isRsiChangeBullish && // isBarsUnderAtrLower && // isBarValidForBullish && + // isPriceChangeBullish && // isBarsUnderValesGoldenZone // - // isCBarEqualsToVale && - (isRsiChangeUnderAtrLower && - isRsiChangeBullishVPattern) && - (isPriceChangeUnderAtrLower && - isPriceChangeBullishVPattern) - // ; // isBearish = // - // isSwingHigh && + //isSwingHigh && + isVWapIsBearish // && + //isBarsEqualsToPeak && // isBarsOverAtrUpper && + // isRsiChangeBearish && // isBarValidForBearish && + // isPriceChangeBearish && // isBarsOverPeaksGoldenZone // - // isCBarEqualsToPeak && - (isRsiChangeOverAtrUpper && - isRsiChangeBearishVPattern) && - (isPriceChangeOverAtrUpper && - isPriceChangeBearishVPattern) - // ; // diff --git a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 index 17303868..e8899acb 100644 --- a/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 +++ b/X121SMCEA/Strategy/x-121.smc.strategy.class.mq5 @@ -976,7 +976,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // // Presentations ... - x121Inputs.xccInputs.showCandles = showAll || false; + x121Inputs.xccInputs.showCandles = showAll || true; // // XPV ... @@ -1011,7 +1011,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // // Presentations ... - x121Inputs.xhkInputs.drawRawXHKCandles = showAll || true; + x121Inputs.xhkInputs.drawRawXHKCandles = showAll || false; x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || false; // @@ -1036,8 +1036,8 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // Presentations ... x121Inputs.xatrInputs.showAtrUpper = showAll || false; x121Inputs.xatrInputs.showAtrLower = showAll || false; - x121Inputs.xatrInputs.showRSIChange = showAll || true; - x121Inputs.xatrInputs.showPriceChange = showAll || true; + x121Inputs.xatrInputs.showRSIChange = showAll || false; + x121Inputs.xatrInputs.showPriceChange = showAll || false; x121Inputs.xatrInputs.showSmoothedAtrUpper = showAll || true; x121Inputs.xatrInputs.showSmoothedAtrLower = showAll || true; x121Inputs.xatrInputs.showSmoothedRSIChange = showAll || true; @@ -1088,9 +1088,9 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy // // Presentations ... - x121Inputs.xvwapInputs.showVWapFast = showAll || false; - x121Inputs.xvwapInputs.showVWapSlow = showAll || false; - x121Inputs.xvwapInputs.showVWapMedium = showAll || false; + x121Inputs.xvwapInputs.showVWapFast = showAll || true; + x121Inputs.xvwapInputs.showVWapSlow = showAll || true; + x121Inputs.xvwapInputs.showVWapMedium = showAll || true; // //