diff --git a/Classes/x-saherelm.x121.setup.class.mq5 b/Classes/x-saherelm.x121.setup.class.mq5 index c71c15f3..0a29db55 100644 --- a/Classes/x-saherelm.x121.setup.class.mq5 +++ b/Classes/x-saherelm.x121.setup.class.mq5 @@ -2098,159 +2098,6 @@ struct X121SignalGenerator // Set Default Result to True ... result = true; - // - // Global Conditions ... - result = - // - result && - // - !( - // - ( - // - // XICH ... - conditions.ichConditions.isClosedUnderKijunSen && - conditions.ichConditions.isTenkanSenOverKijunSen - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isTenkanSenUnderKijunSen - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isSenkouSpanAOverB && - !conditions.ichConditions.isSenkouSpanAOverLast - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isSenkouSpanAUnderB && - conditions.ichConditions.isSenkouSpanAUnderLast - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isSenkouSpanAOverB && - !conditions.ichConditions.isSenkouSpanAOverLast && - conditions.ichConditions.isTenkanSenCrossedOverKijunSen && - // - // XVLM ... - conditions.vlmConditions.isVolumeUnderLast - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isClosedOverKijunSen && - conditions.ichConditions.isTenkanSenOverKijunSen && - conditions.ichConditions.isSenkouSpanAUnderB - // - ) - // - || - // - ( - // - // XPV ... - !conditions.pvConditions.isSCBullish && - !conditions.pvConditions.isSCHHBullish && - !conditions.pvConditions.isSCLLBullish && - !conditions.pvConditions.isMCBullish && - !conditions.pvConditions.isMCHHBullish && - !conditions.pvConditions.isMCLLBullish && - !conditions.pvConditions.isLCBullish && - !conditions.pvConditions.isLCHHBullish && - !conditions.pvConditions.isLCLLBullish && - !conditions.pvConditions.isHCBullish && - !conditions.pvConditions.isHCHHBullish && - !conditions.pvConditions.isHCLLBullish && - // - // XICH ... - conditions.ichConditions.isClosedOverKijunSen && - (conditions.ichConditions.isTenkanSenOverKijunSen || - conditions.ichConditions.isTenkanSenCrossedOverKijunSen) - // - ) - // - || - // - ( - // - ( - // - // XPV ... - conditions.pvConditions.isNewPeak && - conditions.pvConditions.isNewPeakOverLast && - conditions.pvConditions.isFiboIncreased && - conditions.pvConditions.isCloseOverFib1 && - conditions.pvConditions.isCloseOverFib2 && - conditions.pvConditions.isCloseOverFib3 && - conditions.pvConditions.isCloseOverFib4 && - conditions.pvConditions.isCloseOverFib5 - // - ) - // - && - // - ( - // - // XSCORES ... - bearishScore < 5 && - bullishScore > bearishScore * 10 - // - ) - // - && - // - ( - // - ( - // - // XPV ... - conditions.pvConditions.isSCBullish && - conditions.pvConditions.isSCHHBullish && - conditions.pvConditions.isSCLLBullish && - conditions.pvConditions.isMCBullish && - conditions.pvConditions.isMCHHBullish && - conditions.pvConditions.isMCLLBullish && - conditions.pvConditions.isLCBullish && - conditions.pvConditions.isLCHHBullish && - conditions.pvConditions.isLCLLBullish && - conditions.pvConditions.isHCBullish && - conditions.pvConditions.isHCHHBullish && - conditions.pvConditions.isHCLLBullish - // - ) - // - ) - // - ) - // - ) - // - ; - // // Apply Filter ... // Based On Symbol and Period ... @@ -3520,179 +3367,6 @@ struct X121SignalGenerator // Set Default Result to True ... result = true; - // - // Global Conditions ... - result = - // - result && - // - !( - // - ( - // - // XICH ... - conditions.ichConditions.isClosedOverKijunSen && - conditions.ichConditions.isTenkanSenUnderKijunSen - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isTenkanSenOverKijunSen - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isSenkouSpanAUnderB && - !conditions.ichConditions.isSenkouSpanAUnderLast - // - ) - // - || - // - ( - // - // XPV ... - conditions.pvConditions.isNewVale && - conditions.pvConditions.isNewValeUnderLast && - conditions.pvConditions.isFiboDecreased && - conditions.pvConditions.isSCBearish && - !conditions.pvConditions.isMCBearish && - // - // XICH ... - conditions.ichConditions.isClosedOverKijunSen && - // - // XHK ... - conditions.hkConditions.isHKSwitchedToBearish && - conditions.hkConditions.isSMHKSwitchedToBearish - - ) - // - || - // - ( - // - // XPV ... - conditions.pvConditions.isNewVale && - conditions.pvConditions.isNewValeUnderLast && - conditions.pvConditions.isFiboDecreased && - !conditions.pvConditions.isSCBearish && - !conditions.pvConditions.isSCHHBearish && - // - // XVLM ... - conditions.vlmConditions.isVolumeBearish && - !conditions.vlmConditions.isVolumeOverLast - // - ) - // - || - // - ( - // - ( - // - // XPV ... - conditions.pvConditions.isNewVale && - conditions.pvConditions.isNewValeUnderLast && - conditions.pvConditions.isFiboDecreased && - conditions.pvConditions.isCloseUnderFib1 && - conditions.pvConditions.isCloseUnderFib2 && - conditions.pvConditions.isCloseUnderFib3 && - conditions.pvConditions.isCloseUnderFib4 && - conditions.pvConditions.isCloseUnderFib5 - // - ) - // - && - // - ( - // - ( - // - ( - // - // XVLM ... - conditions.vlmConditions.isVolumeBearish && - conditions.vlmConditions.isVolumeOverLast - // - ) - // - && - // - ( - // - ( - // - conditions.pvConditions.isSCBearish && - conditions.pvConditions.isSCHHBearish && - conditions.pvConditions.isSCLLBearish && - conditions.pvConditions.isMCBearish && - conditions.pvConditions.isMCHHBearish && - conditions.pvConditions.isMCLLBearish && - conditions.pvConditions.isLCBearish && - conditions.pvConditions.isLCHHBearish && - conditions.pvConditions.isLCLLBearish && - conditions.pvConditions.isHCBearish && - conditions.pvConditions.isHCHHBearish && - conditions.pvConditions.isHCLLBearish && - // - // XICH ... - conditions.ichConditions.isClosedUnderKijunSen && - conditions.ichConditions.isTenkanSenUnderKijunSen && - conditions.ichConditions.isSenkouSpanAUnderB && - conditions.ichConditions.isSenkouSpanAUnderLast && - conditions.ichConditions.isFutureSenkouSpanAUnderB && - conditions.ichConditions.isFutureSenkouSpanAUnderLast && - conditions.ichConditions.isSenkouSpanACrossedUnderLast - // - ) - // - || - // - ( - // - // XICH ... - conditions.ichConditions.isSenkouSpanACrossedUnderB - // - ) - // - ) - // - ) - // - || - // - ( - // - // XRL ... - conditions.rlConditions.isFastBearish && - conditions.rlConditions.isSlowBearish && - conditions.rlConditions.isFastOverSlow && - conditions.rlConditions.isVerifierBearish - // - ) - // - ) - // - && - // - // XSCORES ... - bullishScore < 5 && - bearishScore > bullishScore * 10 - // - ) - // - ) - // - ; - // // Apply Filter ... // Based On Symbol and Period ... @@ -4232,6 +3906,19 @@ public: return result; } + // + // XCHMA ... + chmaHelper = new XSCXCHMAHelper(); + result = chmaHelper.Init( + inputs.symbol, + inputs.period, + inputs.chmaInputs // + ); + if (!result) + { + return result; + } + // // XATSL ... atslHelper = new XSCXATSLHelper(); diff --git a/Documents/BKP/Signal Filters/long filter.mq5 b/Documents/BKP/Signal Filters/long filter.mq5 new file mode 100644 index 00000000..0f4edff7 --- /dev/null +++ b/Documents/BKP/Signal Filters/long filter.mq5 @@ -0,0 +1,202 @@ + // + // Filter Long Conditions ... + bool FilterLongConditions( + X121SetupConditions &conditions, // Conditions + int pusher, // Pushers + string provider // Provider + ) + { + // + bool result = false; + + // + // Generating Conditions Score ... + double bullishScore = 0; + double bearishScore = 0; + conditions.GenerateScore( + bullishScore, + bearishScore // + ); + + // + bool isGBPUSD = symbolParser.IsGBPUSD(conditions.symbol); + + // + bool isM5Period = conditions.period == PERIOD_M5; + bool isM15Period = conditions.period == PERIOD_M15; + bool isH1Period = conditions.period == PERIOD_H1; + bool isH4Period = conditions.period == PERIOD_H4; + + // + // Set Default Result to True ... + result = true; + + // + // Global Conditions ... + result = + // + result && + // + !( + // + ( + // + // XICH ... + conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isTenkanSenOverKijunSen + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isTenkanSenUnderKijunSen + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isSenkouSpanAOverB && + !conditions.ichConditions.isSenkouSpanAOverLast + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isSenkouSpanAUnderB && + conditions.ichConditions.isSenkouSpanAUnderLast + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isSenkouSpanAOverB && + !conditions.ichConditions.isSenkouSpanAOverLast && + conditions.ichConditions.isTenkanSenCrossedOverKijunSen && + // + // XVLM ... + conditions.vlmConditions.isVolumeUnderLast + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isClosedOverKijunSen && + conditions.ichConditions.isTenkanSenOverKijunSen && + conditions.ichConditions.isSenkouSpanAUnderB + // + ) + // + || + // + ( + // + // XPV ... + !conditions.pvConditions.isSCBullish && + !conditions.pvConditions.isSCHHBullish && + !conditions.pvConditions.isSCLLBullish && + !conditions.pvConditions.isMCBullish && + !conditions.pvConditions.isMCHHBullish && + !conditions.pvConditions.isMCLLBullish && + !conditions.pvConditions.isLCBullish && + !conditions.pvConditions.isLCHHBullish && + !conditions.pvConditions.isLCLLBullish && + !conditions.pvConditions.isHCBullish && + !conditions.pvConditions.isHCHHBullish && + !conditions.pvConditions.isHCLLBullish && + // + // XICH ... + conditions.ichConditions.isClosedOverKijunSen && + (conditions.ichConditions.isTenkanSenOverKijunSen || + conditions.ichConditions.isTenkanSenCrossedOverKijunSen) + // + ) + // + || + // + ( + // + ( + // + // XPV ... + conditions.pvConditions.isNewPeak && + conditions.pvConditions.isNewPeakOverLast && + conditions.pvConditions.isFiboIncreased && + conditions.pvConditions.isCloseOverFib1 && + conditions.pvConditions.isCloseOverFib2 && + conditions.pvConditions.isCloseOverFib3 && + conditions.pvConditions.isCloseOverFib4 && + conditions.pvConditions.isCloseOverFib5 + // + ) + // + && + // + ( + // + // XSCORES ... + bearishScore < 5 && + bullishScore > bearishScore * 10 + // + ) + // + && + // + ( + // + ( + // + // XPV ... + conditions.pvConditions.isSCBullish && + conditions.pvConditions.isSCHHBullish && + conditions.pvConditions.isSCLLBullish && + conditions.pvConditions.isMCBullish && + conditions.pvConditions.isMCHHBullish && + conditions.pvConditions.isMCLLBullish && + conditions.pvConditions.isLCBullish && + conditions.pvConditions.isLCHHBullish && + conditions.pvConditions.isLCLLBullish && + conditions.pvConditions.isHCBullish && + conditions.pvConditions.isHCHHBullish && + conditions.pvConditions.isHCLLBullish + // + ) + // + ) + // + ) + // + ) + // + ; + + // + // Apply Filter ... + // Based On Symbol and Period ... + // if necessary ... + if (isGBPUSD) + { + // + // MEDIUM ... + if (isH1Period) + { + } + } + + // + return result; + } diff --git a/Documents/BKP/Signal Filters/short filter.mq5 b/Documents/BKP/Signal Filters/short filter.mq5 new file mode 100644 index 00000000..c1618787 --- /dev/null +++ b/Documents/BKP/Signal Filters/short filter.mq5 @@ -0,0 +1,222 @@ + // + // Filter Short Conditions ... + bool FilterShortConditions( + X121SetupConditions &conditions, // Conditions + int pusher, // Pushers + string provider // Provider + ) + { + // + bool result = false; + + // + // Generating Conditions Score ... + double bullishScore = 0; + double bearishScore = 0; + conditions.GenerateScore( + bullishScore, + bearishScore // + ); + + // + bool isGBPUSD = symbolParser.IsGBPUSD(conditions.symbol); + + // + bool isM5Period = conditions.period == PERIOD_M5; + bool isM15Period = conditions.period == PERIOD_M15; + bool isH1Period = conditions.period == PERIOD_H1; + bool isH4Period = conditions.period == PERIOD_H4; + + // + // Set Default Result to True ... + result = true; + + // + // Global Conditions ... + result = + // + result && + // + !( + // + ( + // + // XICH ... + conditions.ichConditions.isClosedOverKijunSen && + conditions.ichConditions.isTenkanSenUnderKijunSen + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isTenkanSenOverKijunSen + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isSenkouSpanAUnderB && + !conditions.ichConditions.isSenkouSpanAUnderLast + // + ) + // + || + // + ( + // + // XPV ... + conditions.pvConditions.isNewVale && + conditions.pvConditions.isNewValeUnderLast && + conditions.pvConditions.isFiboDecreased && + conditions.pvConditions.isSCBearish && + !conditions.pvConditions.isMCBearish && + // + // XICH ... + conditions.ichConditions.isClosedOverKijunSen && + // + // XHK ... + conditions.hkConditions.isHKSwitchedToBearish && + conditions.hkConditions.isSMHKSwitchedToBearish + + ) + // + || + // + ( + // + // XPV ... + conditions.pvConditions.isNewVale && + conditions.pvConditions.isNewValeUnderLast && + conditions.pvConditions.isFiboDecreased && + !conditions.pvConditions.isSCBearish && + !conditions.pvConditions.isSCHHBearish && + // + // XVLM ... + conditions.vlmConditions.isVolumeBearish && + !conditions.vlmConditions.isVolumeOverLast + // + ) + // + || + // + ( + // + ( + // + // XPV ... + conditions.pvConditions.isNewVale && + conditions.pvConditions.isNewValeUnderLast && + conditions.pvConditions.isFiboDecreased && + conditions.pvConditions.isCloseUnderFib1 && + conditions.pvConditions.isCloseUnderFib2 && + conditions.pvConditions.isCloseUnderFib3 && + conditions.pvConditions.isCloseUnderFib4 && + conditions.pvConditions.isCloseUnderFib5 + // + ) + // + && + // + ( + // + ( + // + ( + // + // XVLM ... + conditions.vlmConditions.isVolumeBearish && + conditions.vlmConditions.isVolumeOverLast + // + ) + // + && + // + ( + // + ( + // + conditions.pvConditions.isSCBearish && + conditions.pvConditions.isSCHHBearish && + conditions.pvConditions.isSCLLBearish && + conditions.pvConditions.isMCBearish && + conditions.pvConditions.isMCHHBearish && + conditions.pvConditions.isMCLLBearish && + conditions.pvConditions.isLCBearish && + conditions.pvConditions.isLCHHBearish && + conditions.pvConditions.isLCLLBearish && + conditions.pvConditions.isHCBearish && + conditions.pvConditions.isHCHHBearish && + conditions.pvConditions.isHCLLBearish && + // + // XICH ... + conditions.ichConditions.isClosedUnderKijunSen && + conditions.ichConditions.isTenkanSenUnderKijunSen && + conditions.ichConditions.isSenkouSpanAUnderB && + conditions.ichConditions.isSenkouSpanAUnderLast && + conditions.ichConditions.isFutureSenkouSpanAUnderB && + conditions.ichConditions.isFutureSenkouSpanAUnderLast && + conditions.ichConditions.isSenkouSpanACrossedUnderLast + // + ) + // + || + // + ( + // + // XICH ... + conditions.ichConditions.isSenkouSpanACrossedUnderB + // + ) + // + ) + // + ) + // + || + // + ( + // + // XRL ... + conditions.rlConditions.isFastBearish && + conditions.rlConditions.isSlowBearish && + conditions.rlConditions.isFastOverSlow && + conditions.rlConditions.isVerifierBearish + // + ) + // + ) + // + && + // + // XSCORES ... + bullishScore < 5 && + bearishScore > bullishScore * 10 + // + ) + // + ) + // + ; + + // + // Apply Filter ... + // Based On Symbol and Period ... + // if necessary ... + if (isGBPUSD) + { + // + // MEDIUM ... + if (isH1Period) + { + } + } + + // + return result; + } diff --git a/Experts/x-saherelm.x121.ea.mq5 b/Experts/x-saherelm.x121.ea.mq5 index f6070db5..d295772d 100644 --- a/Experts/x-saherelm.x121.ea.mq5 +++ b/Experts/x-saherelm.x121.ea.mq5 @@ -131,6 +131,7 @@ input bool x121EATerminalAlerts = false; // Terminal Alerts // Local Variables ... // +bool isInTestMode = false; XTimeTracker x121EATimeTracker; // @@ -205,19 +206,31 @@ void OnTick() // if (x121EATimeTracker.IsNewHour()) { - x121EA.Alert("New Hour ..."); + // + if (!isInTestMode) + { + x121EA.Alert("New Hour ..."); + } } // if (x121EATimeTracker.IsNewDay()) { - x121EA.Alert("New Day ..."); + // + if (!isInTestMode) + { + x121EA.Alert("New Day ..."); + } } // if (x121EATimeTracker.IsNewMonth()) { - x121EA.Alert("New Mount ..."); + // + if (!isInTestMode) + { + x121EA.Alert("New Mount ..."); + } } //