From 8774674629cbd52196f2ecb43ff5f34306f93901 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Fri, 23 Aug 2024 14:06:34 +0330 Subject: [PATCH] last ... --- Experts/x-saherelm.xch.strategy.ea.mq5 | 18 +- Helpers/x-saherelm.xchche.helper.mq5 | 139 ++---- Helpers/x-saherelm.xchm.helper.mq5 | 84 ++-- Indicators/x-saherelm.xchche.mq5 | 142 +++--- Indicators/x-saherelm.xchm.mq5 | 89 ++-- .../x-saherelm.xch.amarkets.parser.mq5 | 442 +++++++----------- Strategies/x-saherelm.xch.strategy.mq5 | 51 +- 7 files changed, 384 insertions(+), 581 deletions(-) diff --git a/Experts/x-saherelm.xch.strategy.ea.mq5 b/Experts/x-saherelm.xch.strategy.ea.mq5 index 744695a5..18840ebd 100644 --- a/Experts/x-saherelm.xch.strategy.ea.mq5 +++ b/Experts/x-saherelm.xch.strategy.ea.mq5 @@ -60,7 +60,7 @@ input bool eaUseFixedTPSLPoints = true; // Use Fixed TP SL in Points input bool eaIgnoreTP = false; // Ignore TP input bool eaIgnoreSL = false; // Ignore SL input double eaTPPoint = 200; // Static TP Point -input double eaSLPoint = 100; // Static SL Point +input double eaSLPoint = 200; // Static SL Point // // Risk Management > Volume Calculation ... @@ -75,22 +75,22 @@ input double eaVolume = 0.2; // Static Volume input group "Trade Management"; input bool eaAllowLong = true; // Allow Long Positions input bool eaAllowShort = true; // Allow Short Positions -input int eaMaxAllowedLongs = 1; // Max Allowed Long Positions -input int eaMaxAllowedShorts = 1; // Max Allowed Short Positions +input int eaMaxAllowedLongs = 2; // Max Allowed Long Positions +input int eaMaxAllowedShorts = 2; // Max Allowed Short Positions input double eaMaxDrawdownPercentForOpenTrades = 3; // Max Drawdown Percent for Open Trades // // Risk Management > Hedging ... input group "Hedging"; -input bool eaAllowHedging = true; // Allow Hedging Trades -input int eaMinTradesForHedge = 2; // Minimum Open Trades for Hedging -input double eaHedgeVolumeFactor = 0.01; // Volume Factor for Hedging -input double eaMinimumProfitPerVolumeForHedging = 1; // Minimum Required Profit per Volume for Hedging +input bool eaAllowHedging = true; // Allow Hedging Trades +input int eaMinTradesForHedge = 2; // Minimum Open Trades for Hedging +input double eaHedgeVolumeFactor = 0.01; // Volume Factor for Hedging +input double eaMinimumProfitPerVolumeForHedging = 0.5; // Minimum Required Profit per Volume for Hedging // // Risk Management > Trailling Stop ... input group "Trailling Stop"; -input bool eaAllowTrailStop = false; // Allow Trail Stop +input bool eaAllowTrailStop = true; // Allow Trail Stop input double eaStartTrailInPoint = 50; // Trail Start After Profit (Point) input double eaTrailStepInPoint = 25; // Trail Size in each Step (Point) input bool eaIgnoreTPAfterTrail = true; // Ignore TP after Trail @@ -119,7 +119,7 @@ input bool eATerminalAlerts = false; // Terminal Alerts input group "Reports"; input bool eaAlertNewMonths = false; // Alert New Month input bool eaAlertNewWeeks = false; // Alert New Weeks -input bool eaAlertNewDays = false; // Alert New Days +input bool eaAlertNewDays = true; // Alert New Days input bool eaAlertNewHours = false; // Alert New Hours input bool eaAlertRawSignals = false; // Alert Raw Signals input bool eaAlertStrongSignals = false; // Alert Strong Signals diff --git a/Helpers/x-saherelm.xchche.helper.mq5 b/Helpers/x-saherelm.xchche.helper.mq5 index 51cda9cd..7ab733af 100644 --- a/Helpers/x-saherelm.xchche.helper.mq5 +++ b/Helpers/x-saherelm.xchche.helper.mq5 @@ -108,39 +108,17 @@ struct XCHCHEInputs // Presentation ... // - // Current ... - bool showCurrentLE1; // Show Current Cycle Long Exit 1 - bool showCurrentLE2; // Show Current Cycle Long Exit 2 - bool showCurrentSE1; // Show Current Cycle Short Exit 1 - bool showCurrentSE2; // Show Current Cycle Short Exit 2 + bool showLE1; // Show Long Exit 1 + bool showLE2; // Show Long Exit 2 + bool showSE1; // Show Short Exit 1 + bool showSE2; // Show Short Exit 2 // - // Short ... - bool showShortLE1; // Show Short Cycle Long Exit 1 - bool showShortLE2; // Show Short Cycle Long Exit 2 - bool showShortSE1; // Show Short Cycle Short Exit 1 - bool showShortSE2; // Show Short Cycle Short Exit 2 - - // - // Medium ... - bool showMediumLE1; // Show Medium Cycle Long Exit 1 - bool showMediumLE2; // Show Medium Cycle Long Exit 2 - bool showMediumSE1; // Show Medium Cycle Short Exit 1 - bool showMediumSE2; // Show Medium Cycle Short Exit 2 - - // - // Long ... - bool showLongLE1; // Show Long Cycle Long Exit 1 - bool showLongLE2; // Show Long Cycle Long Exit 2 - bool showLongSE1; // Show Long Cycle Short Exit 1 - bool showLongSE2; // Show Long Cycle Short Exit 2 - - // - // Hind ... - bool showHindLE1; // Show Hind Cycle Long Exit 1 - bool showHindLE2; // Show Hind Cycle Long Exit 2 - bool showHindSE1; // Show Hind Cycle Short Exit 1 - bool showHindSE2; // Show Hind Cycle Short Exit 2 + bool showCurrent; // Show Current Cycle + bool showShort; // Show Short Cycle + bool showMedium; // Show Medium Cycle + bool showLong; // Show Long Cycle + bool showHind; // Show Hind Cycle // // Constructor(s) ... @@ -178,26 +156,17 @@ struct XCHCHEInputs hcPeriod = NULL; // - showCurrentLE1 = false; - showCurrentLE2 = false; - showCurrentSE1 = false; - showCurrentSE2 = false; - showShortLE1 = false; - showShortLE2 = false; - showShortSE1 = false; - showShortSE2 = false; - showMediumLE1 = false; - showMediumLE2 = false; - showMediumSE1 = false; - showMediumSE2 = false; - showLongLE1 = false; - showLongLE2 = false; - showLongSE1 = false; - showLongSE2 = false; - showHindLE1 = false; - showHindLE2 = false; - showHindSE1 = false; - showHindSE2 = false; + showLE1 = false; + showLE2 = false; + showSE1 = false; + showSE2 = false; + + // + showCurrent = false; + showShort = false; + showMedium = false; + showLong = false; + showHind = false; } // @@ -225,26 +194,17 @@ struct XCHCHEInputs hcPeriod = NULL; // - showCurrentLE1 = true; - showCurrentLE2 = true; - showCurrentSE1 = true; - showCurrentSE2 = true; - showShortLE1 = true; - showShortLE2 = true; - showShortSE1 = true; - showShortSE2 = true; - showMediumLE1 = true; - showMediumLE2 = true; - showMediumSE1 = true; - showMediumSE2 = true; - showLongLE1 = true; - showLongLE2 = true; - showLongSE1 = true; - showLongSE2 = true; - showHindLE1 = true; - showHindLE2 = true; - showHindSE1 = true; - showHindSE2 = true; + showLE1 = true; + showLE2 = true; + showSE1 = true; + showSE2 = true; + + // + showCurrent = true; + showShort = true; + showMedium = true; + showLong = true; + showHind = true; } // @@ -1044,35 +1004,16 @@ public: // Presentation ... "", // - // CURRENT ... - mInputs.showCurrentLE1, - mInputs.showCurrentLE2, - mInputs.showCurrentSE1, - mInputs.showCurrentSE2, + mInputs.showLE1, + mInputs.showLE2, + mInputs.showSE1, + mInputs.showSE2, // - // SHORT ... - mInputs.showShortLE1, - mInputs.showShortLE2, - mInputs.showShortSE1, - mInputs.showShortSE2, - // - // MEDIUM ... - mInputs.showMediumLE1, - mInputs.showMediumLE2, - mInputs.showMediumSE1, - mInputs.showMediumSE2, - // - // LONG ... - mInputs.showLongLE1, - mInputs.showLongLE2, - mInputs.showLongSE1, - mInputs.showLongSE2, - // - // HIND ... - mInputs.showHindLE1, - mInputs.showHindLE2, - mInputs.showHindSE1, - mInputs.showHindSE2 + mInputs.showCurrent, + mInputs.showShort, + mInputs.showMedium, + mInputs.showLong, + mInputs.showHind // ); result = mHandler != INVALID_HANDLE; diff --git a/Helpers/x-saherelm.xchm.helper.mq5 b/Helpers/x-saherelm.xchm.helper.mq5 index ac8e817b..a4598fac 100644 --- a/Helpers/x-saherelm.xchm.helper.mq5 +++ b/Helpers/x-saherelm.xchm.helper.mq5 @@ -95,18 +95,20 @@ struct XCHMInputs // // Presentation ... - bool showFast; // Show Fast - bool showSlow; // Show Slow - bool showCCFast; // Show Current Cycle Fast - bool showCCSlow; // Show Current Cycle Slow - bool showSCFast; // Show Short Cycle Fast - bool showSCSlow; // Show Short Cycle Slow - bool showMCFast; // Show Medium Cycle Fast - bool showMCSlow; // Show Medium Cycle Slow - bool showLCFast; // Show Long Cycle Fast - bool showLCSlow; // Show Long Cycle Slow - bool showHCFast; // Show Hind Cycle Fast - bool showHCSlow; // Show Hind Cycle Slow + + // + bool showFast; // Show Fast + bool showSlow; // Show Slow + + // + bool showAVG; // Show Average + + // + bool showCurrent; // Show Current Cycle + bool showShort; // Show Short Cycle + bool showMedium; // Show Medium Cycle + bool showLong; // Show Long Cycle + bool showHind; // Show Hind Cycle // // Constructor(s) ... @@ -142,16 +144,16 @@ struct XCHMInputs // showFast = false; showSlow = false; - showCCFast = false; - showCCSlow = false; - showSCFast = false; - showSCSlow = false; - showMCFast = false; - showMCSlow = false; - showLCFast = false; - showLCSlow = false; - showHCFast = false; - showHCSlow = false; + + // + showAVG = false; + + // + showCurrent = false; + showShort = false; + showMedium = false; + showLong = false; + showHind = false; } // @@ -177,16 +179,16 @@ struct XCHMInputs // showFast = true; showSlow = true; - showCCFast = true; - showCCSlow = true; - showSCFast = true; - showSCSlow = true; - showMCFast = true; - showMCSlow = true; - showLCFast = true; - showLCSlow = true; - showHCFast = true; - showHCSlow = true; + + // + showAVG = true; + + // + showCurrent = true; + showShort = true; + showMedium = true; + showLong = true; + showHind = true; } // @@ -983,19 +985,17 @@ public: // // Presentation ... "", + // mInputs.showFast, mInputs.showSlow, // - mInputs.showCCFast, - mInputs.showCCSlow, - mInputs.showSCFast, - mInputs.showSCSlow, - mInputs.showMCFast, - mInputs.showMCSlow, - mInputs.showLCFast, - mInputs.showLCSlow, - mInputs.showHCFast, - mInputs.showHCSlow + mInputs.showAVG, + // + mInputs.showCurrent, + mInputs.showShort, + mInputs.showMedium, + mInputs.showLong, + mInputs.showHind // ); result = mHandler != INVALID_HANDLE; diff --git a/Indicators/x-saherelm.xchche.mq5 b/Indicators/x-saherelm.xchche.mq5 index 75d0c757..9b6b3892 100644 --- a/Indicators/x-saherelm.xchche.mq5 +++ b/Indicators/x-saherelm.xchche.mq5 @@ -68,39 +68,17 @@ input ENUM_TIMEFRAMES hcPeriod = NULL; // Time Period input group "Presentation"; // -// Current ... -input bool showCurrentLE1 = true; // Show Current Cycle Long Exit 1 -input bool showCurrentLE2 = true; // Show Current Cycle Long Exit 2 -input bool showCurrentSE1 = true; // Show Current Cycle Short Exit 1 -input bool showCurrentSE2 = true; // Show Current Cycle Short Exit 2 +input bool showLE1 = true; // Show Long Exit 1 +input bool showLE2 = true; // Show Long Exit 2 +input bool showSE1 = true; // Show Short Exit 1 +input bool showSE2 = true; // Show Short Exit 2 // -// Short ... -input bool showShortLE1 = true; // Show Short Cycle Long Exit 1 -input bool showShortLE2 = true; // Show Short Cycle Long Exit 2 -input bool showShortSE1 = true; // Show Short Cycle Short Exit 1 -input bool showShortSE2 = true; // Show Short Cycle Short Exit 2 - -// -// Medium ... -input bool showMediumLE1 = true; // Show Medium Cycle Long Exit 1 -input bool showMediumLE2 = true; // Show Medium Cycle Long Exit 2 -input bool showMediumSE1 = true; // Show Medium Cycle Short Exit 1 -input bool showMediumSE2 = true; // Show Medium Cycle Short Exit 2 - -// -// Long ... -input bool showLongLE1 = true; // Show Long Cycle Long Exit 1 -input bool showLongLE2 = true; // Show Long Cycle Long Exit 2 -input bool showLongSE1 = true; // Show Long Cycle Short Exit 1 -input bool showLongSE2 = true; // Show Long Cycle Short Exit 2 - -// -// Hind ... -input bool showHindLE1 = true; // Show Hind Cycle Long Exit 1 -input bool showHindLE2 = true; // Show Hind Cycle Long Exit 2 -input bool showHindSE1 = true; // Show Hind Cycle Short Exit 1 -input bool showHindSE2 = true; // Show Hind Cycle Short Exit 2 +input bool showCurrent = true; // Show Current Cycle +input bool showShort = true; // Show Short Cycle +input bool showMedium = true; // Show Medium Cycle +input bool showLong = true; // Show Long Cycle +input bool showHind = true; // Show Hind Cycle // // Buffers ... @@ -732,30 +710,34 @@ void DefineBuffers() // // Long Exit 1 ... - ENUM_DRAW_TYPE cLE1DrawType = showCurrentLE1 ? DRAW_LINE : DRAW_NONE; + bool canShowCLE1 = showCurrent && showLE1; + ENUM_DRAW_TYPE cLE1DrawType = canShowCLE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(cLE1BufferIndex, cLE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(cLE1BufferIndex, PLOT_SHOW_DATA, showCurrentLE1); + PlotIndexSetInteger(cLE1BufferIndex, PLOT_SHOW_DATA, canShowCLE1); PlotIndexSetInteger(cLE1BufferIndex, PLOT_DRAW_TYPE, cLE1DrawType); // // Long Exit 2 ... - ENUM_DRAW_TYPE cLE2DrawType = showCurrentLE2 ? DRAW_LINE : DRAW_NONE; + bool canShowCLE2 = showCurrent && showLE2; + ENUM_DRAW_TYPE cLE2DrawType = canShowCLE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(cLE2BufferIndex, cLE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(cLE2BufferIndex, PLOT_SHOW_DATA, showCurrentLE2); + PlotIndexSetInteger(cLE2BufferIndex, PLOT_SHOW_DATA, canShowCLE2); PlotIndexSetInteger(cLE2BufferIndex, PLOT_DRAW_TYPE, cLE2DrawType); // // Short Exit 1 ... - ENUM_DRAW_TYPE cSE1DrawType = showCurrentSE1 ? DRAW_LINE : DRAW_NONE; + bool canShowCSE1 = showCurrent && showSE1; + ENUM_DRAW_TYPE cSE1DrawType = canShowCSE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(cSE1BufferIndex, cSE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(cSE1BufferIndex, PLOT_SHOW_DATA, showCurrentSE1); + PlotIndexSetInteger(cSE1BufferIndex, PLOT_SHOW_DATA, canShowCSE1); PlotIndexSetInteger(cSE1BufferIndex, PLOT_DRAW_TYPE, cSE1DrawType); // // Short Exit 2 ... - ENUM_DRAW_TYPE cSE2DrawType = showCurrentSE2 ? DRAW_LINE : DRAW_NONE; + bool canShowCSE2 = showCurrent && showSE2; + ENUM_DRAW_TYPE cSE2DrawType = canShowCSE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(cSE2BufferIndex, cSE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(cSE2BufferIndex, PLOT_SHOW_DATA, showCurrentSE2); + PlotIndexSetInteger(cSE2BufferIndex, PLOT_SHOW_DATA, canShowCSE2); PlotIndexSetInteger(cSE2BufferIndex, PLOT_DRAW_TYPE, cSE2DrawType); // @@ -763,30 +745,34 @@ void DefineBuffers() // // Long Exit 1 ... - ENUM_DRAW_TYPE sLE1DrawType = showCurrentLE1 ? DRAW_LINE : DRAW_NONE; + bool canShowSLE1 = showShort && showLE1; + ENUM_DRAW_TYPE sLE1DrawType = canShowSLE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(sLE1BufferIndex, sLE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(sLE1BufferIndex, PLOT_SHOW_DATA, showCurrentLE1); + PlotIndexSetInteger(sLE1BufferIndex, PLOT_SHOW_DATA, canShowSLE1); PlotIndexSetInteger(sLE1BufferIndex, PLOT_DRAW_TYPE, sLE1DrawType); // // Long Exit 2 ... - ENUM_DRAW_TYPE sLE2DrawType = showCurrentLE2 ? DRAW_LINE : DRAW_NONE; + bool canShowSLE2 = showShort && showLE2; + ENUM_DRAW_TYPE sLE2DrawType = canShowSLE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(sLE2BufferIndex, sLE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(sLE2BufferIndex, PLOT_SHOW_DATA, showCurrentLE2); + PlotIndexSetInteger(sLE2BufferIndex, PLOT_SHOW_DATA, canShowSLE2); PlotIndexSetInteger(sLE2BufferIndex, PLOT_DRAW_TYPE, sLE2DrawType); // + bool canShowSSE1 = showShort && showSE1; // Short Exit 1 ... - ENUM_DRAW_TYPE sSE1DrawType = showCurrentSE1 ? DRAW_LINE : DRAW_NONE; + ENUM_DRAW_TYPE sSE1DrawType = canShowSSE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(sSE1BufferIndex, sSE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(sSE1BufferIndex, PLOT_SHOW_DATA, showCurrentSE1); + PlotIndexSetInteger(sSE1BufferIndex, PLOT_SHOW_DATA, canShowSSE1); PlotIndexSetInteger(sSE1BufferIndex, PLOT_DRAW_TYPE, sSE1DrawType); // // Short Exit 2 ... - ENUM_DRAW_TYPE sSE2DrawType = showCurrentSE2 ? DRAW_LINE : DRAW_NONE; + bool canShowSSE2 = showShort && showSE2; + ENUM_DRAW_TYPE sSE2DrawType = canShowSSE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(sSE2BufferIndex, sSE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(sSE2BufferIndex, PLOT_SHOW_DATA, showCurrentSE2); + PlotIndexSetInteger(sSE2BufferIndex, PLOT_SHOW_DATA, canShowSSE2); PlotIndexSetInteger(sSE2BufferIndex, PLOT_DRAW_TYPE, sSE2DrawType); // @@ -794,30 +780,34 @@ void DefineBuffers() // // Long Exit 1 ... - ENUM_DRAW_TYPE mLE1DrawType = showCurrentLE1 ? DRAW_LINE : DRAW_NONE; + bool canShowMLE1 = showMedium && showLE1; + ENUM_DRAW_TYPE mLE1DrawType = canShowMLE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(mLE1BufferIndex, mLE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(mLE1BufferIndex, PLOT_SHOW_DATA, showCurrentLE1); + PlotIndexSetInteger(mLE1BufferIndex, PLOT_SHOW_DATA, canShowMLE1); PlotIndexSetInteger(mLE1BufferIndex, PLOT_DRAW_TYPE, mLE1DrawType); // // Long Exit 2 ... - ENUM_DRAW_TYPE mLE2DrawType = showCurrentLE2 ? DRAW_LINE : DRAW_NONE; + bool canShowMLE2 = showMedium && showLE2; + ENUM_DRAW_TYPE mLE2DrawType = canShowMLE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(mLE2BufferIndex, mLE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(mLE2BufferIndex, PLOT_SHOW_DATA, showCurrentLE2); + PlotIndexSetInteger(mLE2BufferIndex, PLOT_SHOW_DATA, canShowMLE2); PlotIndexSetInteger(mLE2BufferIndex, PLOT_DRAW_TYPE, mLE2DrawType); // // Short Exit 1 ... - ENUM_DRAW_TYPE mSE1DrawType = showCurrentSE1 ? DRAW_LINE : DRAW_NONE; + bool canShowMSE1 = showMedium && showSE1; + ENUM_DRAW_TYPE mSE1DrawType = canShowMSE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(mSE1BufferIndex, mSE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(mSE1BufferIndex, PLOT_SHOW_DATA, showCurrentSE1); + PlotIndexSetInteger(mSE1BufferIndex, PLOT_SHOW_DATA, canShowMSE1); PlotIndexSetInteger(mSE1BufferIndex, PLOT_DRAW_TYPE, mSE1DrawType); // // Short Exit 2 ... - ENUM_DRAW_TYPE mSE2DrawType = showCurrentSE2 ? DRAW_LINE : DRAW_NONE; + bool canShowMSE2 = showMedium && showSE2; + ENUM_DRAW_TYPE mSE2DrawType = canShowMSE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(mSE2BufferIndex, mSE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(mSE2BufferIndex, PLOT_SHOW_DATA, showCurrentSE2); + PlotIndexSetInteger(mSE2BufferIndex, PLOT_SHOW_DATA, canShowMSE2); PlotIndexSetInteger(mSE2BufferIndex, PLOT_DRAW_TYPE, mSE2DrawType); // @@ -825,30 +815,34 @@ void DefineBuffers() // // Long Exit 1 ... - ENUM_DRAW_TYPE lLE1DrawType = showCurrentLE1 ? DRAW_LINE : DRAW_NONE; + bool canShowLLE1 = showLong && showLE1; + ENUM_DRAW_TYPE lLE1DrawType = canShowLLE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(lLE1BufferIndex, lLE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(lLE1BufferIndex, PLOT_SHOW_DATA, showCurrentLE1); + PlotIndexSetInteger(lLE1BufferIndex, PLOT_SHOW_DATA, canShowLLE1); PlotIndexSetInteger(lLE1BufferIndex, PLOT_DRAW_TYPE, lLE1DrawType); // // Long Exit 2 ... - ENUM_DRAW_TYPE lLE2DrawType = showCurrentLE2 ? DRAW_LINE : DRAW_NONE; + bool canShowLLE2 = showLong && showLE2; + ENUM_DRAW_TYPE lLE2DrawType = canShowLLE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(lLE2BufferIndex, lLE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(lLE2BufferIndex, PLOT_SHOW_DATA, showCurrentLE2); + PlotIndexSetInteger(lLE2BufferIndex, PLOT_SHOW_DATA, canShowLLE2); PlotIndexSetInteger(lLE2BufferIndex, PLOT_DRAW_TYPE, lLE2DrawType); // // Short Exit 1 ... - ENUM_DRAW_TYPE lSE1DrawType = showCurrentSE1 ? DRAW_LINE : DRAW_NONE; + bool canShowLSE1 = showLong && showSE1; + ENUM_DRAW_TYPE lSE1DrawType = canShowLSE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(lSE1BufferIndex, lSE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(lSE1BufferIndex, PLOT_SHOW_DATA, showCurrentSE1); + PlotIndexSetInteger(lSE1BufferIndex, PLOT_SHOW_DATA, canShowLSE1); PlotIndexSetInteger(lSE1BufferIndex, PLOT_DRAW_TYPE, lSE1DrawType); // // Short Exit 2 ... - ENUM_DRAW_TYPE lSE2DrawType = showCurrentSE2 ? DRAW_LINE : DRAW_NONE; + bool canShowLSE2 = showLong && showSE2; + ENUM_DRAW_TYPE lSE2DrawType = canShowLSE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(lSE2BufferIndex, lSE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(lSE2BufferIndex, PLOT_SHOW_DATA, showCurrentSE2); + PlotIndexSetInteger(lSE2BufferIndex, PLOT_SHOW_DATA, canShowLSE2); PlotIndexSetInteger(lSE2BufferIndex, PLOT_DRAW_TYPE, lSE2DrawType); // @@ -856,30 +850,34 @@ void DefineBuffers() // // Long Exit 1 ... - ENUM_DRAW_TYPE hLE1DrawType = showCurrentLE1 ? DRAW_LINE : DRAW_NONE; + bool canShowHLE1 = showHind && showLE1; + ENUM_DRAW_TYPE hLE1DrawType = canShowHLE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(hLE1BufferIndex, hLE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(hLE1BufferIndex, PLOT_SHOW_DATA, showCurrentLE1); + PlotIndexSetInteger(hLE1BufferIndex, PLOT_SHOW_DATA, canShowHLE1); PlotIndexSetInteger(hLE1BufferIndex, PLOT_DRAW_TYPE, hLE1DrawType); // // Long Exit 2 ... - ENUM_DRAW_TYPE hLE2DrawType = showCurrentLE2 ? DRAW_LINE : DRAW_NONE; + bool canShowHLE2 = showHind && showLE2; + ENUM_DRAW_TYPE hLE2DrawType = canShowHLE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(hLE2BufferIndex, hLE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(hLE2BufferIndex, PLOT_SHOW_DATA, showCurrentLE2); + PlotIndexSetInteger(hLE2BufferIndex, PLOT_SHOW_DATA, canShowHLE2); PlotIndexSetInteger(hLE2BufferIndex, PLOT_DRAW_TYPE, hLE2DrawType); // // Short Exit 1 ... - ENUM_DRAW_TYPE hSE1DrawType = showCurrentSE1 ? DRAW_LINE : DRAW_NONE; + bool canShowHSE1 = showHind && showSE1; + ENUM_DRAW_TYPE hSE1DrawType = canShowHSE1 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(hSE1BufferIndex, hSE1Buffer, INDICATOR_DATA); - PlotIndexSetInteger(hSE1BufferIndex, PLOT_SHOW_DATA, showCurrentSE1); + PlotIndexSetInteger(hSE1BufferIndex, PLOT_SHOW_DATA, canShowHSE1); PlotIndexSetInteger(hSE1BufferIndex, PLOT_DRAW_TYPE, hSE1DrawType); // // Short Exit 2 ... - ENUM_DRAW_TYPE hSE2DrawType = showCurrentSE2 ? DRAW_LINE : DRAW_NONE; + bool canShowHSE2 = showHind && showSE2; + ENUM_DRAW_TYPE hSE2DrawType = canShowHSE2 ? DRAW_LINE : DRAW_NONE; SetIndexBuffer(hSE2BufferIndex, hSE2Buffer, INDICATOR_DATA); - PlotIndexSetInteger(hSE2BufferIndex, PLOT_SHOW_DATA, showCurrentSE2); + PlotIndexSetInteger(hSE2BufferIndex, PLOT_SHOW_DATA, canShowHSE2); PlotIndexSetInteger(hSE2BufferIndex, PLOT_DRAW_TYPE, hSE2DrawType); } @@ -1029,7 +1027,7 @@ void CalculateCycle( const double &close[], const double &low[], // - int _length, // Calculation Length + int _length, // Calculation Length double &work[][], // Working Array // double &le1[], diff --git a/Indicators/x-saherelm.xchm.mq5 b/Indicators/x-saherelm.xchm.mq5 index 5ca10784..cb3572d2 100644 --- a/Indicators/x-saherelm.xchm.mq5 +++ b/Indicators/x-saherelm.xchm.mq5 @@ -63,30 +63,21 @@ input ENUM_TIMEFRAMES hcPeriod = NULL; // Time Period input group "Presentation"; // -// AVG ... +// Parts ... input bool showFast = true; // Show Fast input bool showSlow = true; // Show Slow // -// Current ... -input bool showCCFast = true; // Show Current Cycle Fast -input bool showCCSlow = true; // Show Current Cycle Slow +// AVG ... +input bool showAVG = true; // Show Average + // -// Short ... -input bool showSCFast = true; // Show Short Cycle Fast -input bool showSCSlow = true; // Show Short Cycle Slow -// -// Medium ... -input bool showMCFast = true; // Show Medium Cycle Fast -input bool showMCSlow = true; // Show Medium Cycle Slow -// -// Long ... -input bool showLCFast = true; // Show Long Cycle Fast -input bool showLCSlow = true; // Show Long Cycle Slow -// -// Hind ... -input bool showHCFast = true; // Show Hind Cycle Fast -input bool showHCSlow = true; // Show Hind Cycle Slow +// Cycles ... +input bool showCurrent = true; // Show Current Cycle +input bool showShort = true; // Show Short Cycle +input bool showMedium = true; // Show Medium Cycle +input bool showLong = true; // Show Long Cycle +input bool showHind = true; // Show Hind Cycle // // Buffers ... @@ -598,22 +589,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE avgFastDrawType = showFast ? DRAW_LINE : DRAW_NONE; + bool canShowAVGFast = showAVG && showFast; + ENUM_DRAW_TYPE avgFastDrawType = canShowAVGFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(avgFastBuffer, true); SetIndexBuffer(avgFastBufferIndex, avgFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(avgFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(avgFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(avgFastBufferIndex, PLOT_SHOW_DATA, showFast); + PlotIndexSetInteger(avgFastBufferIndex, PLOT_SHOW_DATA, canShowAVGFast); PlotIndexSetInteger(avgFastBufferIndex, PLOT_DRAW_TYPE, avgFastDrawType); // // Slow ... - ENUM_DRAW_TYPE avgSlowDrawType = showSlow ? DRAW_LINE : DRAW_NONE; + bool canShowAVGSlow = showAVG && showSlow; + ENUM_DRAW_TYPE avgSlowDrawType = canShowAVGSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(avgSlowBuffer, true); SetIndexBuffer(avgSlowBufferIndex, avgSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(avgSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(avgSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(avgSlowBufferIndex, PLOT_SHOW_DATA, showSlow); + PlotIndexSetInteger(avgSlowBufferIndex, PLOT_SHOW_DATA, canShowAVGSlow); PlotIndexSetInteger(avgSlowBufferIndex, PLOT_DRAW_TYPE, avgSlowDrawType); // @@ -621,22 +614,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE cFastDrawType = showCCFast ? DRAW_LINE : DRAW_NONE; + bool canShowCFast = showCurrent && showFast; + ENUM_DRAW_TYPE cFastDrawType = canShowCFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(cFastBuffer, true); SetIndexBuffer(cFastBufferIndex, cFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(cFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(cFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(cFastBufferIndex, PLOT_SHOW_DATA, showCCFast); + PlotIndexSetInteger(cFastBufferIndex, PLOT_SHOW_DATA, canShowCFast); PlotIndexSetInteger(cFastBufferIndex, PLOT_DRAW_TYPE, cFastDrawType); // // Slow ... - ENUM_DRAW_TYPE cSlowDrawType = showCCSlow ? DRAW_LINE : DRAW_NONE; + bool canShowCSlow = showCurrent && showSlow; + ENUM_DRAW_TYPE cSlowDrawType = canShowCSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(cSlowBuffer, true); SetIndexBuffer(cSlowBufferIndex, cSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(cSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(cSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(cSlowBufferIndex, PLOT_SHOW_DATA, showCCSlow); + PlotIndexSetInteger(cSlowBufferIndex, PLOT_SHOW_DATA, canShowCSlow); PlotIndexSetInteger(cSlowBufferIndex, PLOT_DRAW_TYPE, cSlowDrawType); // @@ -644,22 +639,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE sFastDrawType = showSCFast ? DRAW_LINE : DRAW_NONE; + bool canShowSFast = showShort && showFast; + ENUM_DRAW_TYPE sFastDrawType = canShowSFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(sFastBuffer, true); SetIndexBuffer(sFastBufferIndex, sFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(sFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(sFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(sFastBufferIndex, PLOT_SHOW_DATA, showSCFast); + PlotIndexSetInteger(sFastBufferIndex, PLOT_SHOW_DATA, canShowSFast); PlotIndexSetInteger(sFastBufferIndex, PLOT_DRAW_TYPE, sFastDrawType); // // Slow ... - ENUM_DRAW_TYPE sSlowDrawType = showSCSlow ? DRAW_LINE : DRAW_NONE; + bool canShowSSlow = showShort && showSlow; + ENUM_DRAW_TYPE sSlowDrawType = canShowSSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(sSlowBuffer, true); SetIndexBuffer(sSlowBufferIndex, sSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(sSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(sSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(sSlowBufferIndex, PLOT_SHOW_DATA, showSCSlow); + PlotIndexSetInteger(sSlowBufferIndex, PLOT_SHOW_DATA, canShowSSlow); PlotIndexSetInteger(sSlowBufferIndex, PLOT_DRAW_TYPE, sSlowDrawType); // @@ -667,22 +664,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE mFastDrawType = showMCFast ? DRAW_LINE : DRAW_NONE; + bool canShowMFast = showMedium && showFast; + ENUM_DRAW_TYPE mFastDrawType = canShowMFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(mFastBuffer, true); SetIndexBuffer(mFastBufferIndex, mFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(mFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(mFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(mFastBufferIndex, PLOT_SHOW_DATA, showMCFast); + PlotIndexSetInteger(mFastBufferIndex, PLOT_SHOW_DATA, canShowMFast); PlotIndexSetInteger(mFastBufferIndex, PLOT_DRAW_TYPE, mFastDrawType); // // Slow ... - ENUM_DRAW_TYPE mSlowDrawType = showMCSlow ? DRAW_LINE : DRAW_NONE; + bool canShowMSlow = showMedium && showSlow; + ENUM_DRAW_TYPE mSlowDrawType = canShowMSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(mSlowBuffer, true); SetIndexBuffer(mSlowBufferIndex, mSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(mSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(mSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(mSlowBufferIndex, PLOT_SHOW_DATA, showMCSlow); + PlotIndexSetInteger(mSlowBufferIndex, PLOT_SHOW_DATA, canShowMSlow); PlotIndexSetInteger(mSlowBufferIndex, PLOT_DRAW_TYPE, mSlowDrawType); // @@ -690,22 +689,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE lFastDrawType = showLCFast ? DRAW_LINE : DRAW_NONE; + bool canShowLFast = showLong && showFast; + ENUM_DRAW_TYPE lFastDrawType = canShowLFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(lFastBuffer, true); SetIndexBuffer(lFastBufferIndex, lFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(lFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(lFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(lFastBufferIndex, PLOT_SHOW_DATA, showLCFast); + PlotIndexSetInteger(lFastBufferIndex, PLOT_SHOW_DATA, canShowLFast); PlotIndexSetInteger(lFastBufferIndex, PLOT_DRAW_TYPE, lFastDrawType); // // Slow ... - ENUM_DRAW_TYPE lSlowDrawType = showLCSlow ? DRAW_LINE : DRAW_NONE; + bool canShowLSlow = showLong && showSlow; + ENUM_DRAW_TYPE lSlowDrawType = canShowLSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(lSlowBuffer, true); SetIndexBuffer(lSlowBufferIndex, lSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(lSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(lSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(lSlowBufferIndex, PLOT_SHOW_DATA, showLCSlow); + PlotIndexSetInteger(lSlowBufferIndex, PLOT_SHOW_DATA, canShowLSlow); PlotIndexSetInteger(lSlowBufferIndex, PLOT_DRAW_TYPE, lSlowDrawType); // @@ -713,22 +714,24 @@ void DefineBuffers() // // Fast ... - ENUM_DRAW_TYPE hFastDrawType = showHCFast ? DRAW_LINE : DRAW_NONE; + bool canShowHFast = showHind && showFast; + ENUM_DRAW_TYPE hFastDrawType = canShowHFast ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(hFastBuffer, true); SetIndexBuffer(hFastBufferIndex, hFastBuffer, INDICATOR_DATA); PlotIndexSetDouble(hFastBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(hFastBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(hFastBufferIndex, PLOT_SHOW_DATA, showHCFast); + PlotIndexSetInteger(hFastBufferIndex, PLOT_SHOW_DATA, canShowHFast); PlotIndexSetInteger(hFastBufferIndex, PLOT_DRAW_TYPE, hFastDrawType); // // Slow ... - ENUM_DRAW_TYPE hSlowDrawType = showHCSlow ? DRAW_LINE : DRAW_NONE; + bool canShowHSlow = showHind && showSlow; + ENUM_DRAW_TYPE hSlowDrawType = canShowHSlow ? DRAW_LINE : DRAW_NONE; ArraySetAsSeries(hSlowBuffer, true); SetIndexBuffer(hSlowBufferIndex, hSlowBuffer, INDICATOR_DATA); PlotIndexSetDouble(hSlowBufferIndex, PLOT_EMPTY_VALUE, 0); PlotIndexSetInteger(hSlowBufferIndex, PLOT_DRAW_BEGIN, maxLength); - PlotIndexSetInteger(hSlowBufferIndex, PLOT_SHOW_DATA, showHCSlow); + PlotIndexSetInteger(hSlowBufferIndex, PLOT_SHOW_DATA, canShowHSlow); PlotIndexSetInteger(hSlowBufferIndex, PLOT_DRAW_TYPE, hSlowDrawType); } diff --git a/Parsers/AMarkets/x-saherelm.xch.amarkets.parser.mq5 b/Parsers/AMarkets/x-saherelm.xch.amarkets.parser.mq5 index 6d4a810d..c7cd2587 100644 --- a/Parsers/AMarkets/x-saherelm.xch.amarkets.parser.mq5 +++ b/Parsers/AMarkets/x-saherelm.xch.amarkets.parser.mq5 @@ -198,19 +198,58 @@ struct XCHStartegyAMarketsConditionsParser bool isDowJones = _symbolParser.IsDowJones(signal.symbol); // - bool isEURUSDFiltered = false; - bool isGBPUSDFiltered = false; - bool isEURGBPFiltered = false; - bool isXAUUSDFiltered = false; - bool isUSDJPYFiltered = false; - bool isEURJPYFiltered = false; - bool isUSDCHFFiltered = false; - bool isEURCHFFiltered = false; - bool isAUDUSDFiltered = false; - bool isNZDUSDFiltered = false; - bool isUSDCADFiltered = false; - bool isEURCADFiltered = false; - bool isDowJonesFiltered = false; + bool isEURUSDFiltered = _eurusdLongParser.IsFiltered( + signal, + conditions // + ); + bool isGBPUSDFiltered = _gbpusdLongParser.IsFiltered( + signal, + conditions // + ); + bool isEURGBPFiltered = _eurgbpLongParser.IsFiltered( + signal, + conditions // + ); + bool isUSDJPYFiltered = _usdjpyLongParser.IsFiltered( + signal, + conditions // + ); + bool isEURJPYFiltered = _eurjpyLongParser.IsFiltered( + signal, + conditions // + ); + bool isUSDCHFFiltered = _usdchfLongParser.IsFiltered( + signal, + conditions // + ); + bool isEURCHFFiltered = _eurchfLongParser.IsFiltered( + signal, + conditions // + ); + bool isXAUUSDFiltered = _xauusdLongParser.IsFiltered( + signal, + conditions // + ); + bool isAUDUSDFiltered = _audusdLongParser.IsFiltered( + signal, + conditions // + ); + bool isNZDUSDFiltered = _nzdusdLongParser.IsFiltered( + signal, + conditions // + ); + bool isUSDCADFiltered = _usdcadLongParser.IsFiltered( + signal, + conditions // + ); + bool isEURCADFiltered = _eurcadLongParser.IsFiltered( + signal, + conditions // + ); + bool isDowJonesFiltered = _dowjonesLongParser.IsFiltered( + signal, + conditions // + ); // if (!force) @@ -218,120 +257,55 @@ struct XCHStartegyAMarketsConditionsParser // if (isEURUSD) { - // - result = - _eurusdLongParser.IsFiltered( - signal, - conditions // - ); + result = isEURUSDFiltered; } else if (isGBPUSD) { - // - result = - _gbpusdLongParser.IsFiltered( - signal, - conditions // - ); + result = isGBPUSDFiltered; } else if (isEURGBP) { - // - result = - _eurgbpLongParser.IsFiltered( - signal, - conditions // - ); + result = isEURGBPFiltered; } else if (isUSDJPY) { - // - result = - _usdjpyLongParser.IsFiltered( - signal, - conditions // - ); + result = isUSDJPYFiltered; } else if (isEURJPY) { - // - result = - _eurjpyLongParser.IsFiltered( - signal, - conditions // - ); + result = isEURJPYFiltered; } else if (isUSDCHF) { - // - result = - _usdchfLongParser.IsFiltered( - signal, - conditions // - ); + result = isUSDCHFFiltered; } else if (isEURCHF) { - // - result = - _eurchfLongParser.IsFiltered( - signal, - conditions // - ); + result = isEURCHFFiltered; } else if (isXAUUSD) { - // - result = - _xauusdLongParser.IsFiltered( - signal, - conditions // - ); + result = isXAUUSDFiltered; } else if (isAUDUSD) { - // - result = - _audusdLongParser.IsFiltered( - signal, - conditions // - ); + result = isAUDUSDFiltered; } else if (isNZDUSD) { - // - result = - _nzdusdLongParser.IsFiltered( - signal, - conditions // - ); + result = isNZDUSDFiltered; } else if (isUSDCAD) { - // - result = - _usdcadLongParser.IsFiltered( - signal, - conditions // - ); + result = isUSDCADFiltered; } else if (isEURCAD) { - // - result = - _eurcadLongParser.IsFiltered( - signal, - conditions // - ); + result = isEURCADFiltered; } else if (isDowJones) { - // - result = - _dowjonesLongParser.IsFiltered( - signal, - conditions // - ); + result = isDowJonesFiltered; } } else @@ -339,94 +313,55 @@ struct XCHStartegyAMarketsConditionsParser // result = // - _eurusdLongParser.IsFiltered( - signal, - conditions // - ) + isEURUSDFiltered // || // - _gbpusdLongParser.IsFiltered( - signal, - conditions // - ) + isGBPUSDFiltered // || // - _eurgbpLongParser.IsFiltered( - signal, - conditions // - ) + isEURGBPFiltered // || // - _usdjpyLongParser.IsFiltered( - signal, - conditions // - ) + isUSDJPYFiltered // || // - _eurjpyLongParser.IsFiltered( - signal, - conditions // - ) + isEURJPYFiltered // || // - _usdchfLongParser.IsFiltered( - signal, - conditions // - ) + isUSDCHFFiltered // || // - _eurchfLongParser.IsFiltered( - signal, - conditions // - ) + isEURCHFFiltered // || // - _xauusdLongParser.IsFiltered( - signal, - conditions // - ) + isXAUUSDFiltered // || // - _audusdLongParser.IsFiltered( - signal, - conditions // - ) + isAUDUSDFiltered // || // - _nzdusdLongParser.IsFiltered( - signal, - conditions // - ) + isNZDUSDFiltered // || // - _usdcadLongParser.IsFiltered( - signal, - conditions // - ) + isUSDCADFiltered // || // - _eurcadLongParser.IsFiltered( - signal, - conditions // - ) + isEURCADFiltered // || // - _dowjonesLongParser.IsFiltered( - signal, - conditions // - ) + isDowJonesFiltered // ; } @@ -462,19 +397,58 @@ struct XCHStartegyAMarketsConditionsParser bool isDowJones = _symbolParser.IsDowJones(signal.symbol); // - bool isEURUSDFiltered = false; - bool isGBPUSDFiltered = false; - bool isEURGBPFiltered = false; - bool isXAUUSDFiltered = false; - bool isUSDJPYFiltered = false; - bool isEURJPYFiltered = false; - bool isUSDCHFFiltered = false; - bool isEURCHFFiltered = false; - bool isAUDUSDFiltered = false; - bool isNZDUSDFiltered = false; - bool isUSDCADFiltered = false; - bool isEURCADFiltered = false; - bool isDowJonesFiltered = false; + bool isEURUSDFiltered = _eurusdShortParser.IsFiltered( + signal, + conditions // + ); + bool isGBPUSDFiltered = _gbpusdShortParser.IsFiltered( + signal, + conditions // + ); + bool isEURGBPFiltered = _eurgbpShortParser.IsFiltered( + signal, + conditions // + ); + bool isUSDJPYFiltered = _usdjpyShortParser.IsFiltered( + signal, + conditions // + ); + bool isEURJPYFiltered = _eurjpyShortParser.IsFiltered( + signal, + conditions // + ); + bool isUSDCHFFiltered = _usdchfShortParser.IsFiltered( + signal, + conditions // + ); + bool isEURCHFFiltered = _eurchfShortParser.IsFiltered( + signal, + conditions // + ); + bool isXAUUSDFiltered = _xauusdShortParser.IsFiltered( + signal, + conditions // + ); + bool isAUDUSDFiltered = _audusdShortParser.IsFiltered( + signal, + conditions // + ); + bool isNZDUSDFiltered = _nzdusdShortParser.IsFiltered( + signal, + conditions // + ); + bool isUSDCADFiltered = _usdcadShortParser.IsFiltered( + signal, + conditions // + ); + bool isEURCADFiltered = _eurcadShortParser.IsFiltered( + signal, + conditions // + ); + bool isDowJonesFiltered = _dowjonesShortParser.IsFiltered( + signal, + conditions // + ); // if (!force) @@ -482,120 +456,55 @@ struct XCHStartegyAMarketsConditionsParser // if (isEURUSD) { - // - result = - _eurusdShortParser.IsFiltered( - signal, - conditions // - ); + result = isEURUSDFiltered; } else if (isGBPUSD) { - // - result = - _gbpusdShortParser.IsFiltered( - signal, - conditions // - ); + result = isGBPUSDFiltered; } else if (isEURGBP) { - // - result = - _eurgbpShortParser.IsFiltered( - signal, - conditions // - ); + result = isEURGBPFiltered; } else if (isUSDJPY) { - // - result = - _usdjpyShortParser.IsFiltered( - signal, - conditions // - ); + result = isUSDJPYFiltered; } else if (isEURJPY) { - // - result = - _eurjpyShortParser.IsFiltered( - signal, - conditions // - ); + result = isEURJPYFiltered; } else if (isUSDCHF) { - // - result = - _usdchfShortParser.IsFiltered( - signal, - conditions // - ); + result = isUSDCHFFiltered; } else if (isEURCHF) { - // - result = - _eurchfShortParser.IsFiltered( - signal, - conditions // - ); + result = isEURCHFFiltered; } else if (isXAUUSD) { - // - result = - _xauusdShortParser.IsFiltered( - signal, - conditions // - ); + result = isXAUUSDFiltered; } else if (isAUDUSD) { - // - result = - _audusdShortParser.IsFiltered( - signal, - conditions // - ); + result = isAUDUSDFiltered; } else if (isNZDUSD) { - // - result = - _nzdusdShortParser.IsFiltered( - signal, - conditions // - ); + result = isNZDUSDFiltered; } else if (isUSDCAD) { - // - result = - _usdcadShortParser.IsFiltered( - signal, - conditions // - ); + result = isUSDCADFiltered; } else if (isEURCAD) { - // - result = - _eurcadShortParser.IsFiltered( - signal, - conditions // - ); + result = isEURCADFiltered; } else if (isDowJones) { - // - result = - _dowjonesShortParser.IsFiltered( - signal, - conditions // - ); + result = isDowJonesFiltered; } } else @@ -603,94 +512,55 @@ struct XCHStartegyAMarketsConditionsParser // result = // - _eurusdShortParser.IsFiltered( - signal, - conditions // - ) + isEURUSDFiltered // || // - _gbpusdShortParser.IsFiltered( - signal, - conditions // - ) + isGBPUSDFiltered // || // - _eurgbpShortParser.IsFiltered( - signal, - conditions // - ) + isEURGBPFiltered // || // - _usdjpyShortParser.IsFiltered( - signal, - conditions // - ) + isUSDJPYFiltered // || // - _eurjpyShortParser.IsFiltered( - signal, - conditions // - ) + isEURJPYFiltered // || // - _usdchfShortParser.IsFiltered( - signal, - conditions // - ) + isUSDCHFFiltered // || // - _eurchfShortParser.IsFiltered( - signal, - conditions // - ) + isEURCHFFiltered // || // - _xauusdShortParser.IsFiltered( - signal, - conditions // - ) + isXAUUSDFiltered // || // - _audusdShortParser.IsFiltered( - signal, - conditions // - ) + isAUDUSDFiltered // || // - _nzdusdShortParser.IsFiltered( - signal, - conditions // - ) + isNZDUSDFiltered // || // - _usdcadShortParser.IsFiltered( - signal, - conditions // - ) + isUSDCADFiltered // || // - _eurcadShortParser.IsFiltered( - signal, - conditions // - ) + isEURCADFiltered // || // - _dowjonesShortParser.IsFiltered( - signal, - conditions // - ) + isDowJonesFiltered // ; } diff --git a/Strategies/x-saherelm.xch.strategy.mq5 b/Strategies/x-saherelm.xch.strategy.mq5 index a55bd179..162f56bb 100644 --- a/Strategies/x-saherelm.xch.strategy.mq5 +++ b/Strategies/x-saherelm.xch.strategy.mq5 @@ -1527,16 +1527,16 @@ private: // chmInputs.showFast = false; chmInputs.showSlow = false; - chmInputs.showCCFast = false; - chmInputs.showCCSlow = false; - chmInputs.showSCFast = false; - chmInputs.showSCSlow = false; - chmInputs.showMCFast = false; - chmInputs.showMCSlow = false; - chmInputs.showLCFast = false; - chmInputs.showLCSlow = false; - chmInputs.showHCFast = false; - chmInputs.showHCSlow = false; + + // + chmInputs.showAVG = false; + + // + chmInputs.showCurrent = false; + chmInputs.showShort = false; + chmInputs.showMedium = false; + chmInputs.showLong = false; + chmInputs.showHind = false; // chmHelper = new XSCXCHMHelper(); @@ -1659,26 +1659,17 @@ private: chcheInputs.hcPeriod = hcPeriod; // - chcheInputs.showCurrentLE1 = false; - chcheInputs.showCurrentLE2 = false; - chcheInputs.showCurrentSE1 = false; - chcheInputs.showCurrentSE2 = false; - chcheInputs.showShortLE1 = false; - chcheInputs.showShortLE2 = false; - chcheInputs.showShortSE1 = false; - chcheInputs.showShortSE2 = false; - chcheInputs.showMediumLE1 = false; - chcheInputs.showMediumLE2 = false; - chcheInputs.showMediumSE1 = false; - chcheInputs.showMediumSE2 = false; - chcheInputs.showLongLE1 = false; - chcheInputs.showLongLE2 = false; - chcheInputs.showLongSE1 = false; - chcheInputs.showLongSE2 = false; - chcheInputs.showHindLE1 = false; - chcheInputs.showHindLE2 = false; - chcheInputs.showHindSE1 = false; - chcheInputs.showHindSE2 = false; + chcheInputs.showLE1 = false; + chcheInputs.showLE2 = false; + chcheInputs.showSE1 = false; + chcheInputs.showSE2 = false; + + // + chcheInputs.showCurrent = false; + chcheInputs.showShort = false; + chcheInputs.showMedium = false; + chcheInputs.showLong = false; + chcheInputs.showHind = false; // chcheHelper = new XSCXCHCHEHelper();