diff --git a/Classes/x-saherelm.x121.xtrade.handler.class.mq5 b/Classes/x-saherelm.x121.xtrade.handler.class.mq5 index 47317da1..35541f1b 100644 Binary files a/Classes/x-saherelm.x121.xtrade.handler.class.mq5 and b/Classes/x-saherelm.x121.xtrade.handler.class.mq5 differ diff --git a/Experts/x-saherelm.x121.ea.mq5 b/Experts/x-saherelm.x121.ea.mq5 index 18859074..89ab3971 100644 --- a/Experts/x-saherelm.x121.ea.mq5 +++ b/Experts/x-saherelm.x121.ea.mq5 @@ -29,7 +29,6 @@ #include "../Helpers/x-saherelm.xct.helper.mq5" // -#include "../Parsers/x-saherelm.x121.parser.mq5" #include "../Strategies/x-saherelm.x121.strategy.mq5" // @@ -82,6 +81,8 @@ input int eaMaxAllowedLongs = 1; // Max Allowed Long Positio input int eaMaxAllowedShorts = 1; // Max Allowed Short Positions input string eaEnableSignallingAt = "03:30"; // Auto Enable Signalling Time input string eaDisableSignallingAt = "22:30"; // Auto Disable Signalling Time +input int eaNumberOfSLForPauseSignalling = 2; // Number of SL For Pause Signalling Per Symbol/Type +input int eaSignallingPauseDelayInMinute = 120; // Signalling Pause Delay In Minute input double eaMaxDrawdownPercentForOpenTrades = 10; // Max Drawdown Percent for Open Trades // @@ -188,19 +189,11 @@ XTimeTracker eaTimeTracker; // Trade Handler Instance Class ... X121SCTradeHandler *eaTradeHandler; -// -// Since Signal Filtering done based on -// Strategy and it's not related to Public -// TradeHandler for Seperation of Concern issue, -// we do this here ... -X121StartegyConditionsParser x121Parser; - // string mTag = ""; // double eaR2R = 1.5; -datetime lastSignalOn = NULL; bool eaUseFixedTPSLPoints = true; // @@ -580,6 +573,8 @@ bool InitEA() eaTradeHandler.MaxAllowedLongs(eaMaxAllowedLongs); eaTradeHandler.MaxAllowedShorts(eaMaxAllowedShorts); eaTradeHandler.UseMaxAllowedTradesPerSymbol(eaUseMaxAllowedTradesPerSymbol); + eaTradeHandler.NumberOfSLForPauseSignalling(eaNumberOfSLForPauseSignalling); + eaTradeHandler.SignallingPauseDelayInMinute(eaSignallingPauseDelayInMinute); eaTradeHandler.MaxDrawdownPercentForOpenTrades(eaMaxDrawdownPercentForOpenTrades); // @@ -1219,66 +1214,24 @@ void OnSignalRecieved( return; } - // - bool isFiltered = x121Parser.IsFiltered( - signal, - conditions // - ); - if (isFiltered) - { - // - eaTradeHandler.RemoveSignal(signal); - return; - } - - // - // Attach Conditions Summary to Signal ... - string conditionsSummary = conditions.GenerateSummary( - false, - false, - true, - false // - ); - - // - signal.conditions = x121Parser.GenerateSignalConditions( - signal, - conditions // - ); - - // - // Check Signal Delay ... - datetime currentTime = TimeCurrent(); - int delay = eaDelayBarBetweenTwoSignal; - bool isDelayPassed = delay <= 0 - ? true - : !IsValid(lastSignalOn) - ? true - : MathAbs(TimeToSeconds(currentTime)) - MathAbs(TimeToSeconds(lastSignalOn)) >= ulong(delay * PeriodSeconds(_Period)); - if (!isDelayPassed) - { - return; - } - // // Execute Signal Using Trade Handler ... ENUM_X_SIGNAL_EXECUTION_RESULT state; bool isExecuted = eaTradeHandler.ExecuteSignal( signal, - state // + state, + conditions // ); - - // - if (isExecuted) - { - lastSignalOn = currentTime; - } } // // Handle StopLoss Triggered Positions ... void OnStopLossTriggered(const XDeal &deal) { + // + eaTradeHandler.HandleSL( + deal.positionId); + // // Finish ... eaTradeHandler.Finish(deal); @@ -1291,6 +1244,10 @@ void OnStopLossTriggered(const XDeal &deal) // Handle Take Profit Triggered Positions ... void OnTakeProfitTriggered(const XDeal &deal) { + // + eaTradeHandler.HandleTP( + deal.positionId); + // // Finish ... eaTradeHandler.Finish(deal);