From 558928d1a2c67489c8d723cf28e2cde264750769 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Sat, 24 Feb 2024 08:45:32 +0330 Subject: [PATCH] apply fix on XEU5 ... --- BKP/Main/Classes/x-saherelm.provider.lib.mq5 | 12 +- ...elm.xau5.ea.mq5 => x-saherelm.xeu5.ea.mq5} | 131 +- .../x-saherelm.xau5.provider.inputs.lib.mq5 | 283 - ...saherelm.xeu5.provider.indicators.lib.mq5} | 12905 +++++++++------- .../x-saherelm.xeu5.provider.inputs.lib.mq5 | 283 + ...b.mq5 => x-saherelm.xeu5.provider.lib.mq5} | 528 +- ...-saherelm.xeu5.provider.indicators.lib.mq5 | 294 +- .../x-saherelm.xeu5.provider.inputs.lib.mq5 | 26 +- 8 files changed, 7708 insertions(+), 6754 deletions(-) rename BKP/Main/Experts/{x-saherelm.xau5.ea.mq5 => x-saherelm.xeu5.ea.mq5} (70%) delete mode 100644 BKP/Main/Providers/x-saherelm.xau5.provider.inputs.lib.mq5 rename BKP/Main/Providers/{x-saherelm.xau5.provider.indicators.lib.mq5 => x-saherelm.xeu5.provider.indicators.lib.mq5} (66%) create mode 100644 BKP/Main/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 rename BKP/Main/Providers/{x-saherelm.xau5.provider.lib.mq5 => x-saherelm.xeu5.provider.lib.mq5} (63%) diff --git a/BKP/Main/Classes/x-saherelm.provider.lib.mq5 b/BKP/Main/Classes/x-saherelm.provider.lib.mq5 index 63279162..1dbdcd3f 100644 --- a/BKP/Main/Classes/x-saherelm.provider.lib.mq5 +++ b/BKP/Main/Classes/x-saherelm.provider.lib.mq5 @@ -285,9 +285,9 @@ public: bool xSIAllowShortSignals, // Allow Short Signals // // XTSFI ... - bool XTSFIEnableSignaller, // Enable Signaller - bool XTSFIAllowLongSignals, // Allow Long Signals - bool XTSFIAllowShortSignals, // Allow Short Signals + bool xTSFIEnableSignaller, // Enable Signaller + bool xTSFIAllowLongSignals, // Allow Long Signals + bool xTSFIAllowShortSignals, // Allow Short Signals // // XOBDLH ... bool xOBDLHEnableSignaller, // Enable Signaller @@ -331,9 +331,9 @@ public: // // XTSFI ... - mXTSFIEnableSignaller = XTSFIEnableSignaller; - mXTSFIAllowLongSignals = XTSFIAllowLongSignals; - mXTSFIAllowShortSignals = XTSFIAllowShortSignals; + mXTSFIEnableSignaller = xTSFIEnableSignaller; + mXTSFIAllowLongSignals = xTSFIAllowLongSignals; + mXTSFIAllowShortSignals = xTSFIAllowShortSignals; // // XOBDLH ... diff --git a/BKP/Main/Experts/x-saherelm.xau5.ea.mq5 b/BKP/Main/Experts/x-saherelm.xeu5.ea.mq5 similarity index 70% rename from BKP/Main/Experts/x-saherelm.xau5.ea.mq5 rename to BKP/Main/Experts/x-saherelm.xeu5.ea.mq5 index d2f54dba..5d90b797 100644 --- a/BKP/Main/Experts/x-saherelm.xau5.ea.mq5 +++ b/BKP/Main/Experts/x-saherelm.xeu5.ea.mq5 @@ -17,20 +17,21 @@ #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://saherelm.ir" #property version "1.00" -#property description "SaherElm XAU5 EA" +#property description "SaherElm XEU5 EA" #property strict // // START Inputs ... // +// input group "Commons"; // // XCTIMER inputs ... -input bool xAU5ShowCandleTimer = true; // Show Condle Remaining Time -input color xAU5CandleTimerColot = clrYellow; // Candle Timer Color -input ENUM_BASE_CORNER xAU5CandleTimerCorner = CORNER_RIGHT_LOWER; // Where to Show Candle Timer +input bool xEU5ShowCandleTimer = true; // Show Condle Remaining Time +input color xEU5CandleTimerColot = clrYellow; // Candle Timer Color +input ENUM_BASE_CORNER xEU5CandleTimerCorner = CORNER_RIGHT_LOWER; // Where to Show Candle Timer // // END Inputs ... @@ -57,8 +58,8 @@ input ENUM_BASE_CORNER xAU5CandleTimerCorner = CORNER_RIGHT_LOWER; // Where to S #include "../Libraries/x-saherelm.draw.lib.mq5" // -// XAU5 Signal Provider ... -#include "../Providers/x-saherelm.xau5.provider.lib.mq5" +// XEU5 Signal Provider ... +#include "../Providers/x-saherelm.xeu5.provider.lib.mq5" // // END Including Providers ... @@ -67,13 +68,13 @@ input ENUM_BASE_CORNER xAU5CandleTimerCorner = CORNER_RIGHT_LOWER; // Where to S // // START Global Definitions: Variables, Properties and etc ... // -bool isXAU5NewHour; -bool isXAU5NewDay; -bool isXAU5NewWeek; -bool isXAU5NewMonth; +bool isXEU5NewHour; +bool isXEU5NewDay; +bool isXEU5NewWeek; +bool isXEU5NewMonth; // -int xAU5CTimerHandler = INVALID_HANDLE; +int xEU5CTimerHandler = INVALID_HANDLE; // // END Global Definitions: Variables, Properties and etc ... // @@ -87,7 +88,7 @@ int xAU5CTimerHandler = INVALID_HANDLE; int OnInit() { // - logTag = "XAU5EA"; + logTag = "XEU5EA"; drawPrefix = logTag; alertPrefix = logTag; @@ -107,17 +108,17 @@ int OnInit() } // - // Initialize XAU5 Provider ... - if (!XAU5InitSignalProviderLibrary()) + // Initialize XEU5 Provider ... + if (!XEU5InitSignalProviderLibrary()) { return INIT_PARAMETERS_INCORRECT; } // // Init XCTimer ... - if (xAU5ShowCandleTimer) + if (xEU5ShowCandleTimer) { - if (!XAU5CTimerInit()) + if (!XEU5CTimerInit()) { return INIT_FAILED; } @@ -148,15 +149,15 @@ void OnDeinit(const int reason) // Here we can handle De Initialization Reasons ... // - // De Initialize XAU5 Provider ... - XAU5DeinitSignalProviderLibrary(reason); + // De Initialize XEU5 Provider ... + XEU5DeinitSignalProviderLibrary(reason); // // De Init XDraw Library ... // OnDeinitDrawLibrary(); // - IndicatorRelease(xAU5CTimerHandler); + IndicatorRelease(xEU5CTimerHandler); } // @@ -166,15 +167,15 @@ void OnTick() // // Handle Monthly Alert ... bool isFirstMonth = xMonth == -1; - isXAU5NewMonth = IsNewMonth(); + isXEU5NewMonth = IsNewMonth(); bool canMonthlyAlert = - isXAU5NewMonth && - xAU5EnableAlerts && - xAU5EnableMonthlyAlerts; + isXEU5NewMonth && + xEU5EnableAlerts && + xEU5EnableMonthlyAlerts; bool canMonthlyReport = !isFirstMonth && canMonthlyAlert && - xAU5EnableMonthlyReports; + xEU5EnableMonthlyReports; if (canMonthlyAlert) { // @@ -185,7 +186,7 @@ void OnTick() if (canMonthlyReport) { // - string report = xAU5Reporter.GenerateReportString(XREPORT_MONTHLY); + string report = xEU5Reporter.GenerateReportString(XREPORT_MONTHLY); // message = "Last Month Report:\n" + report; @@ -193,7 +194,7 @@ void OnTick() // // Reset Report ... - xAU5Reporter.Reset(XREPORT_MONTHLY); + xEU5Reporter.Reset(XREPORT_MONTHLY); // SendAlert(message); @@ -202,15 +203,15 @@ void OnTick() // // Handle Weekly Alert ... bool isFirstWeek = xDayOfWeek == -1; - isXAU5NewWeek = IsNewWeek(); + isXEU5NewWeek = IsNewWeek(); bool canWeeklyAlert = - isXAU5NewWeek && - xAU5EnableAlerts && - xAU5EnableWeeklyAlerts; + isXEU5NewWeek && + xEU5EnableAlerts && + xEU5EnableWeeklyAlerts; bool canWeeklyReport = !isFirstWeek && canWeeklyAlert && - xAU5EnableWeeklyReports; + xEU5EnableWeeklyReports; if (canWeeklyAlert) { // @@ -221,7 +222,7 @@ void OnTick() if (canWeeklyReport) { // - string report = xAU5Reporter.GenerateReportString(XREPORT_WEEKLY); + string report = xEU5Reporter.GenerateReportString(XREPORT_WEEKLY); // message = "Last Week Report:\n" + report; @@ -229,7 +230,7 @@ void OnTick() // // Reset Report ... - xAU5Reporter.Reset(XREPORT_WEEKLY); + xEU5Reporter.Reset(XREPORT_WEEKLY); // SendAlert(message); @@ -238,15 +239,15 @@ void OnTick() // // Handle Daily Alert ... bool isFirstDay = xDay == -1; - isXAU5NewDay = IsNewDay(); + isXEU5NewDay = IsNewDay(); bool canDailyAlert = - isXAU5NewDay && - xAU5EnableAlerts && - xAU5EnableDailyAlerts; + isXEU5NewDay && + xEU5EnableAlerts && + xEU5EnableDailyAlerts; bool canDailyReport = !isFirstDay && canDailyAlert && - xAU5EnableDailyReports; + xEU5EnableDailyReports; if (canDailyAlert) { // @@ -257,7 +258,7 @@ void OnTick() if (canDailyReport) { // - string report = xAU5Reporter.GenerateReportString(XREPORT_DAILY); + string report = xEU5Reporter.GenerateReportString(XREPORT_DAILY); // message = "Last Week Report:\n" + report; @@ -265,7 +266,7 @@ void OnTick() // // Reset Report ... - xAU5Reporter.Reset(XREPORT_DAILY); + xEU5Reporter.Reset(XREPORT_DAILY); // SendAlert(message); @@ -274,11 +275,11 @@ void OnTick() // // Handle Hourly Alert ... bool isFirstHour = xHour == -1; - isXAU5NewHour = IsNewHour(); + isXEU5NewHour = IsNewHour(); bool canHourlyAlert = - isXAU5NewHour && - xAU5EnableAlerts && - xAU5EnableHourlyAlerts; + isXEU5NewHour && + xEU5EnableAlerts && + xEU5EnableHourlyAlerts; if (canHourlyAlert) { // @@ -290,33 +291,33 @@ void OnTick() // // Prevent Going Forward if user Disable it ... - if (xAU5EnableProvider) + if (xEU5EnableProvider) { // - // Handle Processing on XAU5 Signal Provider ... - XAU5SignalProviderDoControlState(); + // Handle Processing on XEU5 Signal Provider ... + XEU5SignalProviderDoControlState(); } - + // // Check Can Ignore Tick or not .. - bool canIgnoreTick = xAU5IsTestMode + bool canIgnoreTick = xEU5IsTestMode ? !IsNewCandle() - : !IsNewCandle() && xAU5WaitUntilNextCandle; + : !IsNewCandle() && xEU5WaitUntilNextCandle; if (canIgnoreTick) { return; } // - xAU5WaitUntilNextCandle = false; + xEU5WaitUntilNextCandle = false; // // Prevent Going Forward if user Disable it ... - if (xAU5EnableProvider) + if (xEU5EnableProvider) { // - // Handle Processing on XAU5 Signal Provider ... - XAU5SignalProviderHandleTick(); + // Handle Processing on XEU5 Signal Provider ... + XEU5SignalProviderHandleTick(); } } @@ -327,11 +328,11 @@ void OnTrade() // // Prevent Going Forward if user Disable it ... - if (xAU5EnableProvider) + if (xEU5EnableProvider) { // - // Handle Processing Trades on XAU5 Signal Provider ... - XAU5SignalProviderHandleTrade(); + // Handle Processing Trades on XEU5 Signal Provider ... + XEU5SignalProviderHandleTrade(); } } @@ -354,8 +355,8 @@ bool ValidateInputs() // Validate Args ... // - // Validate XAU5 Provider Inputs ... - result = XAU5ValidateInputs(); + // Validate XEU5 Provider Inputs ... + result = XEU5ValidateInputs(); if (!result) { return false; @@ -370,24 +371,24 @@ bool ValidateInputs() return result; } -bool XAU5CTimerInit() +bool XEU5CTimerInit() { // bool result = true; // - xAU5CTimerHandler = iCustom( + xEU5CTimerHandler = iCustom( _Symbol, _Period, "x-saherelm.xctimer.indicator", // // Inputs ... - xAU5CandleTimerColot, - xAU5CandleTimerCorner); + xEU5CandleTimerColot, + xEU5CandleTimerCorner + ); // - if (xAU5CTimerHandler == INVALID_HANDLE) - { + if (xEU5CTimerHandler == INVALID_HANDLE) { result = false; } diff --git a/BKP/Main/Providers/x-saherelm.xau5.provider.inputs.lib.mq5 b/BKP/Main/Providers/x-saherelm.xau5.provider.inputs.lib.mq5 deleted file mode 100644 index 94956f64..00000000 --- a/BKP/Main/Providers/x-saherelm.xau5.provider.inputs.lib.mq5 +++ /dev/null @@ -1,283 +0,0 @@ -/////////////////////////////////////////////////////////////// -// -// SaherElm IT Center MQL5 XAU5 Signal Provider Library Inputs -// ----------------------------------------------------------- -// -// Maintainer: -// ------------ -// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) -// -////////////////////////////////////////////////////// -// -// Global Properties ... -#property library -#property copyright "Copyright 2023, SaherElm IT Center" -#property link "https://www.saherelm.ir" -#property version "1.00" -#property strict - -// -// Include Logger ... -#include "../Libraries/x-saherelm.log.lib.mq5" - -// -// Include Classes ... -#include "../Classes/x-saherelm.class.lib.mq5" - -// -input group "XAU5 Provider"; - -// -// Commonly Used Configurations ... -input group "XAU5 Common"; -// -// Provider ... -input bool xAU5EnableProvider = true; // Enable Provider -input int xAU5NumberOfItemsPerTick = 30; // Number Of items Readed In Each Tick -// -// Alerts ... -input bool xAU5EnableAlerts = true; // Enable Events Alert -input bool xAU5EnableHourlyAlerts = false; // Send Alert on each new Hour -input bool xAU5EnableDailyAlerts = false; // Send Alert on each new Day -input bool xAU5EnableWeeklyAlerts = false; // Send Alert on each new Week -input bool xAU5EnableMonthlyAlerts = false; // Send Alert on each new Month -// -// Reports ... -input bool xAU5EnableDailyReports = false; // Send Report on each new Day -input bool xAU5EnableWeeklyReports = false; // Send Report on each new Week -input bool xAU5EnableMonthlyReports = false; // Send Report on each new Month - -// -// Trader and Expert Specific Configurations ... -input group "XAU5 Trader"; -input int xAU5MagicNumber = 16940561; // Trader MagicNumber -input int xAU5Slippage = 10; // Trader Slippage - -// -// Trades Management Configurations ... -input group "XAU5 Trade Management"; -input bool xAU5AllowLongTrades = true; // Allow Long Trades -input bool xAU5AllowShortTrades = true; // Allow Short Trades - -// -// Risk Management Configurations ... -input group "XAU5 Risk Management"; -// -// Trade Count ... -input int xAU5MaxAllowedTrades = 10; // Max Allowed Trades at Same Time -input ENUM_X_CROSS_SIGNAL_METHOD xAU5CrossSignalsMethod = X_CROSS_SIGNAL_REGULAR; // Handle Cross Signals Method -// -// Max Allowed Trade Age ... -input int xAU5MaxAllowedTradeAge = 1500; // Detect Long Time Trades -input ENUM_X_GUARD_ACTIONS xAU5OldTradesAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // What to do with Old Trades -// -// Trade Volume Specific Configurations ... -input double xAU5StaticVolumeFactor = 0.0001; // Static Volume baesd on Balance -input ENUM_STATIC_VOLUME_METHODS xAU5StaticVolumeMethod = X_STATIC_VOLUME_BASED_ON_BALANCE; // How to Calculate Static Volume -input double xAU5VolumeMultiplier = 0; // Volume Increase Multiplier -input double xAU5ApplyVolumeMultiplierFactor = 0; // Apply Volume Multiplier Rate based on Balance -input double xAU5MaxSupportedVolumePerTradeFactor = 0; // Max Supported Volume Per Trade Factor based on Balance -input double xAU5IncreasedMaxSupportedVolumeRate = 0; // Increase Max Supported Volume based on Balance -// -// Trade Profits ... -input double xAU5MinRewardInPips = 60; // Minimum Reward Per Trade in Pips -input double xAU5RiskFreeStepInPips = 0; // Make Trades Risk Free Steps in Pips -input double xAU5RiskFreeRate = 0; // Volume Multiplier for Risk Free Trades -// -// Guard Riskable Money and Profits ... -input double xAU5CriticalDrawDownFactor = 0.20; // Critical Allowed Drawdown Factor based on Balance -input ENUM_X_GUARD_ACTIONS xAU5CriticalGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // Specify Guard Action on Critical Drawdown -input double xAU5MaxAllowedDrawDownFactor = 0.25; // Max Allowed Drawdown Factor based on Balance -input ENUM_X_GUARD_ACTIONS xAU5MaxAllowedGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_5; // Specify Guard Action on Max Allowed Drawdown -input int xAU5GuardStopoutFiredAfterTouches = 5; // Guard Stopout all Trades if Max Allowed Drawdown touched - -// -// Account Conditions for Trading ... -input double xAU5BalanceFactorForOpenTrades = 0.5; // Minimum Balance for Open Trades -input double xAU5FreeMarginFactorForOpenTrades = 0.8; // Minimum Free Margin for Open Trades - -// -// May be Used Later as Input Params ... -bool xAU5UseVirtualTPSl = false; // Use Virtual TP SL -bool xAU5EnableSignalAlerts = false; // Send Signal Alert - -// -// Validate Inputs before Initialization ... -bool XAU5ValidateInputs() -{ - // - bool result = false; - - // - // Implement Other Verifications ... - - // - // Check Trading Availability ... - bool isTradeAvailable = xAU5AllowLongTrades || xAU5AllowShortTrades; - if (!isTradeAvailable) - { - LogMessage("XAU5 => Warning: Trading disabled ..."); - } - - // - // Chekc Number of reading items per tick ... - result = xAU5NumberOfItemsPerTick >= 5; - if (!result) - { - // - LogMessage("XAU5 invalid Number of items Reading Per Tick ..."); - - // - return result; - } - - // - // Check Max Allowed Trades Count ... - result = isTradeAvailable && xAU5MaxAllowedTrades >= 1; - if (!result) - { - // - LogMessage("XAU5 Number of Trades not valid ..."); - - // - return result; - } - - // - // Check Free Margin ... - result = - isTradeAvailable && - xAU5FreeMarginFactorForOpenTrades > 0 && - xAU5FreeMarginFactorForOpenTrades < 1; - if (!result) - { - // - LogMessage("XAU5 Invalid Free Margin ..."); - - // - return result; - } - - // - // Check min Balance for Open Trades ... - result = - isTradeAvailable && - xAU5BalanceFactorForOpenTrades > 0 && - xAU5BalanceFactorForOpenTrades < 1; - if (!result) - { - // - LogMessage("XAU5 Invalid Min Balance for Open Trades ..."); - - // - return result; - } - - // - // Check Min Reward Per Trade ... - result = xAU5MinRewardInPips > 0; - if (!result) - { - // - LogMessage("XAU5 Invalid Min Reward Per Trade ..."); - - // - return result; - } - - // - // Check Trades Volume ... - result = xAU5StaticVolumeFactor > 0; - if (!result) - { - // - LogMessage("XAU5 Invalid Static Volume ..."); - - // - return result; - } - - // - // Check Volume Multiplier ... - result = xAU5VolumeMultiplier >= 0; - if (!result) - { - // - LogMessage("XAU5 Invalid Volume Multiplier ..."); - - // - return result; - } - - // - result = - xAU5CriticalDrawDownFactor == 0 || (xAU5CriticalDrawDownFactor > 0 && - xAU5CriticalDrawDownFactor < 1); - if (!result) - { - // - LogMessage("XAU5 Invalid Critical DrawDown Factor ..."); - - // - return result; - } - - // - result = - xAU5MaxAllowedDrawDownFactor == 0 || (xAU5MaxAllowedDrawDownFactor > 0 && - xAU5MaxAllowedDrawDownFactor < 1); - if (!result) - { - // - LogMessage("XAU5 Invalid Max Allowed DrawDown Factor ..."); - - // - return result; - } - - // - // Check Guard Actions ... - // - result = - xAU5CriticalDrawDownFactor > 0 && - xAU5CriticalDrawDownFactor < 1 && - xAU5MaxAllowedDrawDownFactor > 0 && - xAU5MaxAllowedDrawDownFactor < 1; - if (!result) - { - // - LogMessage("XAU5 For Critical Drawdown, you have to Specify Max Drawdown also ..."); - - // - return result; - } - - // - result = xAU5CriticalDrawDownFactor > 0 && xAU5CriticalDrawDownFactor < xAU5MaxAllowedDrawDownFactor; - if (!result) - { - // - LogMessage("XAU5 Critical Drawdown must Smaller than Max Drawdown ..."); - - // - return result; - } - - // - if (xAU5CriticalDrawDownFactor > 0 && xAU5CriticalGuardAction == X_GUARD_DO_NOTHING) - { - LogMessage("XAU5 IMPORTANT you Specified Critical Drawdown, but there is no any Guard Action ..."); - } - - // - if (xAU5MaxAllowedDrawDownFactor > 0 && xAU5MaxAllowedGuardAction == X_GUARD_DO_NOTHING) - { - LogMessage("XAU5 IMPORTANT you Specified Max Allowed Drawdown, but there is no any Guard Action ..."); - } - - // - result = true; - - // - return result; -} \ No newline at end of file diff --git a/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 b/BKP/Main/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 similarity index 66% rename from BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 rename to BKP/Main/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 index b666d0db..9dcb2cac 100644 --- a/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 +++ b/BKP/Main/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////// // -// SaherElm IT Center MQL5 XAU5 Signal Provider Indicators Library +// SaherElm IT Center MQL5 XEU5 Signal Provider Indicators Library // ---------------------------------------------------------------- // // Maintainer: @@ -18,7 +18,7 @@ // // Include Provider Inputs ... -#include "x-saherelm.xau5.provider.inputs.lib.mq5" +#include "x-saherelm.xeu5.provider.inputs.lib.mq5" // // Include Provider Class ... @@ -26,136 +26,136 @@ // // Signallers ... -input group "XAU5 Signallers"; +input group "XEU5 Signallers"; // // XTD ... -input group "XAU5 XTD Signaller"; -input bool xAU5XTDEnableSignaller = true; // Enable Signaller -input bool xAU5XTDAllowLongSignals = true; // Enable Long Signals -input bool xAU5XTDAllowShortSignals = true; // Enable Short Signals +input group "XEU5 XTD Signaller"; +input bool xEU5XTDEnableSignaller = true; // Enable Signaller +input bool xEU5XTDAllowLongSignals = true; // Enable Long Signals +input bool xEU5XTDAllowShortSignals = true; // Enable Short Signals // // XTAM ... -input group "XAU5 XTAM Signaller"; -input bool xAU5XTAMEnableSignaller = true; // Enable Signaller -input bool xAU5XTAMAllowLongSignals = true; // Enable Long Signals -input bool xAU5XTAMAllowShortSignals = true; // Enable Short Signals +input group "XEU5 XTAM Signaller"; +input bool xEU5XTAMEnableSignaller = true; // Enable Signaller +input bool xEU5XTAMAllowLongSignals = true; // Enable Long Signals +input bool xEU5XTAMAllowShortSignals = true; // Enable Short Signals // // XSI ... -input group "XAU5 XSI Signaller"; -input bool xAU5XSIEnableSignaller = true; // Enable Signaller -input bool xAU5XSIAllowLongSignals = true; // Enable Long Signals -input bool xAU5XSIAllowShortSignals = true; // Enable Short Signals +input group "XEU5 XSI Signaller"; +input bool xEU5XSIEnableSignaller = true; // Enable Signaller +input bool xEU5XSIAllowLongSignals = true; // Enable Long Signals +input bool xEU5XSIAllowShortSignals = true; // Enable Short Signals // // XTSFI ... -input group "XAU5 XTSFI Signaller"; -input bool xAU5XTSFIEnableSignaller = true; // Enable Signaller -input bool xAU5XTSFIAllowLongSignals = true; // Enable Long Signals -input bool xAU5XTSFIAllowShortSignals = true; // Enable Short Signals +input group "XEU5 XTSFI Signaller"; +input bool xEU5XTSFIEnableSignaller = true; // Enable Signaller +input bool xEU5XTSFIAllowLongSignals = true; // Enable Long Signals +input bool xEU5XTSFIAllowShortSignals = true; // Enable Short Signals // // XOBDLH ... -// input group "XAU5 XOBDLH Signaller"; -// input bool xAU5XOBDLHEnableSignaller = true; // Enable Signaller -// input bool xAU5XOBDLHAllowLongSignals = true; // Enable Long Signals -// input bool xAU5XOBDLHAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XOBDLH Signaller"; +// input bool xEU5XOBDLHEnableSignaller = true; // Enable Signaller +// input bool xEU5XOBDLHAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XOBDLHAllowShortSignals = true; // Enable Short Signals // // XCHMACC ... -input group "XAU5 XCHMACC Signaller"; -input bool xAU5XCHMACCEnableSignaller = true; // Enable Signaller -input bool xAU5XCHMACCAllowLongSignals = true; // Enable Long Signals -input bool xAU5XCHMACCAllowShortSignals = true; // Enable Short Signals +input group "XEU5 XCHMACC Signaller"; +input bool xEU5XCHMACCEnableSignaller = true; // Enable Signaller +input bool xEU5XCHMACCAllowLongSignals = true; // Enable Long Signals +input bool xEU5XCHMACCAllowShortSignals = true; // Enable Short Signals // // XCHMAMX ... -// input group "XAU5 XCHMAMX Signaller"; -// input bool xAU5XCHMAMXEnableSignaller = true; // Enable Signaller -// input bool xAU5XCHMAMXAllowLongSignals = true; // Enable Long Signals -// input bool xAU5XCHMAMXAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XCHMAMX Signaller"; +// input bool xEU5XCHMAMXEnableSignaller = true; // Enable Signaller +// input bool xEU5XCHMAMXAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XCHMAMXAllowShortSignals = true; // Enable Short Signals // // XCHMAMN ... -// input group "XAU5 XCHMAMN Signaller"; -// input bool xAU5XCHMAMNEnableSignaller = true; // Enable Signaller -// input bool xAU5XCHMAMNAllowLongSignals = true; // Enable Long Signals -// input bool xAU5XCHMAMNAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XCHMAMN Signaller"; +// input bool xEU5XCHMAMNEnableSignaller = true; // Enable Signaller +// input bool xEU5XCHMAMNAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XCHMAMNAllowShortSignals = true; // Enable Short Signals // // Check in Test Mode or not ... -bool xAU5IsTestMode = false; +bool xEU5IsTestMode = false; // // Detect max Input Length of Indicators ... -int xAU5MaxLengthOfInputs = 0; +int xEU5MaxLengthOfInputs = 0; // // Detect Calculated Bars ... -int xAU5CalculatedBars = 0; +int xEU5CalculatedBars = 0; // // Check prevent Double Signalling on Same Candle ... -bool xAU5WaitUntilNextCandle = false; +bool xEU5WaitUntilNextCandle = false; // // Signaller Variables ... // // XTD ... -bool xAU5MXTDEnableSignaller = xAU5XTDEnableSignaller; -bool xAU5MXTDAllowLongSignals = xAU5XTDAllowLongSignals; -bool xAU5MXTDAllowShortSignals = xAU5XTDAllowShortSignals; +bool xEU5MXTDEnableSignaller = xEU5XTDEnableSignaller; +bool xEU5MXTDAllowLongSignals = xEU5XTDAllowLongSignals; +bool xEU5MXTDAllowShortSignals = xEU5XTDAllowShortSignals; // // XTAM ... -bool xAU5MXTAMEnableSignaller = xAU5XTAMEnableSignaller; -bool xAU5MXTAMAllowLongSignals = xAU5XTAMAllowLongSignals; -bool xAU5MXTAMAllowShortSignals = xAU5XTAMAllowShortSignals; +bool xEU5MXTAMEnableSignaller = xEU5XTAMEnableSignaller; +bool xEU5MXTAMAllowLongSignals = xEU5XTAMAllowLongSignals; +bool xEU5MXTAMAllowShortSignals = xEU5XTAMAllowShortSignals; // // XSI ... -bool xAU5MXSIEnableSignaller = xAU5XSIEnableSignaller; -bool xAU5MXSIAllowLongSignals = xAU5XSIAllowLongSignals; -bool xAU5MXSIAllowShortSignals = xAU5XSIAllowShortSignals; +bool xEU5MXSIEnableSignaller = xEU5XSIEnableSignaller; +bool xEU5MXSIAllowLongSignals = xEU5XSIAllowLongSignals; +bool xEU5MXSIAllowShortSignals = xEU5XSIAllowShortSignals; // // XTSFI ... -bool xAU5MXTSFIEnableSignaller = xAU5XTSFIEnableSignaller; -bool xAU5MXTSFIAllowLongSignals = xAU5XTSFIAllowLongSignals; -bool xAU5MXTSFIAllowShortSignals = xAU5XTSFIAllowShortSignals; +bool xEU5MXTSFIEnableSignaller = xEU5XTSFIEnableSignaller; +bool xEU5MXTSFIAllowLongSignals = xEU5XTSFIAllowLongSignals; +bool xEU5MXTSFIAllowShortSignals = xEU5XTSFIAllowShortSignals; // // XOBDLH ... -bool xAU5MXOBDLHEnableSignaller = false; //xAU5XOBDLHEnableSignaller; -bool xAU5MXOBDLHAllowLongSignals = false; //xAU5XOBDLHAllowLongSignals; -bool xAU5MXOBDLHAllowShortSignals = false; //xAU5XOBDLHAllowShortSignals; +bool xEU5MXOBDLHEnableSignaller = false; // xEU5XOBDLHEnableSignaller; +bool xEU5MXOBDLHAllowLongSignals = false; // xEU5XOBDLHAllowLongSignals; +bool xEU5MXOBDLHAllowShortSignals = false; // xEU5XOBDLHAllowShortSignals; // // XCHMACC ... -bool xAU5MXCHMACCEnableSignaller = xAU5XCHMACCEnableSignaller; -bool xAU5MXCHMACCAllowLongSignals = xAU5XCHMACCAllowLongSignals; -bool xAU5MXCHMACCAllowShortSignals = xAU5XCHMACCAllowShortSignals; +bool xEU5MXCHMACCEnableSignaller = xEU5XCHMACCEnableSignaller; +bool xEU5MXCHMACCAllowLongSignals = xEU5XCHMACCAllowLongSignals; +bool xEU5MXCHMACCAllowShortSignals = xEU5XCHMACCAllowShortSignals; // // XCHMAMX ... -bool xAU5MXCHMAMXEnableSignaller = false; // xAU5XCHMAMXEnableSignaller; -bool xAU5MXCHMAMXAllowLongSignals = false; // xAU5XCHMAMXAllowLongSignals; -bool xAU5MXCHMAMXAllowShortSignals = false; // xAU5XCHMAMXAllowShortSignals; +bool xEU5MXCHMAMXEnableSignaller = false; // xEU5XCHMAMXEnableSignaller; +bool xEU5MXCHMAMXAllowLongSignals = false; // xEU5XCHMAMXAllowLongSignals; +bool xEU5MXCHMAMXAllowShortSignals = false; // xEU5XCHMAMXAllowShortSignals; // // XCHMAMN ... -bool xAU5MXCHMAMNEnableSignaller = false; // xAU5XCHMAMNEnableSignaller; -bool xAU5MXCHMAMNAllowLongSignals = false; // xAU5XCHMAMNAllowLongSignals; -bool xAU5MXCHMAMNAllowShortSignals = false; // xAU5XCHMAMNAllowShortSignals; +bool xEU5MXCHMAMNEnableSignaller = false; // xEU5XCHMAMNEnableSignaller; +bool xEU5MXCHMAMNAllowLongSignals = false; // xEU5XCHMAMNAllowLongSignals; +bool xEU5MXCHMAMNAllowShortSignals = false; // xEU5XCHMAMNAllowShortSignals; // -XCProvider *xAU5Provider; +XCProvider *xEU5Provider; // // Validate Indicators Inputs ... -bool XAU5ValidateIndicatorsInputs() +bool XEU5ValidateIndicatorsInputs() { // bool result = false; @@ -242,7 +242,7 @@ bool XAU5ValidateIndicatorsInputs() // // Make an Instance Of XCProvider Class for Use ... - xAU5Provider = new XCProvider( + xEU5Provider = new XCProvider( // // Commons ... _Symbol, @@ -251,44 +251,44 @@ bool XAU5ValidateIndicatorsInputs() // Signallers ... // // XTD ... - xAU5MXTDEnableSignaller, - xAU5MXTDAllowLongSignals, - xAU5MXTDAllowShortSignals, + xEU5MXTDEnableSignaller, + xEU5MXTDAllowLongSignals, + xEU5MXTDAllowShortSignals, // // XTAM ... - xAU5MXTAMEnableSignaller, - xAU5MXTAMAllowLongSignals, - xAU5MXTAMAllowShortSignals, + xEU5MXTAMEnableSignaller, + xEU5MXTAMAllowLongSignals, + xEU5MXTAMAllowShortSignals, // // XSI ... - xAU5MXSIEnableSignaller, - xAU5MXSIAllowLongSignals, - xAU5MXSIAllowShortSignals, + xEU5MXSIEnableSignaller, + xEU5MXSIAllowLongSignals, + xEU5MXSIAllowShortSignals, // // XTSFI ... - xAU5MXTSFIEnableSignaller, - xAU5MXTSFIAllowLongSignals, - xAU5MXTSFIAllowShortSignals, + xEU5MXTSFIEnableSignaller, + xEU5MXTSFIAllowLongSignals, + xEU5MXTSFIAllowShortSignals, // // XOBDLH ... - xAU5MXOBDLHEnableSignaller, - xAU5MXOBDLHAllowLongSignals, - xAU5MXOBDLHAllowShortSignals, + xEU5MXOBDLHEnableSignaller, + xEU5MXOBDLHAllowLongSignals, + xEU5MXOBDLHAllowShortSignals, // // XCHMACC ... - xAU5MXCHMACCEnableSignaller, - xAU5MXCHMACCAllowLongSignals, - xAU5MXCHMACCAllowShortSignals, + xEU5MXCHMACCEnableSignaller, + xEU5MXCHMACCAllowLongSignals, + xEU5MXCHMACCAllowShortSignals, // // XCHMAMX ... - xAU5MXCHMAMXEnableSignaller, - xAU5MXCHMAMXAllowLongSignals, - xAU5MXCHMAMXAllowShortSignals, + xEU5MXCHMAMXEnableSignaller, + xEU5MXCHMAMXAllowLongSignals, + xEU5MXCHMAMXAllowShortSignals, // // XCHMAMN ... - xAU5MXCHMAMNEnableSignaller, - xAU5MXCHMAMNAllowLongSignals, - xAU5MXCHMAMNAllowShortSignals + xEU5MXCHMAMNEnableSignaller, + xEU5MXCHMAMNAllowLongSignals, + xEU5MXCHMAMNAllowShortSignals // ); @@ -301,14 +301,14 @@ bool XAU5ValidateIndicatorsInputs() // // Init Indicators ... -bool XAU5InitIndicators() +bool XEU5InitIndicators() { // bool result = false; // // Make it Enable when we need to Log Market Conditions ... - xAU5IsTestMode = IsRunningOnTestMode(); + xEU5IsTestMode = IsRunningOnTestMode(); // // Check and Calculate Max Length in Inputs ... @@ -316,88 +316,88 @@ bool XAU5InitIndicators() // // XTM ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xTMMaPeriod, - xAU5NumberOfItemsPerTick); + xEU5NumberOfItemsPerTick); // // XAMA ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xAMALength, - xAU5NumberOfItemsPerTick); - xAU5MaxLengthOfInputs = MathMax( + xEU5NumberOfItemsPerTick); + xEU5MaxLengthOfInputs = MathMax( xAMAFastEMA, - xAU5NumberOfItemsPerTick); - xAU5MaxLengthOfInputs = MathMax( + xEU5NumberOfItemsPerTick); + xEU5MaxLengthOfInputs = MathMax( xAMASlowEMA, - xAU5NumberOfItemsPerTick); + xEU5NumberOfItemsPerTick); // // XLH ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xLHLength, - xAU5NumberOfItemsPerTick); + xEU5NumberOfItemsPerTick); // // XTD ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xTDLength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // XFI ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xFILength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // XRSI ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xRSILength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // XOBD ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xOBDLength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // XCHLH ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xCHLHLcLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHLHMcLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHLHScLength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // XCHMA ... - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs = MathMax( xCHMAScFastLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHMAScSlowLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHMAMcFastLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHMAMcSlowLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHMALcFastLength, - xAU5MaxLengthOfInputs); - xAU5MaxLengthOfInputs = MathMax( + xEU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs = MathMax( xCHMALcSlowLength, - xAU5MaxLengthOfInputs); + xEU5MaxLengthOfInputs); // // Validate Indicators Inputs before Initialization ... - result = XAU5ValidateIndicatorsInputs(); + result = XEU5ValidateIndicatorsInputs(); if (!result) { return result; @@ -409,58 +409,58 @@ bool XAU5InitIndicators() // // XTD ... bool isXTDEnable = - xAU5XTDEnableSignaller && - (xAU5XTDAllowLongSignals || - xAU5XTDAllowShortSignals); + xEU5XTDEnableSignaller && + (xEU5XTDAllowLongSignals || + xEU5XTDAllowShortSignals); // // XTAM ... bool isXTAMEnable = - xAU5XTAMEnableSignaller && - (xAU5XTAMAllowLongSignals || - xAU5XTAMAllowShortSignals); + xEU5XTAMEnableSignaller && + (xEU5XTAMAllowLongSignals || + xEU5XTAMAllowShortSignals); // // XSI ... bool isXSIEnable = - xAU5XSIEnableSignaller && - (xAU5XSIAllowLongSignals || - xAU5XSIAllowShortSignals); + xEU5XSIEnableSignaller && + (xEU5XSIAllowLongSignals || + xEU5XSIAllowShortSignals); // // XTSFI ... bool isXTSFIEnable = - xAU5XTSFIEnableSignaller && - (xAU5XTSFIAllowLongSignals || - xAU5XTSFIAllowShortSignals); + xEU5XTSFIEnableSignaller && + (xEU5XTSFIAllowLongSignals || + xEU5XTSFIAllowShortSignals); // // XOBDLH ... bool isXOBDLHEnable = false; - // xAU5XOBDLHEnableSignaller && - // (xAU5XOBDLHAllowLongSignals || - // xAU5XOBDLHAllowShortSignals); + // xEU5XOBDLHEnableSignaller && + // (xEU5XOBDLHAllowLongSignals || + // xEU5XOBDLHAllowShortSignals); // // XCHMACC ... bool isXCHMACCEnable = - xAU5XCHMACCEnableSignaller && - (xAU5XCHMACCAllowLongSignals || - xAU5XCHMACCAllowShortSignals); + xEU5XCHMACCEnableSignaller && + (xEU5XCHMACCAllowLongSignals || + xEU5XCHMACCAllowShortSignals); // // XCHMAMX ... bool isXCHMAMXEnable = false; - // xAU5XCHMAMXEnableSignaller && - // (xAU5XCHMAMXAllowLongSignals || - // xAU5XCHMAMXAllowShortSignals); + // xEU5XCHMAMXEnableSignaller && + // (xEU5XCHMAMXAllowLongSignals || + // xEU5XCHMAMXAllowShortSignals); // // XCHMAMN ... bool isXCHMAMNEnable = false; - // xAU5XCHMAMNEnableSignaller && - // (xAU5XCHMAMNAllowLongSignals || - // xAU5XCHMAMNAllowShortSignals); + // xEU5XCHMAMNEnableSignaller && + // (xEU5XCHMAMNAllowLongSignals || + // xEU5XCHMAMNAllowShortSignals); // bool hasSignaller = @@ -479,7 +479,7 @@ bool XAU5InitIndicators() if (!result) { // - LogMessage("XAU5 doesn't enable any Signaller ..."); + LogMessage("XEU5 doesn't enable any Signaller ..."); // return result; @@ -578,7 +578,7 @@ bool XAU5InitIndicators() // // Release Indicators ... -void XAU5ReleaseIndicators() +void XEU5ReleaseIndicators() { // // Release Handlers ... @@ -596,27 +596,27 @@ void XAU5ReleaseIndicators() // // Handle Reading Buffers ... -void XAU5HandleReadingBuffers() +void XEU5HandleReadingBuffers() { // // Reading Calculated Bars for a Simple Handler ... - xAU5CalculatedBars = BarsCalculated(xTMHandler); + xEU5CalculatedBars = BarsCalculated(xTMHandler); // // Read Indicators Buffers ... - XTMReadBuffers(xAU5NumberOfItemsPerTick); - XAMAReadBuffers(xAU5NumberOfItemsPerTick); - XLHReadBuffers(xAU5NumberOfItemsPerTick); - XTDReadBuffers(xAU5NumberOfItemsPerTick); - XFIReadBuffers(xAU5NumberOfItemsPerTick); - XTSReadBuffers(xAU5NumberOfItemsPerTick); - XRSIReadBuffers(xAU5NumberOfItemsPerTick); - XOBDReadBuffers(xAU5NumberOfItemsPerTick); - XCHMAReadBuffers(xAU5NumberOfItemsPerTick); - XCHLHReadBuffers(xAU5NumberOfItemsPerTick); + XTMReadBuffers(xEU5NumberOfItemsPerTick); + XAMAReadBuffers(xEU5NumberOfItemsPerTick); + XLHReadBuffers(xEU5NumberOfItemsPerTick); + XTDReadBuffers(xEU5NumberOfItemsPerTick); + XFIReadBuffers(xEU5NumberOfItemsPerTick); + XTSReadBuffers(xEU5NumberOfItemsPerTick); + XRSIReadBuffers(xEU5NumberOfItemsPerTick); + XOBDReadBuffers(xEU5NumberOfItemsPerTick); + XCHMAReadBuffers(xEU5NumberOfItemsPerTick); + XCHLHReadBuffers(xEU5NumberOfItemsPerTick); // - xAU5Provider.ReadConditions(); + xEU5Provider.ReadConditions(); } // @@ -629,7 +629,7 @@ void XAU5HandleReadingBuffers() // Can Open Long Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Long Signals ... -bool XAU5CanOpenLongTrade( +bool XEU5CanOpenLongTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -644,7 +644,7 @@ bool XAU5CanOpenLongTrade( 0); // - bool hasSignal = XAU5HasLongSignal(info); + bool hasSignal = XEU5HasLongSignal(info); // result = @@ -656,7 +656,7 @@ bool XAU5CanOpenLongTrade( // if (result) { - xAU5Provider.ClearConditions(); + xEU5Provider.ClearConditions(); } // @@ -667,7 +667,7 @@ bool XAU5CanOpenLongTrade( // Can Close Long Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Long Signals ... -bool XAU5CanCloseLongTrade() +bool XEU5CanCloseLongTrade() { // bool result = false; @@ -680,7 +680,7 @@ bool XAU5CanCloseLongTrade() // Can Open Short Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Short Signals ... -bool XAU5CanOpenShortTrade( +bool XEU5CanOpenShortTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -695,7 +695,7 @@ bool XAU5CanOpenShortTrade( 0); // - bool hasSignal = XAU5HasShortSignal(info); + bool hasSignal = XEU5HasShortSignal(info); // result = @@ -707,7 +707,7 @@ bool XAU5CanOpenShortTrade( // if (result) { - xAU5Provider.ClearConditions(); + xEU5Provider.ClearConditions(); } // @@ -718,7 +718,7 @@ bool XAU5CanOpenShortTrade( // Can Close Short Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Short Signals ... -bool XAU5CanCloseShortTrade() +bool XEU5CanCloseShortTrade() { // bool result = false; @@ -741,7 +741,7 @@ bool XAU5CanCloseShortTrade() // // Check Market Conditions by Combination of Power of All tools for LONGs ... -bool XAU5HasLongSignal( +bool XEU5HasLongSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -750,7 +750,7 @@ bool XAU5HasLongSignal( // // XTD ... - bool isXTDHasSignal = XAU5XTDHasLongSignal(); + bool isXTDHasSignal = XEU5XTDHasLongSignal(); if (isXTDHasSignal) { // @@ -761,7 +761,7 @@ bool XAU5HasLongSignal( // // XTAM ... - bool isXTAMHasSignal = XAU5XTAMHasLongSignal(); + bool isXTAMHasSignal = XEU5XTAMHasLongSignal(); if (isXTAMHasSignal) { // @@ -772,7 +772,7 @@ bool XAU5HasLongSignal( // // XSI ... - bool isXSIHasSignal = XAU5XSIHasLongSignal(); + bool isXSIHasSignal = XEU5XSIHasLongSignal(); if (isXSIHasSignal) { // @@ -783,7 +783,7 @@ bool XAU5HasLongSignal( // // XTSFI ... - bool isXTSFIHasSignal = XAU5XTSFIHasLongSignal(); + bool isXTSFIHasSignal = XEU5XTSFIHasLongSignal(); if (isXTSFIHasSignal) { // @@ -794,7 +794,7 @@ bool XAU5HasLongSignal( // // XOBD XLH ... - bool isXOBDLHHasSignal = XAU5XOBDLHHasLongSignal(); + bool isXOBDLHHasSignal = XEU5XOBDLHHasLongSignal(); if (isXOBDLHHasSignal) { // @@ -805,7 +805,7 @@ bool XAU5HasLongSignal( // // XCHMA Cycles Cross ... - bool isXCHMACCHasSignal = XAU5XCHMACCHasLongSignal(); + bool isXCHMACCHasSignal = XEU5XCHMACCHasLongSignal(); if (isXCHMACCHasSignal) { // @@ -816,7 +816,7 @@ bool XAU5HasLongSignal( // // XCHMA Cycles Min ... - bool isXCHMAMNHasSignal = XAU5XCHMAMNHasLongSignal(); + bool isXCHMAMNHasSignal = XEU5XCHMAMNHasLongSignal(); if (isXCHMAMNHasSignal) { // @@ -827,7 +827,7 @@ bool XAU5HasLongSignal( // // XCHMA Cycles Max - bool isXCHMAMXHasSignal = XAU5XCHMAMXHasLongSignal(); + bool isXCHMAMXHasSignal = XEU5XCHMAMXHasLongSignal(); if (isXCHMAMXHasSignal) { // @@ -876,11 +876,11 @@ bool XAU5HasLongSignal( { // // Only Log Signals Time Market Conditions if is in Testing Mode ... - if (xAU5IsTestMode || xAU5EnableSignalAlerts) + if (xEU5IsTestMode || xEU5EnableSignalAlerts) { // - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); - string message = xAU5Provider.GenerateConditionsString(mConditions); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); + string message = xEU5Provider.GenerateConditionsString(mConditions); // LogMessage( @@ -897,7 +897,7 @@ bool XAU5HasLongSignal( // // Check Market Conditions by Combination of Power of All tools for SHORTs ... -bool XAU5HasShortSignal( +bool XEU5HasShortSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -906,7 +906,7 @@ bool XAU5HasShortSignal( // // XTD ... - bool isXTDHasSignal = XAU5XTDHasShortSignal(); + bool isXTDHasSignal = XEU5XTDHasShortSignal(); if (isXTDHasSignal) { // @@ -917,7 +917,7 @@ bool XAU5HasShortSignal( // // XTAM ... - bool isXTAMHasSignal = XAU5XTAMHasShortSignal(); + bool isXTAMHasSignal = XEU5XTAMHasShortSignal(); if (isXTAMHasSignal) { // @@ -928,7 +928,7 @@ bool XAU5HasShortSignal( // // XSI ... - bool isXSIHasSignal = XAU5XSIHasShortSignal(); + bool isXSIHasSignal = XEU5XSIHasShortSignal(); if (isXSIHasSignal) { // @@ -939,7 +939,7 @@ bool XAU5HasShortSignal( // // XTSFI ... - bool isXTSFIHasSignal = XAU5XTSFIHasShortSignal(); + bool isXTSFIHasSignal = XEU5XTSFIHasShortSignal(); if (isXTSFIHasSignal) { // @@ -950,7 +950,7 @@ bool XAU5HasShortSignal( // // XOBD XLH ... - bool isXOBDLHHasSignal = XAU5XOBDLHHasShortSignal(); + bool isXOBDLHHasSignal = XEU5XOBDLHHasShortSignal(); if (isXOBDLHHasSignal) { // @@ -961,7 +961,7 @@ bool XAU5HasShortSignal( // // XCHMA Cycles Cross ... - bool isXCHMACCHasSignal = XAU5XCHMACCHasShortSignal(); + bool isXCHMACCHasSignal = XEU5XCHMACCHasShortSignal(); if (isXCHMACCHasSignal) { // @@ -972,7 +972,7 @@ bool XAU5HasShortSignal( // // XCHMA Cycles Min ... - bool isXCHMAMNHasSignal = XAU5XCHMAMNHasShortSignal(); + bool isXCHMAMNHasSignal = XEU5XCHMAMNHasShortSignal(); if (isXCHMAMNHasSignal) { // @@ -983,7 +983,7 @@ bool XAU5HasShortSignal( // // XCHMA Cycles Max - bool isXCHMAMXHasSignal = XAU5XCHMAMXHasShortSignal(); + bool isXCHMAMXHasSignal = XEU5XCHMAMXHasShortSignal(); if (isXCHMAMXHasSignal) { // @@ -1032,11 +1032,11 @@ bool XAU5HasShortSignal( { // // Only Log Signals Time Market Conditions if is in Testing Mode ... - if (xAU5IsTestMode || xAU5EnableSignalAlerts) + if (xEU5IsTestMode || xEU5EnableSignalAlerts) { // - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); - string message = xAU5Provider.GenerateConditionsString(mConditions); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); + string message = xEU5Provider.GenerateConditionsString(mConditions); // LogMessage( @@ -1063,438 +1063,438 @@ bool XAU5HasShortSignal( // // Disbale All Signallers Longs ... -void XAU5DisableLongSignallers() +void XEU5DisableLongSignallers() { // // XTD ... - if (xAU5MXTDEnableSignaller) + if (xEU5MXTDEnableSignaller) { // - xAU5Provider.DisbaleXTDLongs(); - xAU5MXTDAllowLongSignals = false; + xEU5Provider.DisbaleXTDLongs(); + xEU5MXTDAllowLongSignals = false; } // // XTAM ... - if (xAU5MXTAMEnableSignaller) + if (xEU5MXTAMEnableSignaller) { // - xAU5Provider.DisbaleXTAMLongs(); - xAU5MXTAMAllowLongSignals = false; + xEU5Provider.DisbaleXTAMLongs(); + xEU5MXTAMAllowLongSignals = false; } // // XSI ... - if (xAU5MXSIEnableSignaller) + if (xEU5MXSIEnableSignaller) { // - xAU5Provider.DisbaleXSILongs(); - xAU5MXSIAllowLongSignals = false; + xEU5Provider.DisbaleXSILongs(); + xEU5MXSIAllowLongSignals = false; } // // XTSFI ... - if (xAU5MXTSFIEnableSignaller) + if (xEU5MXTSFIEnableSignaller) { // - xAU5Provider.DisbaleXTSFILongs(); - xAU5MXTSFIAllowLongSignals = false; + xEU5Provider.DisbaleXTSFILongs(); + xEU5MXTSFIAllowLongSignals = false; } // // XOBDLH ... - // if (xAU5MXOBDLHEnableSignaller) + // if (xEU5MXOBDLHEnableSignaller) // { // // - // xAU5Provider.DisbaleXOBDLHLongs(); - // xAU5MXOBDLHAllowLongSignals = false; + // xEU5Provider.DisbaleXOBDLHLongs(); + // xEU5MXOBDLHAllowLongSignals = false; // } // // XCHMACC ... - if (xAU5MXCHMACCEnableSignaller) + if (xEU5MXCHMACCEnableSignaller) { // - xAU5Provider.DisbaleXCHMACCLongs(); - xAU5MXCHMACCAllowLongSignals = false; + xEU5Provider.DisbaleXCHMACCLongs(); + xEU5MXCHMACCAllowLongSignals = false; } // // XCHMAMX ... - // if (xAU5MXCHMAMXEnableSignaller) + // if (xEU5MXCHMAMXEnableSignaller) // { // // - // xAU5Provider.DisbaleXCHMAMXLongs(); - // xAU5MXCHMAMXAllowLongSignals = false; + // xEU5Provider.DisbaleXCHMAMXLongs(); + // xEU5MXCHMAMXAllowLongSignals = false; // } // // XCHMAMN ... - // if (xAU5MXCHMAMNEnableSignaller) + // if (xEU5MXCHMAMNEnableSignaller) // { // // - // xAU5Provider.DisbaleXCHMAMNLongs(); - // xAU5MXCHMAMNAllowLongSignals = false; + // xEU5Provider.DisbaleXCHMAMNLongs(); + // xEU5MXCHMAMNAllowLongSignals = false; // } } // // Enable All Signallers Longs ... // Only if they are Configured as Enable at Settings ... -void XAU5EnableLongSignallers() +void XEU5EnableLongSignallers() { // // XTD ... - if (xAU5MXTDEnableSignaller) + if (xEU5MXTDEnableSignaller) { // - xAU5MXTDAllowLongSignals = - xAU5XTDAllowLongSignals + xEU5MXTDAllowLongSignals = + xEU5XTDAllowLongSignals ? true - : xAU5MXTDAllowLongSignals; + : xEU5MXTDAllowLongSignals; // - if (xAU5MXTDAllowLongSignals) + if (xEU5MXTDAllowLongSignals) { - xAU5Provider.EnableXTDLongs(); + xEU5Provider.EnableXTDLongs(); } } // // XTAM ... - if (xAU5MXTAMEnableSignaller) + if (xEU5MXTAMEnableSignaller) { // - xAU5MXTAMAllowLongSignals = - xAU5XTAMAllowLongSignals + xEU5MXTAMAllowLongSignals = + xEU5XTAMAllowLongSignals ? true - : xAU5MXTAMAllowLongSignals; + : xEU5MXTAMAllowLongSignals; // - if (xAU5MXTAMAllowLongSignals) + if (xEU5MXTAMAllowLongSignals) { - xAU5Provider.EnableXTAMLongs(); + xEU5Provider.EnableXTAMLongs(); } } // // XSI ... - if (xAU5MXSIEnableSignaller) + if (xEU5MXSIEnableSignaller) { // - xAU5MXSIAllowLongSignals = - xAU5XSIAllowLongSignals + xEU5MXSIAllowLongSignals = + xEU5XSIAllowLongSignals ? true - : xAU5MXSIAllowLongSignals; + : xEU5MXSIAllowLongSignals; // - if (xAU5MXSIAllowLongSignals) + if (xEU5MXSIAllowLongSignals) { - xAU5Provider.EnableXSILongs(); + xEU5Provider.EnableXSILongs(); } } // // XTSFI ... - if (xAU5MXTSFIEnableSignaller) + if (xEU5MXTSFIEnableSignaller) { // - xAU5MXTSFIAllowLongSignals = - xAU5XTSFIAllowLongSignals + xEU5MXTSFIAllowLongSignals = + xEU5XTSFIAllowLongSignals ? true - : xAU5MXTSFIAllowLongSignals; + : xEU5MXTSFIAllowLongSignals; // - if (xAU5MXTSFIAllowLongSignals) + if (xEU5MXTSFIAllowLongSignals) { - xAU5Provider.EnableXTSFILongs(); + xEU5Provider.EnableXTSFILongs(); } } // // XOBDLH ... - // if (xAU5MXOBDLHEnableSignaller) + // if (xEU5MXOBDLHEnableSignaller) // { // // - // xAU5MXOBDLHAllowLongSignals = - // xAU5XOBDLHAllowLongSignals + // xEU5MXOBDLHAllowLongSignals = + // xEU5XOBDLHAllowLongSignals // ? true - // : xAU5MXOBDLHAllowLongSignals; + // : xEU5MXOBDLHAllowLongSignals; // // - // if (xAU5MXOBDLHAllowLongSignals) + // if (xEU5MXOBDLHAllowLongSignals) // { - // xAU5Provider.EnableXOBDLHLongs(); + // xEU5Provider.EnableXOBDLHLongs(); // } // } // // XCHMACC ... - if (xAU5MXCHMACCEnableSignaller) + if (xEU5MXCHMACCEnableSignaller) { // - xAU5MXCHMACCAllowLongSignals = - xAU5XCHMACCAllowLongSignals + xEU5MXCHMACCAllowLongSignals = + xEU5XCHMACCAllowLongSignals ? true - : xAU5MXCHMACCAllowLongSignals; + : xEU5MXCHMACCAllowLongSignals; // - if (xAU5MXCHMACCAllowLongSignals) + if (xEU5MXCHMACCAllowLongSignals) { - xAU5Provider.EnableXCHMACCLongs(); + xEU5Provider.EnableXCHMACCLongs(); } } // // XCHMAMX ... - // if (xAU5MXCHMAMXEnableSignaller) + // if (xEU5MXCHMAMXEnableSignaller) // { // // - // xAU5MXCHMAMXAllowLongSignals = - // xAU5XCHMAMXAllowLongSignals + // xEU5MXCHMAMXAllowLongSignals = + // xEU5XCHMAMXAllowLongSignals // ? true - // : xAU5MXCHMAMXAllowLongSignals; + // : xEU5MXCHMAMXAllowLongSignals; // // - // if (xAU5MXCHMAMXAllowLongSignals) + // if (xEU5MXCHMAMXAllowLongSignals) // { - // xAU5Provider.EnableXCHMAMXLongs(); + // xEU5Provider.EnableXCHMAMXLongs(); // } // } // // XCHMAMN ... - // if (xAU5MXCHMAMNEnableSignaller) + // if (xEU5MXCHMAMNEnableSignaller) // { // // - // xAU5MXCHMAMNAllowLongSignals = - // xAU5XCHMAMNAllowLongSignals + // xEU5MXCHMAMNAllowLongSignals = + // xEU5XCHMAMNAllowLongSignals // ? true - // : xAU5MXCHMAMNAllowLongSignals; + // : xEU5MXCHMAMNAllowLongSignals; // // - // if (xAU5MXCHMAMNAllowLongSignals) + // if (xEU5MXCHMAMNAllowLongSignals) // { - // xAU5Provider.EnableXCHMAMNLongs(); + // xEU5Provider.EnableXCHMAMNLongs(); // } // } } // // Disable All Signallers Shorts ... -void XAU5DisableShortSignallers() +void XEU5DisableShortSignallers() { // // XTD ... - if (xAU5MXTDEnableSignaller) + if (xEU5MXTDEnableSignaller) { // - xAU5Provider.DisableXTDShorts(); - xAU5MXTDAllowShortSignals = false; + xEU5Provider.DisableXTDShorts(); + xEU5MXTDAllowShortSignals = false; } // // XTAM ... - if (xAU5MXTAMEnableSignaller) + if (xEU5MXTAMEnableSignaller) { // - xAU5Provider.DisableXTAMShorts(); - xAU5MXTAMAllowShortSignals = false; + xEU5Provider.DisableXTAMShorts(); + xEU5MXTAMAllowShortSignals = false; } // // XSI ... - if (xAU5MXSIEnableSignaller) + if (xEU5MXSIEnableSignaller) { // - xAU5Provider.DisableXSIShorts(); - xAU5MXSIAllowShortSignals = false; + xEU5Provider.DisableXSIShorts(); + xEU5MXSIAllowShortSignals = false; } // // XTSFI ... - if (xAU5MXTSFIEnableSignaller) + if (xEU5MXTSFIEnableSignaller) { // - xAU5Provider.DisableXTSFIShorts(); - xAU5MXTSFIAllowShortSignals = false; + xEU5Provider.DisableXTSFIShorts(); + xEU5MXTSFIAllowShortSignals = false; } // // XOBDLH ... - // if (xAU5MXOBDLHEnableSignaller) + // if (xEU5MXOBDLHEnableSignaller) // { // // - // xAU5Provider.DisableXOBDLHShorts(); - // xAU5MXOBDLHAllowShortSignals = false; + // xEU5Provider.DisableXOBDLHShorts(); + // xEU5MXOBDLHAllowShortSignals = false; // } // // XCHMACC ... - if (xAU5MXCHMACCEnableSignaller) + if (xEU5MXCHMACCEnableSignaller) { // - xAU5Provider.DisableXCHMACCShorts(); - xAU5MXCHMACCAllowShortSignals = false; + xEU5Provider.DisableXCHMACCShorts(); + xEU5MXCHMACCAllowShortSignals = false; } // // XCHMAMX ... - // if (xAU5MXCHMAMXEnableSignaller) + // if (xEU5MXCHMAMXEnableSignaller) // { // // - // xAU5Provider.DisableXCHMAMXShorts(); - // xAU5MXCHMAMXAllowShortSignals = false; + // xEU5Provider.DisableXCHMAMXShorts(); + // xEU5MXCHMAMXAllowShortSignals = false; // } // // XCHMAMN ... - // if (xAU5MXCHMAMNEnableSignaller) + // if (xEU5MXCHMAMNEnableSignaller) // { // // - // xAU5Provider.DisableXCHMAMNShorts(); - // xAU5MXCHMAMNAllowShortSignals = false; + // xEU5Provider.DisableXCHMAMNShorts(); + // xEU5MXCHMAMNAllowShortSignals = false; // } } // // Enable All Signallers Shorts ... // Only if they are Configured as Enable at Settings ... -void XAU5EnableShortSignallers() +void XEU5EnableShortSignallers() { // // XTD ... - if (xAU5MXTDEnableSignaller) + if (xEU5MXTDEnableSignaller) { // - xAU5MXTDAllowShortSignals = - xAU5XTDAllowShortSignals + xEU5MXTDAllowShortSignals = + xEU5XTDAllowShortSignals ? true - : xAU5MXTDAllowShortSignals; + : xEU5MXTDAllowShortSignals; // - if (xAU5MXTDAllowShortSignals) + if (xEU5MXTDAllowShortSignals) { - xAU5Provider.EnableXTDShorts(); + xEU5Provider.EnableXTDShorts(); } } // // XTAM ... - if (xAU5MXTAMEnableSignaller) + if (xEU5MXTAMEnableSignaller) { // - xAU5MXTAMAllowShortSignals = - xAU5XTAMAllowShortSignals + xEU5MXTAMAllowShortSignals = + xEU5XTAMAllowShortSignals ? true - : xAU5MXTAMAllowShortSignals; + : xEU5MXTAMAllowShortSignals; // - if (xAU5MXTAMAllowShortSignals) + if (xEU5MXTAMAllowShortSignals) { - xAU5Provider.EnableXTAMShorts(); + xEU5Provider.EnableXTAMShorts(); } } // // XSI ... - if (xAU5MXSIEnableSignaller) + if (xEU5MXSIEnableSignaller) { // - xAU5MXSIAllowShortSignals = - xAU5XSIAllowShortSignals + xEU5MXSIAllowShortSignals = + xEU5XSIAllowShortSignals ? true - : xAU5MXSIAllowShortSignals; + : xEU5MXSIAllowShortSignals; // - if (xAU5MXSIAllowShortSignals) + if (xEU5MXSIAllowShortSignals) { - xAU5Provider.EnableXSIShorts(); + xEU5Provider.EnableXSIShorts(); } } // // XTSFI ... - if (xAU5MXTSFIEnableSignaller) + if (xEU5MXTSFIEnableSignaller) { // - xAU5MXTSFIAllowShortSignals = - xAU5XTSFIAllowShortSignals + xEU5MXTSFIAllowShortSignals = + xEU5XTSFIAllowShortSignals ? true - : xAU5MXTSFIAllowShortSignals; + : xEU5MXTSFIAllowShortSignals; // - if (xAU5MXTSFIAllowShortSignals) + if (xEU5MXTSFIAllowShortSignals) { - xAU5Provider.EnableXTSFIShorts(); + xEU5Provider.EnableXTSFIShorts(); } } // // XOBDLH ... - // if (xAU5MXOBDLHEnableSignaller) + // if (xEU5MXOBDLHEnableSignaller) // { // // - // xAU5MXOBDLHAllowShortSignals = - // xAU5XOBDLHAllowShortSignals + // xEU5MXOBDLHAllowShortSignals = + // xEU5XOBDLHAllowShortSignals // ? true - // : xAU5MXOBDLHAllowShortSignals; + // : xEU5MXOBDLHAllowShortSignals; // // - // if (xAU5MXOBDLHAllowShortSignals) + // if (xEU5MXOBDLHAllowShortSignals) // { - // xAU5Provider.EnableXOBDLHShorts(); + // xEU5Provider.EnableXOBDLHShorts(); // } // } // // XCHMACC ... - if (xAU5MXCHMACCEnableSignaller) + if (xEU5MXCHMACCEnableSignaller) { // - xAU5MXCHMACCAllowShortSignals = - xAU5XCHMACCAllowShortSignals + xEU5MXCHMACCAllowShortSignals = + xEU5XCHMACCAllowShortSignals ? true - : xAU5MXCHMACCAllowShortSignals; + : xEU5MXCHMACCAllowShortSignals; // - if (xAU5MXCHMACCAllowShortSignals) + if (xEU5MXCHMACCAllowShortSignals) { - xAU5Provider.EnableXCHMACCShorts(); + xEU5Provider.EnableXCHMACCShorts(); } } // // XCHMAMX ... - // if (xAU5MXCHMAMXEnableSignaller) + // if (xEU5MXCHMAMXEnableSignaller) // { // // - // xAU5MXCHMAMXAllowShortSignals = - // xAU5XCHMAMXAllowShortSignals + // xEU5MXCHMAMXAllowShortSignals = + // xEU5XCHMAMXAllowShortSignals // ? true - // : xAU5MXCHMAMXAllowShortSignals; + // : xEU5MXCHMAMXAllowShortSignals; // // - // if (xAU5MXCHMAMXAllowShortSignals) + // if (xEU5MXCHMAMXAllowShortSignals) // { - // xAU5Provider.EnableXCHMAMXShorts(); + // xEU5Provider.EnableXCHMAMXShorts(); // } // } // // XCHMAMN ... - // if (xAU5MXCHMAMNEnableSignaller) + // if (xEU5MXCHMAMNEnableSignaller) // { // // - // xAU5MXCHMAMNAllowShortSignals = - // xAU5XCHMAMNAllowShortSignals + // xEU5MXCHMAMNAllowShortSignals = + // xEU5XCHMAMNAllowShortSignals // ? true - // : xAU5MXCHMAMNAllowShortSignals; + // : xEU5MXCHMAMNAllowShortSignals; // // - // if (xAU5MXCHMAMNAllowShortSignals) + // if (xEU5MXCHMAMNAllowShortSignals) // { - // xAU5Provider.EnableXCHMAMNShorts(); + // xEU5Provider.EnableXCHMAMNShorts(); // } // } } @@ -1505,29 +1505,29 @@ void XAU5EnableShortSignallers() // // XTD Long Signal Checking ... -bool XAU5XTDHasLongSignal() +bool XEU5XTDHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXTDEnableSignaller || - !xAU5MXTDAllowLongSignals) + if (!xEU5MXTDEnableSignaller || + !xEU5MXTDAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XTDHasLongConditions() + xEU5Provider.XTDHasLongConditions() // && // @@ -1545,62 +1545,71 @@ bool XAU5XTDHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTD Long ... - // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // - (mConditions.isXTDBearishVale && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXAMANeutural && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXAMANeutural && - mConditions.isXTMStartBullish && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentUnderFarest && + (mConditions.isXTSCurrentMin && mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedUnderFarest) + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + ((mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest) && + (mConditions.isXTSCurrentUnderMediest || + mConditions.isXTSCurrentCrossedUnderMediest) && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCLLSame) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHMASCCrossedOverMin && + mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) // || // ( - (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax) && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - (mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentCrossedOverNearest) + (mConditions.isXTMNeutural && + mConditions.isXTSCurrentMax) // || // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentOverMediest && + (mConditions.isXCHMALCVale && + mConditions.isXTSCurrentUnderNearest) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXFICrossedOverZero && mConditions.isXTDSignalCrossedOverBear) // ) @@ -1609,64 +1618,50 @@ bool XAU5XTDHasLongSignal() // || // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXTDBullOverBear && - mConditions.isXAMAStartBullish) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - ) - // - ) + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) // || // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ( + (mConditions.isXCHMAMCVale && + mConditions.isXTDBearishVale) && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) + // + || + // + (mConditions.isXLHLLIncreased && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTSCurrentUnderFarest && + (mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest)) + // + ) + // + ) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHMAMCTrendsDown) // ) // @@ -1674,8 +1669,6 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... - // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && @@ -1683,36 +1676,51 @@ bool XAU5XTDHasLongSignal() ( // (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXLHLLDecreased && - mConditions.isXCHMAMCTrendsDown && - (mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow)) + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) // || // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + ( + (mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && + ( + // + ( + // + mConditions.isXAMANeutural + // + || + // + (mConditions.isXLHLLDecreased && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBullish) + // + ) + // + ) + // + ) + // + || + // + // + ((mConditions.isXTSCurrentMax && + mConditions.isXLHHHDecreased) && ( // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) + (mConditions.isXTDBearishVale && + mConditions.isXCHLHMCLCLLSame && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) // || // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMALCPeak && - mConditions.isXAMANeutural) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTDSignalCrossedOverBear) + (mConditions.isXCHMALCVale && + mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) // ) // @@ -1720,17 +1728,833 @@ bool XAU5XTDHasLongSignal() // || // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && + (mConditions.isXTMNeutural && + mConditions.isXTMEndBullish && + mConditions.isXAMANeutural && + mConditions.isXAMAEndBullish && + mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest) && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + ) + // + ) + // + || + // + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMANeutural && + mConditions.isXAMAEndBearish && + mConditions.isXTDBearishVale && + mConditions.isXTMStartBullish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTSCurrentUnderFarest) + // + ) + // + ) + // + || + // + // Not Same LL or HH in Lenght ... + ((!mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + false + // + ) + // + ) + // + ) + // + ) + // + || + // + // Check Conditions if Price is Under Signal ... + ( + // + ((mConditions.isXLHPriceUnderSignal || + mConditions.isXLHPriceCrossedUnderSignal) && + ( + // + // Next Step is to Check LL and HH Same Style ... + // + // Check if Both LL and HH Same In Length ... + ((mConditions.isXLHLLSameInLength && + mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXCHMAMCVale && + // + ( + // + (mConditions.isXTMNeutural && + mConditions.isXTMEndBullish) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHMALCVale && + mConditions.isXTMStartBullish && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTDBearishVale && + mConditions.isXCHLHMCLCHHSame) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased) + // + || + // + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) + // + ) + // + ) + // + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) + // + ) + // + || + // + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXLHHHDecreased && + mConditions.isXFICrossedOverZero) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXAMAStartBearish && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTSCurrentUnderFarest && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + ) + // + ) + // + ) + // + ) + // + || + // + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXAMAVale && + mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && + mConditions.isXLHLLIncreased) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXFICrossedOverZero && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXLHPriceCrossedUnderSignal) + // + ) + // + ) + // + || + // + // Not Same LL or HH in Lenght ... + ((!mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTSCurrentCrossedOverFarest && + mConditions.isXTSCurrentCrossedOverNearest && + mConditions.isXTSCurrentCrossedOverMediest && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + // Check Conditions if Price is Over Signal ... + ( + // + ((mConditions.isXLHPriceOverSignal || + mConditions.isXLHPriceCrossedOverSignal) && + ( + // + // Next Step is to Check LL and HH Same Style ... + // + // Check if Both LL and HH Same In Length ... + ((mConditions.isXLHLLSameInLength && + mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXLHHHIncreased && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderMediest && + mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXCHMASCTrendsUp && + (mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow))) + // + || + // + (mConditions.isXTDSignalCrossedOverBear && + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow))) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderNearest) + // + || + // + (mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderNearest) + // + ) + // + ) + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXTDBearishVale && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) + // + || + // + ((mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDSignalCrossedOverBear) && + ( + // + ( + // + mConditions.isXCHMASCCrossedOverMax + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) + // + ) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXCHMASCCrossedOverMax && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) + // + || + // + ((mConditions.isXTMNeutural && + mConditions.isXAMANeutural) && + ( + // + ( + // + (mConditions.isXTSCurrentUnderFarest || + mConditions.isXTSCurrentUnderMediest) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && + mConditions.isXTDSignalCrossedOverBear) + // + ) && + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && + ( + // + mConditions.isXRSICrossedOverLongExit + // + || + // + (mConditions.isXTSAllSame && + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXAMAStartBullish) + // + || + // + ((mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest) && + (mConditions.isXTSCurrentUnderMediest || + mConditions.isXTSCurrentCrossedUnderMediest)) + // + ) + // + ) + // + ) + // + ) + // + || + // + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXTSCurrentMax || + mConditions.isXTSCurrentUnderFarest) && + mConditions.isXTDBearishVale && + mConditions.isXLHLLDecreased && + mConditions.isXLHPriceCrossedOverSignal && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + ((mConditions.isXCHLHSCMCHHSame && + mConditions.isXTDSignalCrossedOverBear) && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXLHHighAttachedHH) + // + || + // + (mConditions.isXCHLHMCLCLLSame && + ( + // + (mConditions.isXCHMASCCrossedOverMin && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXCHMASCCrossedOverMax && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + ) + // + ) + // + || + // + (((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) || + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && + // + ( + // + ((mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest) && + (mConditions.isXTSCurrentUnderMediest || + mConditions.isXTSCurrentCrossedUnderMediest)) + // + ) + // + ) + // + ) + // + ) + // + || + // + (( + // + (mConditions.isXFICrossedOverZero && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest) + // + ) && + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow))) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXCHLHSameHHs && + mConditions.isXTSCurrentMax && + mConditions.isXCHMASCCrossedOverMax && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXTDBearishVale && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBullish) + // + ) + // + ) + // + || + // + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXTDBearishVale && + mConditions.isXCHLHMCLCHHSame && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXTMEndBullish && + mConditions.isXTDBearishVale && + mConditions.isXFICrossedOverZero && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + ) + // + ) + // + || + // + // Not Same LL or HH in Lenght ... + ((!mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXTSCurrentMax && + mConditions.isXTDSignalCrossedOverBear) && + ( + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) + // + || + // + (mConditions.isXAMAEndBullish && + mConditions.isXCHLHSCMCLLSame && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + // Check Conditions if Price is not has clear state ... + ( + // + ((!mConditions.isXLHPriceOverSignal && + !mConditions.isXLHPriceUnderSignal && + !mConditions.isXLHPriceInSignalRange && + !mConditions.isXLHPriceCrossedOverSignal && + !mConditions.isXLHPriceCrossedUnderSignal) && + ( + // + // Next Step is to Check LL and HH Same Style ... + // + // Check if Both LL and HH Same In Length ... + ((mConditions.isXLHLLSameInLength && + mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + ) + // + ) + // + || + // + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) + // + ) + // + || + // + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + false + // + ) + // + ) + // + || + // + // Not Same LL or HH in Lenght ... + ((!mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + false + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ; + + // + return result; +} + +// +// XTD Short Signal Checking ... +bool XEU5XTDHasShortSignal() +{ + // + bool result = false; + + // + // Validate Args ... + if (!xEU5MXTDEnableSignaller || + !xEU5MXTDAllowShortSignals) + { + return result; + } + + // + // Retrieve Market Condition ... + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); + + // + // Start Analysing Market based On Conditions ... + result = + // + // Base Condition: + xEU5Provider.XTDHasShortConditions() + // + && + // + // Exceptions: + // there some commonly Exceptions which makes our choice incorrect, + // here we are combined knownly Exceptions ... + !( + // + // for Exception we used XLH Conditions as follow ... + // + // Check Conditions if Price In Signal Range ... + (mConditions.isXLHPriceInSignalRange && + // + ( + // + // Next Step is to Check LL and HH Same Style ... + // + // PriceInSignalRange ... + // Check if Both LL and HH Same In Length ... + ((mConditions.isXLHLLSameInLength && + mConditions.isXLHHHSameInLength) && + // + ( + // + (mConditions.isXTDBullOverBear && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXLHHHDecreased && - mConditions.isXTDSignalCrossedOverBear) + (mConditions.isXTDBullOverBear && + ( + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) // ) // @@ -1742,7 +2566,6 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -1750,18 +2573,48 @@ bool XAU5XTDHasLongSignal() // ( // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXFIOverZero && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalCrossedOverBear) + (mConditions.isXFIOverZero && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear) + // + || + // + ((mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + ((mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish) && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXCHLHSameLLs && + mConditions.isXCHMAMCTrendsUp && + mConditions.isXLHLowAttachedLL) // ) // @@ -1773,7 +2626,6 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -1802,7 +2654,6 @@ bool XAU5XTDHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTD Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -1810,170 +2661,34 @@ bool XAU5XTDHasLongSignal() // ( // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullOverBear) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTDBearishVale && + (mConditions.isXTDBullOverBear && ( // (mConditions.isXTMNeutural && - mConditions.isXLHPriceCrossedUnderSignal) + mConditions.isXAMANeutural) // || // - (mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXTSCurrentUnderFarest) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMALCVale && - mConditions.isXLHLLIncreased) + (mConditions.isXCHMASCTrendsUp && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish) // ) // ) // - || - // - // Check if LC Fast Over Slow .. - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - ) - // - ) - // - ) - // - ) - // - || - // - // Check if LC Fast Over Slow .. - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXCHLHMCLCHHSame && - mConditions.isXAMAStartBullish && - mConditions.isXTSCurrentUnderFarest) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXTSCurrentMax && - mConditions.isXAMAStartBullish && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTDSignalCrossedOverBear) - // - ) - // - ) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalCrossedOverBear) - // - ) - // - ) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp) - // - || - // - (mConditions.isXAMABearish && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderNearest) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTMStartBullish && - mConditions.isXTDSignalCrossedOverBear) - // ) // ) @@ -1984,7 +2699,6 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -1992,60 +2706,7 @@ bool XAU5XTDHasLongSignal() // ( // - (mConditions.isXAMAVale && - mConditions.isXAMABearish && - mConditions.isXTSCurrentMax && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMALCVale) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - ) - // - ) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - ) - // - ) + false // ) // @@ -2053,7 +2714,6 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -2061,16 +2721,16 @@ bool XAU5XTDHasLongSignal() // ( // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXAMANeutural && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTDSignalCrossedOverBear) + mConditions.isXCHMASCTrendsUp + // + || + // + (mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverNearest) // ) // @@ -2082,14 +2742,16 @@ bool XAU5XTDHasLongSignal() // || // - // XTD Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -2110,11 +2772,6 @@ bool XAU5XTDHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - mConditions.isXRSICrossedOverLongExit - // - || - // - // XTD Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -2122,632 +2779,15 @@ bool XAU5XTDHasLongSignal() // ( // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + ((mConditions.isXCHMALCTrendsDown && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && ( - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTDBearishVale && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderNearest) - // - ) - // - ) - // - || - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTDBearishVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - ((mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) && - ( - // - (mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXCHMASCCrossedOverMax) - // - || - // - (mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - ((mConditions.isXTSCurrentUnderNearest || - mConditions.isXTSCurrentCrossedUnderNearest) && - (mConditions.isXTSCurrentUnderMediest || - mConditions.isXTSCurrentCrossedUnderMediest)) - // - || - // - ((mConditions.isXLHLLIncreased && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXLHPriceCrossedOverSignal) && - ( - // - mConditions.isXTSCurrentCrossedUnderFarest - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTDBearishVale && - mConditions.isXTSCurrentUnderNearest) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHMASCCrossedOverMin && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLDecreased && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedUnderFarest && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - ((mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale) && - ( - // - (mConditions.isXFIUnderZero && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTSCurrentUnderNearest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXFICrossedOverZero && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - ((mConditions.isXTDBearishVale && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame) && - ( - // - mConditions.isXTSCurrentMax - // - || - // - mConditions.isXTSCurrentUnderFarest - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Long ... - // PriceOverSignal ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXCHMASCOverMax && - mConditions.isXTSCurrentUnderNearest) - // - || - // - ((mConditions.isXTSCurrentMax && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalCrossedOverBear) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXCHMASCOverMax && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMASCOverMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHSameHHs && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalCrossedOverBear) && - ( - // - (mConditions.isXTSAllSame && - mConditions.isXLHHHIncreased) - // - || - // - (mConditions.isXTSCurrentMax && - ( - // - mConditions.isXLHHighAttachedHH - // - || - // - (mConditions.isXLHHHIncreased && - mConditions.isXCHMASCOverMax) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - (mConditions.isXAMAEndBullish && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsUp) - // - ) - // - ) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - (mConditions.isXCHMALCVale && - mConditions.isXTMStartBullish && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXAMAStartBullish && - mConditions.isXLHHighAttachedHH && - mConditions.isXFICrossedOverZero) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXCHMAMCPeak && - mConditions.isXAMABullish && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax) && - ( - // - (mConditions.isXFIOverZero && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHSCMCHHSame) - // - || - // - (mConditions.isXTDSignalCrossedOverBear && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSCMCHHSame) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXCHLHSCMCLLSame) - // - ) - // - ) - // - || - // - ((mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalCrossedOverBear) && - ( - // - mConditions.isXCHLHMCLCLLSame - // - || - // - (mConditions.isXCHMAMCPeak && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTDBullOverBear) - // - || - // - (mConditions.isXCHMASCOverMin && - mConditions.isXCHMASCUnderMax && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXCHMASCOverMax && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXTMEndBullish && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentCrossedUnderFarest) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) && - ( - // - (mConditions.isXTDBullOverBear && - mConditions.isXFICrossedOverZero && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Long ... - // PriceOverSignal ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXTDSignalCrossedOverBear) - // - || // (mConditions.isXTMNeutural && - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalCrossedOverBear) && - ( - // - (mConditions.isXCHMASCCrossedOverMin && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - (mConditions.isXCHMAMCPeak && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXCHLHSCMCHHSame) - // - || - // - (mConditions.isXCHMALCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Long ... - // PriceOverSignal ... - // Not Same LL or HH in Lenght ... - ((!mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMax && - mConditions.isXLHHighAttachedHH && - (mConditions.isXTDBullOverBear || - mConditions.isXTDSignalCrossedOverBear)) + mConditions.isXTDBullOverBear && + (mConditions.isXAMANeutural || + mConditions.isXTSCurrentOverFarest)) // ) // @@ -2755,54 +2795,22 @@ bool XAU5XTDHasLongSignal() // || // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax) && - ( - // - (mConditions.isXLHHighAttachedHH && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSameHHs) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalCrossedOverBear) - // - ) - // - ) + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXCHMALCTrendsUp && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) // ) // @@ -2812,336 +2820,29 @@ bool XAU5XTDHasLongSignal() // ) // - ) - // - ) - // - ) - // - || - // - // Check Conditions if Price is not has clear state ... - ( - // - ((!mConditions.isXLHPriceOverSignal && - !mConditions.isXLHPriceUnderSignal && - !mConditions.isXLHPriceInSignalRange && - !mConditions.isXLHPriceCrossedOverSignal && - !mConditions.isXLHPriceCrossedUnderSignal) && - ( - // - // Next Step is to Check LL and HH Same Style ... - // - // XTD Long ... - // PriceFree ... - // Check if Both LL and HH Same In Length ... - ((mConditions.isXLHLLSameInLength && - mConditions.isXLHHHSameInLength) && - // - ( - // - (mConditions.isXAMANeutural && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentUnderFarest) - // - ) - // - ) - // || // - // XTD Long ... - // PriceFree ... + // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // - ( - false) - // - ) - // - || - // - // XTD Long ... - // PriceFree ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - false) - // - ) - // - || - // - // XTD Long ... - // PriceFree ... - // Not Same LL or HH in Lenght ... - ((!mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - false) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ; - - // - return result; -} - -// -// XTD Short Signal Checking ... -bool XAU5XTDHasShortSignal() -{ - // - bool result = false; - - // - // Validate Args ... - if (!xAU5MXTDEnableSignaller || - !xAU5MXTDAllowShortSignals) - { - return result; - } - - // - // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); - - // - // Start Analysing Market based On Conditions ... - result = - // - // Base Condition: - xAU5Provider.XTDHasShortConditions() - // - && - // - // Exceptions: - // there some commonly Exceptions which makes our choice incorrect, - // here we are combined knownly Exceptions ... - !( - // - // for Exception we used XLH Conditions as follow ... - // - // Check Conditions if Price In Signal Range ... - (mConditions.isXLHPriceInSignalRange && - // - ( - // - // Next Step is to Check LL and HH Same Style ... - // - // XTD Short ... - // PriceInSignalRange ... - // Check if Both LL and HH Same In Length ... - ((mConditions.isXLHLLSameInLength && - mConditions.isXLHHHSameInLength) && - // - ( - // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentOverFarest) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXAMAEndBullish && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCTrendsUp) - // - ) - // - ) - // - || - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - (mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXTSCurrentOverFarest) - // - || - // - (mConditions.isXCHMALCVale && - ( - // - mConditions.isXCHMALCTrendsDown - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear) - // - ) - // - ) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Short ... - // PriceInSignalRange ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Short ... - // PriceInSignalRange ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXLHLowAttachedLL) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Short ... - // PriceInSignalRange ... - // Not Same LL or HH in Lenght ... - ((!mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - false) - // - ) - // - ) - // - ) - // - || - // - // Check Conditions if Price is Under Signal ... - ( - // - ((mConditions.isXLHPriceUnderSignal || - mConditions.isXLHPriceCrossedUnderSignal) && - ( - // - // Next Step is to Check LL and HH Same Style ... - // - // XTD Short ... - // PriceUnderSignal ... - // Check if Both LL and HH Same In Length ... - ((mConditions.isXLHLLSameInLength && - mConditions.isXLHHHSameInLength) && - // ( // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) + mConditions.isXCHMASCTrendsUp) // || // - (mConditions.isXTDBullOverBear && - mConditions.isXCHMASCTrendsDown && - mConditions.isXTSCurrentOverNearest && - mConditions.isXCHMASCFastCrossedUnderSlow) - // - || - // - (mConditions.isXTSCurrentMin && + (mConditions.isXTMBullish && + mConditions.isXAMABullish && mConditions.isXTDBullOverBear && - mConditions.isXTDSignalCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderFarest) + mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) // ) // @@ -3149,62 +2850,23 @@ bool XAU5XTDHasShortSignal() // || // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverNearest) - // - || - // - (mConditions.isXTMEndBearish && - mConditions.isXAMAEndBearish && - mConditions.isXTSCurrentOverNearest) - // - || - // - (mConditions.isXCHMASCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXLHHHDecreased && - mConditions.isXTDBullOverBear) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMASCPeak && - mConditions.isXLHHHDecreased && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest) - // - || - // - ((mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXTMStartBearish && - mConditions.isXTDBullOverBear && - mConditions.isXAMAStartBearish) && ( - // - (mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCTrendsDown) - // - || // (mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalCrossedUnderBear) + mConditions.isXCHLHMCLCLLSame) // || // - (mConditions.isXCHMASCPeak && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderFarest && - mConditions.isXTSCurrentCrossedUnderMediest) + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTMEndBullish && + mConditions.isXAMAEndBullish && + mConditions.isXLHHighAttachedHH) // ) // @@ -3214,94 +2876,20 @@ bool XAU5XTDHasShortSignal() // ) // - || - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMASCPeak && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) - // - || - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // ) // ) // || // - // XTD Short ... - // PriceUnderSignal ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - false) - // - ) - // - || - // - // XTD Short ... - // PriceUnderSignal ... + // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - ((mConditions.isXCHMALCVale && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXAMAStartBearish) && - ( - // - mConditions.isXTSCurrentOverFarest - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHMALCTrendsUp) - // - ) - // - ) - // - ) - // - ) + false // ) // @@ -3309,112 +2897,25 @@ bool XAU5XTDHasShortSignal() // || // - // XTD Short ... - // PriceUnderSignal ... + // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // - ( - false) - // - ) - // - ) - // - ) - // - ) - // - || - // - // Check Conditions if Price is Over Signal ... - ( - // - ((mConditions.isXLHPriceOverSignal || - mConditions.isXLHPriceCrossedOverSignal) && - ( - // - // Next Step is to Check LL and HH Same Style ... - // - // XTD Short ... - // PriceOverSignal ... - // Check if Both LL and HH Same In Length ... - ((mConditions.isXLHLLSameInLength && - mConditions.isXLHHHSameInLength) && - // ( // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverFarest) - // - ) - // - ) // - ) - // - ) - // - || - // - // XTD Short ... - // PriceOverSignal ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - ) - // - ) - // - || - // - // XTD Short ... - // PriceOverSignal ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) + mConditions.isXCHMAMCTrendsUp // || // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXLHHHIncreased && - mConditions.isXTDBullOverBear && - mConditions.isXCHMALCTrendsDown) + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) // ) // @@ -3424,19 +2925,6 @@ bool XAU5XTDHasShortSignal() // ) // - || - // - // XTD Short ... - // PriceOverSignal ... - // Not Same LL or HH in Lenght ... - ((!mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - false) - // - ) - // ) // ) @@ -3457,53 +2945,61 @@ bool XAU5XTDHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTD Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTD Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTD Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTD Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -3523,29 +3019,29 @@ bool XAU5XTDHasShortSignal() // // XTAM Long Signal Checking ... -bool XAU5XTAMHasLongSignal() +bool XEU5XTAMHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXTAMEnableSignaller || - !xAU5MXTAMAllowLongSignals) + if (!xEU5MXTAMEnableSignaller || + !xEU5MXTAMAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XTAMHasLongConditions() + xEU5Provider.XTAMHasLongConditions() // && // @@ -3563,7 +3059,6 @@ bool XAU5XTAMHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -3571,23 +3066,16 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && + ((mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // - mConditions.isXCHMASCTrendsUp - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTDBullUnderBear && + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + mConditions.isXTSCurrentUnderFarest) // ) // @@ -3595,30 +3083,36 @@ bool XAU5XTAMHasLongSignal() // || // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - mConditions.isXCHMAMCTrendsUp - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDBearishVale && - mConditions.isXTSCurrentUnderFarest) + (mConditions.isXTSCurrentMax && + mConditions.isXLHLLIncreased && + mConditions.isXCHLHMCLCHHSame) // ) // ) // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // ) // ) // || // - // XTAM Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -3626,13 +3120,19 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax) // ) // @@ -3644,7 +3144,6 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -3652,24 +3151,19 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if SC Fast Under Slow ... + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - mConditions.isXCHMASCTrendsUp - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCLLSame) // ) // @@ -3681,14 +3175,16 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -3707,7 +3203,6 @@ bool XAU5XTAMHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -3715,9 +3210,9 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && + ((mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // (mConditions.isXTMNeutural && @@ -3729,44 +3224,23 @@ bool XAU5XTAMHasLongSignal() // || // + (mConditions.isXCHMASCPeak && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - mConditions.isXCHMAMCTrendsUp - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + ((mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && + (mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow))) // ) // @@ -3774,7 +3248,6 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -3782,20 +3255,36 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXLHLLDecreased && + mConditions.isXCHLHMCLCLLSame) + // + || + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && ( - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || // (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDBearishVale && - mConditions.isXTDSignalUnderBear) + mConditions.isXAMABearish && + mConditions.isXTMEndBearish && + mConditions.isXTSCurrentUnderFarest) // ) // @@ -3807,7 +3296,6 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -3815,39 +3303,32 @@ bool XAU5XTAMHasLongSignal() // ( // - // Check if SC Fast Under Slow ... ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - mConditions.isXCHMASCTrendsUp + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHLHSCMCLLSame && + (mConditions.isXTSCurrentUnderFarest || + mConditions.isXTSCurrentUnderMediest)) // || // - (mConditions.isXCHMASCVale && - mConditions.isXCHLHSCMCLLSame) + (mConditions.isXCHLHMCLCHHSame && + (mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest)) // || // (mConditions.isXTMVale && mConditions.isXAMAVale && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest) + mConditions.isXTSAllSame && + mConditions.isXCHMASCVale && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame) // ) // @@ -3855,30 +3336,9 @@ bool XAU5XTAMHasLongSignal() // || // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - mConditions.isXCHMAMCTrendsUp - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXLHLLIncreased && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) // ) // @@ -3886,14 +3346,36 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ( + (mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest && + mConditions.isXTDBullCrossedUnderBear) + // + ) + // + ) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) // ) // @@ -3914,7 +3396,6 @@ bool XAU5XTAMHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -3922,78 +3403,77 @@ bool XAU5XTAMHasLongSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXLHHHDecreased && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXCHMASCOverMax && - mConditions.isXCHMASCTrendsUp && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp && - mConditions.isXTDSignalOverBear) - // - || - // - // Check if SC Fast Under Slow ... ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - mConditions.isXCHMASCTrendsUp + (mConditions.isXCHMASCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXLHPriceCrossedOverSignal && + mConditions.isXTSCurrentCrossedOverFarest) // ) // ) // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMALCVale && + ( + // + mConditions.isXLHHHDecreased + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBearishVale) + // + ) + // + ) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHMASCFastCrossedOverSlow) + // + ) + // + ) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // ) // ) // || // - // XTAM Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -4001,58 +3481,23 @@ bool XAU5XTAMHasLongSignal() // ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXTDBullOverBear && - mConditions.isXLHHighAttachedHH) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXCHMALCTrendsDown) - // - || - // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && + ((mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) && ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) + (mConditions.isXCHLHSameHHs && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMASCPeak && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXLHHighAttachedHH && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXAMAStartBullish && + mConditions.isXLHHighAttachedHH) // ) // @@ -4060,22 +3505,37 @@ bool XAU5XTAMHasLongSignal() // || // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMAMCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) + ((mConditions.isXCHMALCVale || + mConditions.isXCHLHSameHHs) && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHLHSameHHs && + mConditions.isXLHLLDecreased && + mConditions.isXLHHighAttachedHH) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHMASCPeak && + (mConditions.isXCHMAMCTrendsDown || + mConditions.isXCHMAMCFastUnderSlow)) // ) // @@ -4083,27 +3543,73 @@ bool XAU5XTAMHasLongSignal() // || // - // XTAM Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXTMEndBearish && + mConditions.isXAMANeutural && + mConditions.isXAMAEndBearish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentUnderFarest) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) + // + ) + // + ) + // + || + // + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) // ) // || // - // XTAM Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -4127,53 +3633,61 @@ bool XAU5XTAMHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -4193,29 +3707,29 @@ bool XAU5XTAMHasLongSignal() // // XTAM Short Signal Checking ... -bool XAU5XTAMHasShortSignal() +bool XEU5XTAMHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXTAMEnableSignaller || - !xAU5MXTAMAllowShortSignals) + if (!xEU5MXTAMEnableSignaller || + !xEU5MXTAMAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XTAMHasShortConditions() + xEU5Provider.XTAMHasShortConditions() // && // @@ -4233,7 +3747,6 @@ bool XAU5XTAMHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -4241,49 +3754,29 @@ bool XAU5XTAMHasShortSignal() // ( // - // Check if SC Fast Over Slow ... + (mConditions.isXFIOverZero && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentOverFarest) + // + || + // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - mConditions.isXCHMASCTrendsUp - // - || - // - (mConditions.isXTMNeutural && + ((mConditions.isXTMNeutural || + mConditions.isXTMEndBullish) && mConditions.isXAMABullish && - mConditions.isXTSCurrentMin && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXCHMASCPeak && - mConditions.isXAMANeutural && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverFarest) + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTDBullCrossedOverBear && - mConditions.isXTSCurrentOverMediest) + mConditions.isXCHMASCTrendsUp && + mConditions.isXTSCurrentOverNearest) // ) // @@ -4291,24 +3784,13 @@ bool XAU5XTAMHasShortSignal() // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - mConditions.isXCHMALCTrendsDown - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXCHMASCVale && - mConditions.isXTDSignalVale && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullishVale) + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHMASCTrendsUp) // ) // @@ -4320,40 +3802,81 @@ bool XAU5XTAMHasShortSignal() // || // - // XTAM Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXCHMASCPeak && + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) + // + ) // ) // || // - // XTAM Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + ( + // + mConditions.isXCHMAMCTrendsUp + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural) + // + ) + // + ) + // + ) + // + ) // ) // || // - // XTAM Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -4372,7 +3895,6 @@ bool XAU5XTAMHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -4380,57 +3902,22 @@ bool XAU5XTAMHasShortSignal() // ( // - (mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( - // - mConditions.isXCHMASCTrendsUp - // - || // (mConditions.isXCHMALCVale && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDSignalCrossedOverBear) - // - ) - // - ) - // - || - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMASCVale && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale) + mConditions.isXCHMALCTrendsUp && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) // || // - (mConditions.isXCHMAMCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXCHMALCTrendsDown && - mConditions.isXLHPriceCrossedUnderSignal) + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentOverMediest) // ) // @@ -4438,18 +3925,36 @@ bool XAU5XTAMHasShortSignal() // || // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXCHMASCVale && - mConditions.isXCHMALCPeak && + (mConditions.isXTMBearish && + mConditions.isXAMABearish && mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCLLSame && + mConditions.isXCHMALCTrendsUp && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + || + // + ((mConditions.isXAMAVale && + mConditions.isXCHMASCVale && + mConditions.isXTSCurrentMin) && + ( + // + mConditions.isXRSICrossedUnderShortExit + // + || + // + mConditions.isXTDBullishVale + // + ) + // + ) // ) // @@ -4461,20 +3966,21 @@ bool XAU5XTAMHasShortSignal() // || // - // XTAM Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -4482,25 +3988,44 @@ bool XAU5XTAMHasShortSignal() // ( // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - // Check if MC Fast Over Slow ... - ((mConditions.isXCHMAMCFastOverSlow || - mConditions.isXCHMAMCFastCrossedOverSlow) && + ((mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMin && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXLHLowAttachedLL) && ( // - (mConditions.isXTMVale && - mConditions.isXAMAVale && + mConditions.isXCHMALCTrendsDown + // + || + // + (mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXLHPriceCrossedUnderSignal) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + mConditions.isXRSICrossedUnderShortExit + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMBearish && mConditions.isXCHMASCVale && + mConditions.isXAMABearish && + mConditions.isXCHLHSameLLs && mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXLHLowAttachedLL && - mConditions.isXCHMASCCrossedUnderMin) + mConditions.isXCHMASCTrendsUp && + mConditions.isXLHLowAttachedLL) // ) // @@ -4508,19 +4033,55 @@ bool XAU5XTAMHasShortSignal() // || // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXCHMALCVale && - mConditions.isXTDSignalVale && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullishVale && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear) + ( + // + mConditions.isXRSICrossedUnderShortExit + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMASCVale && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest) + // + || + // + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin && + mConditions.isXLHLowAttachedLL) && + ( + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHLHSameLLs && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) + // + ) // ) // @@ -4532,7 +4093,6 @@ bool XAU5XTAMHasShortSignal() // || // - // XTAM Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -4540,109 +4100,39 @@ bool XAU5XTAMHasShortSignal() // ( // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHMASCVale && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXLHPriceCrossedUnderSignal) - // - || - // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXLHLowAttachedLL && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) - // - || - // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - ((mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin) && - ( - // - mConditions.isXLHLowAttachedLL - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale) - // - ) - // - ) - // - || - // - (mConditions.isXLHLowAttachedLL && - ( - // - (mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXLHHHDecreased && - mConditions.isXTDBullOverBear) - // - || - // - (mConditions.isXTMBearish && + ( + // + mConditions.isXRSICrossedUnderShortExit + // + || + // + ((mConditions.isXTMBearish && mConditions.isXAMABearish && - mConditions.isXCHMAMCVale && + mConditions.isXTDSignalVale && mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) + mConditions.isXTDBullishVale) && + ( + // + (mConditions.isXTSAllSame && + mConditions.isXLHHHDecreased && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXLHLowAttachedLL && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + ) // ) - // - ) + // + ) // ) // @@ -4669,7 +4159,6 @@ bool XAU5XTAMHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -4677,67 +4166,45 @@ bool XAU5XTAMHasShortSignal() // ( // - // Check if SC Fast Over Slow ... + ((mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) + // + || + // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - mConditions.isXCHMASCTrendsUp - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTSCurrentOverFarest && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - (mConditions.isXTMStartBullish && + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXAMAStartBullish && mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverNearest) + mConditions.isXTSCurrentOverFarest) // || // - (mConditions.isXTSAllSame && - mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCVale && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastUnderSlow) - // - || - // - (mConditions.isXCHMASCPeak && + ((mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear) && ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXCHMASCTrendsUp && + (mConditions.isXCHMASCTrendsUp && mConditions.isXTDSignalOverBear) // || // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalOverBear && + (mConditions.isXFIOverZero && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // @@ -4751,7 +4218,6 @@ bool XAU5XTAMHasShortSignal() // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( @@ -4759,19 +4225,6 @@ bool XAU5XTAMHasShortSignal() (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // - || - // - (mConditions.isXTSAllSame && - mConditions.isXCHMALCVale && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMAMCTrendsDown) - // ) // ) @@ -4782,7 +4235,6 @@ bool XAU5XTAMHasShortSignal() // || // - // XTAM Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -4790,23 +4242,29 @@ bool XAU5XTAMHasShortSignal() // ( // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - mConditions.isXCHMASCTrendsUp + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + (mConditions.isXTDBullOverBear || + mConditions.isXTSCurrentOverFarest)) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame && + (mConditions.isXTSCurrentOverFarest || + mConditions.isXTSCurrentOverMediest)) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && + mConditions.isXLHLLDecreased && mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) + mConditions.isXCHLHMCLCLLSame) // ) // @@ -4818,27 +4276,82 @@ bool XAU5XTAMHasShortSignal() // || // - // XTAM Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMin && + mConditions.isXCHMAMCTrendsUp && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) + // + ) // ) // || // - // XTAM Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMASCTrendsUp) + // + || + // + (mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear && + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish) + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXCHMALCVale && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHSCMCHHSame) + // + ) + // + ) + // + ) // ) // @@ -4862,53 +4375,81 @@ bool XAU5XTAMHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTAM Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTAM Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXTSCurrentMin && + mConditions.isXTDSignalUnderBear && + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest && + mConditions.isXTDBullCrossedUnderBear) + // + ) + // + ) + // + ) // ) // || // - // XTAM Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -4928,29 +4469,29 @@ bool XAU5XTAMHasShortSignal() // // XSI Long Signal Checking ... -bool XAU5XSIHasLongSignal() +bool XEU5XSIHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXSIEnableSignaller || - !xAU5MXSIAllowLongSignals) + if (!xEU5MXSIEnableSignaller || + !xEU5MXSIAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XSIHasLongConditions() + xEU5Provider.XSIHasLongConditions() // && // @@ -4968,53 +4509,128 @@ bool XAU5XSIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMASCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentUnderNearest) + // + ) + // + ) + // + ) // ) // || // - // XSI Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTSAllSame && + mConditions.isXCHLHSameLLs && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale && + mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased && + mConditions.isXTMStartBullish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentUnderFarest) + // + || + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTMStartBullish) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTSCurrentMin && + mConditions.isXTSCurrentMax) + // + ) + // + ) + // + ) // ) // || // - // XSI Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -5033,7 +4649,6 @@ bool XAU5XSIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5041,26 +4656,50 @@ bool XAU5XSIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish)) + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMANeutural && + mConditions.isXAMAEndBullish && + mConditions.isXLHLLDecreased && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - (mConditions.isXTMVale && - mConditions.isXCHMASCVale && - mConditions.isXCHMAMCVale && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural) + (mConditions.isXAMAEndBearish && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest) // || // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest) + ((mConditions.isXTMVale && + mConditions.isXAMAVale) + // + && + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale) + // + && + // + (mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame)) // ) // @@ -5068,25 +4707,21 @@ bool XAU5XSIHasLongSignal() // || // - // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // - (mConditions.isXTMVale && + (mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale) // || // - (mConditions.isXTSCurrentMax && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMASCUnderMax && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear) + (mConditions.isXTMVale && + mConditions.isXTMNeutural && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBullish && + mConditions.isXTSCurrentUnderFarest) // ) // @@ -5098,20 +4733,48 @@ bool XAU5XSIHasLongSignal() // || // - // XSI Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale) + // + || + // + (mConditions.isXLHHHDecreased && + mConditions.isXLHLLDecreased) + // + || + // + ((mConditions.isXTMVale || + mConditions.isXTMNeutural || + mConditions.isXTMEndBearish) && + mConditions.isXAMANeutural) + // + ) + // + ) + // + ) // ) // || // - // XSI Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -5119,33 +4782,24 @@ bool XAU5XSIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXCHMASCVale && - mConditions.isXCHMASCTrendsUp) - // - || - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHMASCVale && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMALCTrendsDown) + mConditions.isXCHMAMCVale) // ) // @@ -5157,7 +4811,6 @@ bool XAU5XSIHasLongSignal() // || // - // XSI Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -5165,35 +4818,25 @@ bool XAU5XSIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( - // - (mConditions.isXCHMASCVale && - mConditions.isXCHMASCTrendsUp) - // - || - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown) - // - || // (mConditions.isXTMVale && mConditions.isXAMAVale && - mConditions.isXCHMASCVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale) // || // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXCHMASCVale && + mConditions.isXCHLHSCMCLLSame) // ) // @@ -5220,46 +4863,51 @@ bool XAU5XSIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -5267,33 +4915,7 @@ bool XAU5XSIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && - ( - // - mConditions.isXCHMASCTrendsUp - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDBullUnderBear && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalUnderBear) - // - ) - // - ) + false // ) // @@ -5319,53 +4941,61 @@ bool XAU5XSIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -5385,29 +5015,29 @@ bool XAU5XSIHasLongSignal() // // XSI Short Signal Checking ... -bool XAU5XSIHasShortSignal() +bool XEU5XSIHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXSIEnableSignaller || - !xAU5MXSIAllowShortSignals) + if (!xEU5MXSIEnableSignaller || + !xEU5MXSIAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XSIHasShortConditions() + xEU5Provider.XSIHasShortConditions() // && // @@ -5425,20 +5055,21 @@ bool XAU5XSIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5446,25 +5077,26 @@ bool XAU5XSIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXTSAllSame && - mConditions.isXCHMALCVale && - mConditions.isXTMStartBearish && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXAMAStartBearish && - mConditions.isXTDSignalOverBear) + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXLHHHIncreased && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) // ) // @@ -5476,27 +5108,31 @@ bool XAU5XSIHasShortSignal() // || // - // XSI Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -5515,53 +5151,71 @@ bool XAU5XSIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + ) + // + ) + // + ) // ) // || // - // XSI Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -5582,7 +5236,6 @@ bool XAU5XSIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5590,27 +5243,80 @@ bool XAU5XSIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... + (mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTDSignalOverBear) + // + || + // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( + // + ((mConditions.isXTMBullish && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish)) && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear && + mConditions.isXTSCurrentOverFarest) + // + || // (mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCPeak) + mConditions.isXCHMAMCPeak && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) // || // - (mConditions.isXCHMALCVale && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMASCTrendsUp && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + || + // + ((mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) && + ( + // + (mConditions.isXFIOverZero && + mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCVale && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin && + mConditions.isXTMStartBearish && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest && + mConditions.isXTSCurrentCrossedUnderFarest && + mConditions.isXTSCurrentCrossedUnderNearest && + mConditions.isXTSCurrentCrossedUnderMediest) + // + )) + // + ) + // + ) // ) // @@ -5618,50 +5324,50 @@ bool XAU5XSIHasShortSignal() // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) // || // - (mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) + (mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentOverNearest) // || // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && + (((mConditions.isXTMBullish || + mConditions.isXTMStartBullish) && + (mConditions.isXAMABullish || + mConditions.isXAMAStartBullish)) && mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverNearest && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverNearest) + mConditions.isXTDSignalOverBear) // ) // ) // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCVale && + mConditions.isXLHHHIncreased && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) + // ) // ) // || // - // XSI Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5669,39 +5375,126 @@ bool XAU5XSIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMASCTrendsUp) + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXFIOverZero && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCHHSame) + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXTMEndBullish && + mConditions.isXTSCurrentMin && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBearish) + // + || + // + ((mConditions.isXCHMASCPeak && + mConditions.isXTSCurrentOverFarest) && + ( + // + mConditions.isXTMNeutural + // + || + // + mConditions.isXTSCurrentOverMediest + // + || + // + (mConditions.isXTMBullish && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXLHHHIncreased) + // + ) + // + ) + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMin && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish) + // + || + // + ((mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCVale) && + ( + // + (mConditions.isXLHHHIncreased && + mConditions.isXLHLLIncreased) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXTSCurrentMin) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) // - || + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXTSCurrentOverFarest) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && + (mConditions.isXCHLHSameHHs && + mConditions.isXLHHHIncreased && mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXLHHighAttachedHH && mConditions.isXTSCurrentOverFarest) // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp) + // ) // ) @@ -5712,7 +5505,6 @@ bool XAU5XSIHasShortSignal() // || // - // XSI Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -5720,29 +5512,7 @@ bool XAU5XSIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXCHMASCPeak && - mConditions.isXLHHHIncreased && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest) - // - ) - // - ) + false // ) // @@ -5750,7 +5520,6 @@ bool XAU5XSIHasShortSignal() // || // - // XSI Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -5758,20 +5527,63 @@ bool XAU5XSIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( + // + ((mConditions.isXTDBullOverBear && + (mConditions.isXTDSignalOverBear || + mConditions.isXTDSignalCrossedOverBear)) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + (mConditions.isXFIOverZero || + mConditions.isXTSCurrentOverFarest)) + // + || + // + (mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMASCTrendsUp) + // + ) + // + ) + // + || // (mConditions.isXCHMASCPeak && mConditions.isXCHMASCTrendsUp) // || // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow) + ((mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCVale) && + ( + // + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXCHLHSCMCHHSame) + // + ) + // + ) + // + ) + // + ) // ) // @@ -5801,53 +5613,61 @@ bool XAU5XSIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XSI Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XSI Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -5867,29 +5687,29 @@ bool XAU5XSIHasShortSignal() // // XTSFI Long Signal Checking ... -bool XAU5XTSFIHasLongSignal() +bool XEU5XTSFIHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXTSFIEnableSignaller || - !xAU5MXTSFIAllowLongSignals) + if (!xEU5MXTSFIEnableSignaller || + !xEU5MXTSFIAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XTSFIHasLongConditions() + xEU5Provider.XTSFIHasLongConditions() // && // @@ -5907,7 +5727,6 @@ bool XAU5XTSFIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5915,28 +5734,59 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - (mConditions.isXCHMASCOverMax && - mConditions.isXCHMASCTrendsUp) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + (mConditions.isXAMANeutural && + mConditions.isXAMAEndBearish && mConditions.isXTSCurrentUnderMediest) // || // - (mConditions.isXLHHHIncreased && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHMCLCHHSame) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + ((mConditions.isXTMNeutural && + mConditions.isXTSCurrentUnderMediest) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTSCurrentUnderMediest) + // + || + // + (mConditions.isXTDSignalUnderBear && + mConditions.isXFICrossedUnderZero) + // + ) + // + ) // ) // @@ -5948,7 +5798,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -5956,22 +5805,24 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale) // ) // @@ -5979,38 +5830,35 @@ bool XAU5XTSFIHasLongSignal() // || // - // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - (mConditions.isXCHMASCOverMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) || - (mConditions.isXTMEndBullish && - mConditions.isXAMAEndBullish)) && - mConditions.isXCHMASCOverMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedUnderMediest) + (mConditions.isXTMNeutural && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish) && + mConditions.isXCHLHSameHHs && + mConditions.isXLHLLIncreased && + mConditions.isXLHHighAttachedHH) // ) // ) // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBearishVale && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderMediest) + // ) // ) // || // - // XTSFI Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -6018,36 +5866,26 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( - // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXLHHHIncreased && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDSignalCrossedUnderBear) - // - || // (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMAMCTrendsDown && mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDBullCrossedUnderBear) + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentUnderMediest) // ) // @@ -6059,7 +5897,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -6067,35 +5904,7 @@ bool XAU5XTSFIHasLongSignal() // ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - // Check if MC Fast Under Slow ... - ((mConditions.isXCHMAMCFastUnderSlow || - mConditions.isXCHMAMCFastCrossedUnderSlow) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHSameHHs && - mConditions.isXCHMASCOverMax && - mConditions.isXTSCurrentUnderMediest) - // - ) - // - ) + false // ) // @@ -6116,7 +5925,6 @@ bool XAU5XTSFIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -6124,86 +5932,44 @@ bool XAU5XTSFIHasLongSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCFastOverSlow) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCPeak && - mConditions.isXCHMASCTrendsUp && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXCHMASCFastCrossedOverSlow) - // - ) - // - ) + (mConditions.isXCHMASCPeak && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentUnderMediest) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABearish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHMAMCTrendsDown && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) // || // - // Check if SC Fast Under Slow ... ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - ((mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) && - ( - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) - // - || - // - (mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame) - // - ) - // - ) - // - || - // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && - ( - // - (mConditions.isXLHHHIncreased && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullCrossedUnderBear) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) - // - ) - // - ) + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMASCOverMax && + mConditions.isXCHMASCOverMin && + mConditions.isXTSCurrentUnderMediest) // ) // @@ -6211,57 +5977,35 @@ bool XAU5XTSFIHasLongSignal() // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // - mConditions.isXCHMAMCTrendsUp - // - || - // - (mConditions.isXAMAVale && - mConditions.isXTMNeutural && - mConditions.isXCHMAMCVale && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentUnderMediest) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) && + (mConditions.isXCHMAMCVale && ( // - mConditions.isXTDBullUnderBear + mConditions.isXCHMALCVale // || // - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) + (mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderMediest) // ) // ) // - ) - // - ) - // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( + || // - (mConditions.isXCHMALCVale && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXLHHHDecreased && + (mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBullish) + // + || + // + (mConditions.isXLHLLDecreased && + mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderMediest) // ) @@ -6274,7 +6018,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -6282,22 +6025,39 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if MC Fast Under Slow ... + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXTMNeutural || + mConditions.isXTMStartBullish) && + mConditions.isXLHHHDecreased && + (mConditions.isXAMANeutural || + mConditions.isXAMAStartBearish) && + mConditions.isXTSCurrentUnderMediest) + // + || + // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXLHHHDecreased && - mConditions.isXLHLLDecreased && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + ( + // + mConditions.isXCHMALCVale + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) // ) // @@ -6309,7 +6069,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -6317,29 +6076,15 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && - ( - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXLHHHIncreased && - mConditions.isXCHMASCTrendsUp && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) // ) // @@ -6347,14 +6092,16 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -6375,7 +6122,6 @@ bool XAU5XTSFIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -6383,125 +6129,36 @@ bool XAU5XTSFIHasLongSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXCHMASCPeak && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) // || // - ((mConditions.isXCHMASCOverMax && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsUp && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMALCFastOverSlow) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBearishVale && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullOverBear) - // - ) - // - ) + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) // || // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentUnderMediest) && - ( - // - (mConditions.isXLHHHDecreased && - mConditions.isXCHMASCOverMax) - // - || - // - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) - // - || - // - (mConditions.isXCHLHSameLLs && - mConditions.isXCHMASCOverMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMALCTrendsUp) - // - ) - // - ) + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) // || // - // Check if SC Fast Under Slow ... ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // - ((mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDBullCrossedUnderBear) - // - || - // - (mConditions.isXTDBullUnderBear && - ( - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish) - // - || - // - (mConditions.isXCHMASCOverMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMABullish) - // - ) - // - ) - // - ) - // - ) + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalUnderBear) // || // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXAMAVale && - (mConditions.isXTMBearish || - mConditions.isXAMABearish) && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + (mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentUnderMediest) // ) @@ -6510,15 +6167,13 @@ bool XAU5XTSFIHasLongSignal() // || // - // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // - (mConditions.isXCHMASCOverMax && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXCHMASCPeak && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish)) // ) // @@ -6526,74 +6181,24 @@ bool XAU5XTSFIHasLongSignal() // || // - // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentUnderMediest) - // - || // (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXFICrossedUnderZero && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentUnderMediest) // || // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - ((mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedUnderMediest) && - ( - // - mConditions.isXTDBullCrossedUnderBear - // - || - // - (mConditions.isXCHMASCOverMax && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMASCFastCrossedOverSlow) - // - ) - // - ) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentUnderMediest) && - ( - // - (mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXTDSignalCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderMediest) - // - ) - // - ) + (mConditions.isXCHMALCVale && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish) && + mConditions.isXTMStartBearish) // ) // @@ -6605,7 +6210,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -6613,100 +6217,47 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check if SC Fast Under Slow ... - ((mConditions.isXCHMASCFastUnderSlow || - mConditions.isXCHMASCFastCrossedUnderSlow) && + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - ((mConditions.isXTDSignalUnderBear && + ((mConditions.isXCHLHSCMCHHSame && mConditions.isXTSCurrentUnderMediest) && ( // - mConditions.isXTDBullOverBear + mConditions.isXCHMALCVale // || - (mConditions.isXLHHHDecreased && - mConditions.isXCHMASCOverMax) + // + (mConditions.isXCHMALCTrendsDown && + mConditions.isXTSCurrentCrossedUnderMediest) // ) // ) // - || - // - (mConditions.isXLHHHDecreased && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) - // ) // ) // - || - // - // Check LC Fast Under Slow ... - ((mConditions.isXCHMALCFastUnderSlow || - mConditions.isXCHMALCFastCrossedUnderSlow) && - ( - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHSameHHs && - mConditions.isXCHMASCOverMax && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCVale && - mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXLHHighAttachedHH && - mConditions.isXTSCurrentUnderMediest) - // - ) - // - ) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXLHLLDecreased && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXCHMASCCrossedOverMax && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXCHMAMCFastCrossedOverSlow && - mConditions.isXTSCurrentCrossedUnderMediest) - // ) // ) // || // - // XTSFI Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -6714,27 +6265,34 @@ bool XAU5XTSFIHasLongSignal() // ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) + (mConditions.isXCHMASCPeak && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) // || // - ((mConditions.isXTMNeutural && - mConditions.isXTSCurrentUnderMediest) && + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // - (mConditions.isXAMANeutural && - mConditions.isXLHHHIncreased && - mConditions.isXCHLHSCMCHHSame) - // - || - // - (mConditions.isXCHMASCOverMax && + (mConditions.isXTMNeutural && + mConditions.isXCHMALCVale && mConditions.isXAMAStartBullish && - mConditions.isXCHMASCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastOverSlow) + mConditions.isXFICrossedOverZero && + mConditions.isXTDBullCrossedOverBear && + mConditions.isXTSCurrentUnderMediest) // ) // @@ -6742,65 +6300,13 @@ bool XAU5XTSFIHasLongSignal() // || // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHSameHHs && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown) - // - || - // - (mConditions.isXTSCurrentUnderMediest && - ( - // - (mConditions.isXCHMASCOverMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDSignalUnderBear) && - ( - // - mConditions.isXTDBullUnderBear - // - || - // - (mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentCrossedUnderMediest) - // - ) - // - ) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXLHHHIncreased && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear) - // - ) - // - ) + mConditions.isXTMNeutural && + mConditions.isXAMANeutural) // ) // @@ -6812,7 +6318,6 @@ bool XAU5XTSFIHasLongSignal() // || // - // XTSFI Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -6820,16 +6325,19 @@ bool XAU5XTSFIHasLongSignal() // ( // - // Check LC Fast Under Slow ... + (mConditions.isXCHMAMCPeak && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) + // + || + // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCVale && - mConditions.isXLHLLIncreased && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXTSCurrentUnderMediest) + mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCHHSame) // ) // @@ -6859,53 +6367,65 @@ bool XAU5XTSFIHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) // ) // || // - // XTSFI Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTSFI Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + (mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + ) // ) // || // - // XTSFI Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -6925,29 +6445,29 @@ bool XAU5XTSFIHasLongSignal() // // XTSFI Short Signal Checking ... -bool XAU5XTSFIHasShortSignal() +bool XEU5XTSFIHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXTSFIEnableSignaller || - !xAU5MXTSFIAllowShortSignals) + if (!xEU5MXTSFIEnableSignaller || + !xEU5MXTSFIAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XTSFIHasShortConditions() + xEU5Provider.XTSFIHasShortConditions() // && // @@ -6965,7 +6485,6 @@ bool XAU5XTSFIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -6973,128 +6492,171 @@ bool XAU5XTSFIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && + ((mConditions.isXCHMALCVale && + mConditions.isXCHLHMCLCLLSame) && ( // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) + mConditions.isXCHMASCTrendsDown // || // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXLHLLDecreased && - mConditions.isXTSCurrentOverMediest) && - ( - // - (mConditions.isXCHMASCTrendsUp && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXTDBullCrossedOverBear) - // - ) - // - ) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMANeutural && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + (mConditions.isXTMNeutural && + mConditions.isXTMEndBearish && mConditions.isXTSCurrentOverMediest) // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXCHMASCTrendsUp && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDSignalCrossedOverBear) - // - || - // - ((mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverMediest) && - ( - // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXCHMASCTrendsUp && - mConditions.isXCHLHMCLCLLSame) - // - || - (mConditions.isXTDBearishVale && - mConditions.isXTSCurrentCrossedOverMediest) - // - ) - // - ) - // - ) - // - ) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTDBearishVale && - mConditions.isXLHHHDecreased && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastUnderSlow) - // ) // ) // || // - // Check LC Fast Over Slow ... + (((mConditions.isXTMVale || + mConditions.isXTMNeutural) && + mConditions.isXAMANeutural) && + (mConditions.isXFIOverZero || + mConditions.isXFICrossedOverZero) && + mConditions.isXTSCurrentOverMediest) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalCrossedOverBear) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentCrossedUnderNearest) + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero) && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXTDBearishVale && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalCrossedOverBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTMStartBullish) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDSignalOverBear) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXCHMASCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) + // + ) + // + ) + // + ) + // + ) + // + || + // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXCHMALCPeak && + (mConditions.isXTMNeutural || + mConditions.isXTMEndBullish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish) && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHMALCPeak && + mConditions.isXTDBullOverBear && + (mConditions.isXFIOverZero || + mConditions.isXFICrossedOverZero)) + // + ) + // + ) // ) // @@ -7106,7 +6668,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -7114,88 +6675,183 @@ bool XAU5XTSFIHasShortSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXCHMASCUnderMin && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - || - // - // XTSFI Short ... - // PriceInSignalRange ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTDBullOverBear && - mConditions.isXCHMASCUnderMin && - mConditions.isXTSCurrentOverMediest && - mConditions.isXRSICrossedOverLongEntry) - // - || - // - (mConditions.isXTMEndBearish && - mConditions.isXAMAEndBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - mConditions.isXRSICrossedUnderShortExit - // - || - // - ((mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMASCUnderMin && + ((mConditions.isXAMANeutural && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverMediest) && ( // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) + mConditions.isXTMNeutural // || // - (mConditions.isXCHMASCCrossedUnderMin && - mConditions.isXTSCurrentCrossedOverMediest) + (mConditions.isXTMBullish && + mConditions.isXLHLLDecreased) // ) // ) // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + (mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased && + (mConditions.isXTMBullish || + mConditions.isXTMStartBullish) && + mConditions.isXAMABullish && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDBullCrossedOverBear) + // || // (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHSameLLs && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + mConditions.isXAMABullish && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased && + mConditions.isXFICrossedOverZero && + mConditions.isXTDBullCrossedOverBear) + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXCHMALCPeak && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXFIOverZero && + mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased && mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXTDBullCrossedUnderBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTMStartBearish && + mConditions.isXTDBullUnderBear && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXTMBullish || + mConditions.isXTMStartBullish) && + (mConditions.isXAMABullish || + mConditions.isXAMAStartBullish) && + (mConditions.isXFIOverZero || + mConditions.isXFICrossedOverZero) && + mConditions.isXCHLHSameLLs) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXCHMASCTrendsUp) + // + || + // + (mConditions.isXCHLHSameLLs && + mConditions.isXTDBearishVale && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXCHMALCPeak && + mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTSCurrentCrossedUnderFarest) + // + || + // + ((mConditions.isXCHMAMCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXTMEndBearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) // ) // @@ -7207,14 +6863,16 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -7233,7 +6891,6 @@ bool XAU5XTSFIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -7241,66 +6898,246 @@ bool XAU5XTSFIHasShortSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXTMStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTSCurrentOverMediest) && + (mConditions.isXTSCurrentOverMediest && ( // - (mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastUnderSlow) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHMAMCVale && - !mConditions.isXCHMAMCTrendsUp && - !mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - ((mConditions.isXCHMALCVale && - mConditions.isXTDBullishVale && - mConditions.isXTDSignalUnderBear) && + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest) && ( // - (mConditions.isXTDSignalVale && - mConditions.isXTDBullUnderBear) + mConditions.isXTSCurrentUnderNearest // || // - (mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCUnderMin) + (mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXCHMASCTrendsUp) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXTDBullOverBear && + mConditions.isXLHHHDecreased && + mConditions.isXLHLLDecreased && + mConditions.isXTSCurrentOverMediest) + // + || + // + ((mConditions.isXFIOverZero && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish) + // + || + // + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMALCVale && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + mConditions.isXOBDSwingLow + // + || + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHLHSameLLs && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTDBullCrossedUnderBear && + mConditions.isXTSCurrentCrossedOverMediest) + // + || + // + ((mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && + ( + // + mConditions.isXCHMALCPeak + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentCrossedOverMediest) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXFIOverZero && + mConditions.isXTSCurrentCrossedOverMediest) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMBearish && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXFIOverZero && + mConditions.isXLHHHIncreased && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXFICrossedOverZero) + // + || + // + (mConditions.isXAMABearish && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHMCLCLLSame && + (mConditions.isXTMNeutural || + mConditions.isXTMEndBearish)) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXTMStartBearish && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXTSCurrentUnderFarest) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentCrossedUnderNearest) + // + || + // + ((mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXCHMALCPeak && + mConditions.isXCHMAMCVale) && + ( + // + mConditions.isXLHPriceCrossedUnderSignal + // + || + // + (mConditions.isXCHLHSCMCLLSame && + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentCrossedUnderNearest) + // + ) + // + ) + // + ) + // + ) // ) // @@ -7308,90 +7145,89 @@ bool XAU5XTSFIHasShortSignal() // || // - (mConditions.isXTDBullOverBear && - mConditions.isXCHMASCFastCrossedUnderSlow && - mConditions.isXTSCurrentCrossedOverMediest) + (((mConditions.isXTMBullish || + mConditions.isXTMNeutural || + mConditions.isXTMStartBullish) && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + (mConditions.isXTMStartBullish || + mConditions.isXTMEndBullish)) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXAMAStartBearish) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXFIOverZero && + mConditions.isXTMEndBearish && + mConditions.isXFICrossedOverZero) + // + ) + // + ) // || // - (mConditions.isXCHMALCVale && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - ) - // - ) - // - || - // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) + ((mConditions.isXCHMAMCVale && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased && + mConditions.isXCHLHSCMCLLSame) + // + || + // + ((mConditions.isXTMNeutural && + mConditions.isXAMAStartBearish) && + ( + // + (mConditions.isXCHLHSameLLs && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) + // + ) + // + ) // || // - (mConditions.isXTDBullOverBear && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - || - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXAMABearish && - mConditions.isXCHMAMCVale && - mConditions.isXTMNeutural && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMAMCVale && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentOverMediest) + ((mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXLHHHDecreased) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) // ) // @@ -7403,7 +7239,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -7411,17 +7246,200 @@ bool XAU5XTSFIHasShortSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXLHPriceCrossedUnderSignal && - mConditions.isXTSCurrentCrossedUnderNearest) + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) + // + || + // + (mConditions.isXTSCurrentOverMediest && + ( + // + ((mConditions.isXCHMALCVale && + mConditions.isXCHLHSCMCLLSame) && + ( + // + (mConditions.isXAMAVale && + mConditions.isXCHMASCUnderMax && + mConditions.isXCHMASCUnderMin) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXCHMASCTrendsUp && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + ((mConditions.isXCHMAMCVale && + mConditions.isXTSCurrentOverMediest) && + ( + // + mConditions.isXLHHHDecreased + // + || + // + mConditions.isXTSCurrentCrossedOverMediest + // + || + // + (mConditions.isXTMVale && + mConditions.isXTMNeutural && + mConditions.isXAMAVale && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMALCTrendsDown) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXFIOverZero && + mConditions.isXTMEndBearish && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXCHMALCPeak && + ( + // + mConditions.isXCHLHMCLCLLSame + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + // PriceUnderSignal ... + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentCrossedOverMediest) + // + || + // + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDSignalUnderBear) && + ( + // + mConditions.isXTDBullCrossedUnderBear + // + || + // + (mConditions.isXCHMALCVale && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullUnderBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + ( + // + ((mConditions.isXCHMALCVale && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXFIOverZero && + mConditions.isXCHMASCTrendsUp) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXLHHHIncreased && + mConditions.isXTMStartBearish && + mConditions.isXCHLHSCMCHHSame) + // + ) + // + ) + // + ) + // + ) + // + ) // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( @@ -7432,140 +7450,155 @@ bool XAU5XTSFIHasShortSignal() mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentOverMediest) // - ) - // - ) - // - || - // - // Check LC Fast Over Slow ... - ((mConditions.isXCHMALCFastOverSlow || - mConditions.isXCHMALCFastCrossedOverSlow) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // || // (mConditions.isXTMVale && mConditions.isXAMAVale && - mConditions.isXLHHHDecreased && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + mConditions.isXCHMASCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame && mConditions.isXTSCurrentOverMediest) // - || - // - (mConditions.isXAMAVale && - mConditions.isXTMNeutural && - mConditions.isXCHMALCPeak && - mConditions.isXAMABearish && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXTMNeutural && - mConditions.isXCHMAMCVale && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedUnderNearest) - // ) // ) // - ) - // - ) - // - || - // - // XTSFI Short ... - // PriceUnderSignal ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) - // || // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXAMAVale && - mConditions.isXCHMAMCVale && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXTMNeutural && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXAMABearish && - mConditions.isXCHMAMCVale && - mConditions.isXTMEndBearish && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXCHMASCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXCHMASCCrossedOverMin) + (mConditions.isXTSCurrentOverMediest && + ( + // + mConditions.isXCHLHSameLLs + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased) + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXLHHHDecreased && + mConditions.isXTSCurrentCrossedUnderNearest) + // + || + // + (mConditions.isXCHLHSCMCLLSame && + ( + // + (mConditions.isXCHLHMCLCHHSame && + ( + // + (mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXTMStartBearish) + // + || + // + ((mConditions.isXTMNeutural || + mConditions.isXTMEndBearish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish)) + // + || + // + (mConditions.isXTMVale && + mConditions.isXCHMAMCVale && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest) + // + ) + // + ) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish) + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXTMEndBearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMABearish && + mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABearish && + mConditions.isXCHMAMCVale && + mConditions.isXLHHHDecreased && + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentCrossedUnderNearest) + // + ) + // + ) + // + || + // + ((mConditions.isXAMAVale && + mConditions.isXCHMALCPeak) && + ( + // + mConditions.isXTMNeutural + // + || + // + (mConditions.isXTMVale && + mConditions.isXTMEndBearish && + mConditions.isXLHLLDecreased) + // + ) + // + ) + // + || + // + (mConditions.isXTMVale && + mConditions.isXTMNeutural && + mConditions.isXAMABearish && + mConditions.isXCHMAMCVale && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentCrossedUnderNearest) + // + ) + // + ) + // + ) + // + ) // ) // @@ -7577,7 +7610,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -7585,21 +7617,34 @@ bool XAU5XTSFIHasShortSignal() // ( // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHLHSCMCLLSame && + ((mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHMASCUnderMax && + mConditions.isXCHMASCUnderMin && mConditions.isXTSCurrentOverMediest) && ( // - (mConditions.isXTDBullOverBear && - mConditions.isXCHMASCUnderMin && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXCHMAMCTrendsDown // || // - (mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXRSICrossedUnderShortExit) + (mConditions.isXTMBearish && + mConditions.isXAMABearish) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMASCTrendsUp && + mConditions.isXTMStartBearish && + mConditions.isXTDBullOverBear && + mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentOverMediest) // ) // @@ -7607,30 +7652,33 @@ bool XAU5XTSFIHasShortSignal() // || // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMASCUnderMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXTMVale && - mConditions.isXCHMAMCVale && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTMEndBearish && - mConditions.isXAMAEndBearish && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) + ((mConditions.isXCHMAMCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXAMAVale && + mConditions.isXTMBullish) + // + || + // + (mConditions.isXAMAVale && + (mConditions.isXTMNeutural || + mConditions.isXTMEndBearish)) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale) + // + ) + // + ) // ) // @@ -7657,7 +7705,6 @@ bool XAU5XTSFIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -7665,62 +7712,65 @@ bool XAU5XTSFIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... - ((mConditions.isXCHMASCFastOverSlow || - mConditions.isXCHMASCFastCrossedOverSlow) && + ((mConditions.isXTMNeutural && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentOverMediest) && ( // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMASCTrendsUp) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXAMANeutural && - mConditions.isXTMStartBullish && - mConditions.isXTSCurrentOverMediest && + (mConditions.isXCHLHMCLCLLSame && mConditions.isXLHPriceCrossedOverSignal) // || // - (mConditions.isXCHLHSameLLs && - mConditions.isXCHMASCUnderMin && - mConditions.isXCHMALCFastOverSlow && + (mConditions.isXTDBullUnderBear && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && mConditions.isXTSCurrentOverMediest) // || // ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && + mConditions.isXFIOverZero && mConditions.isXTSCurrentOverMediest) && ( // - mConditions.isXTDSignalCrossedOverBear + (mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear) // || // - (mConditions.isXLHLLDecreased && - mConditions.isXCHLHMCLCLLSame) + (mConditions.isXAMABullish && + mConditions.isXTDBullCrossedOverBear) // - || + ) + // + ) + // + || + // + (mConditions.isXTSCurrentOverMediest && + ( // - ((mConditions.isXTDBearishVale && - mConditions.isXTDSignalOverBear) && - ( - // - mConditions.isXLHPriceCrossedOverSignal - // - || - // - (mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) - // - ) - // - ) + (mConditions.isXTMNeutural && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXLHLLIncreased && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMASCTrendsUp) // ) // @@ -7732,7 +7782,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // Check if MC Fast Over Slow ... ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( @@ -7742,22 +7791,17 @@ bool XAU5XTSFIHasShortSignal() // || // - (mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXLHLLIncreased && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && + (mConditions.isXCHMAMCTrendsUp && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXCHMALCPeak && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTSCurrentOverMediest) // ) // @@ -7765,15 +7809,31 @@ bool XAU5XTSFIHasShortSignal() // || // - // Check LC Fast Over Slow ... ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDBullCrossedOverBear) + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXFIOverZero && + mConditions.isXCHMALCPeak) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXLHHHDecreased) + // + ) + // + ) // ) // @@ -7785,7 +7845,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -7793,30 +7852,50 @@ bool XAU5XTSFIHasShortSignal() // ( // - // Check if SC Fast Over Slow ... ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXLHHHDecreased && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverMediest) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && ( // - (mConditions.isXCHMALCVale && + ((mConditions.isXTMBullish || + mConditions.isXTMStartBullish) + // + && + // + (mConditions.isXAMABullish || + mConditions.isXAMAStartBullish)) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTDBullCrossedUnderBear) // ) // @@ -7832,7 +7911,6 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -7840,20 +7918,138 @@ bool XAU5XTSFIHasShortSignal() // ( // - // Check if MC Fast Over Slow ... + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXLHPriceCrossedOverSignal) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHLLIncreased && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentCrossedUnderNearest) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXLHHHIncreased && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMASCTrendsUp) + // + || + // + (mConditions.isXTSCurrentOverMediest && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTMStartBearish && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXCHMALCVale && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMASCTrendsUp) + // + ) + // + ) + // + ) + // + ) + // + || + // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) + (mConditions.isXCHMAMCTrendsUp && + ( + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentOverMediest) + // + || + // + ((mConditions.isXTMBullish || + mConditions.isXTMStartBullish) && + (mConditions.isXAMABullish || + mConditions.isXAMAStartBullish) && + (mConditions.isXTSCurrentOverMediest || + mConditions.isXTSCurrentCrossedOverMediest)) + // + )) // - || + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentOverMediest) + ((mConditions.isXTSCurrentOverMediest || + mConditions.isXTSCurrentCrossedOverMediest) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMAMCVale && + mConditions.isXLHHHDecreased && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTDBullCrossedUnderBear) + // + ) + // + ) // ) // @@ -7865,14 +8061,38 @@ bool XAU5XTSFIHasShortSignal() // || // - // XTSFI Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTMStartBearish) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHLHSameLLs) + // + ) + // + ) + // + || + // + (mConditions.isXCHMASCTrendsUp && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) + // + ) // ) // @@ -7896,53 +8116,61 @@ bool XAU5XTSFIHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XTSFI Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTSFI Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTSFI Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XTSFI Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -7962,29 +8190,32 @@ bool XAU5XTSFIHasShortSignal() // // XOBDLH Long Signal Checking ... -bool XAU5XOBDLHHasLongSignal() +bool XEU5XOBDLHHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXOBDLHEnableSignaller || - !xAU5MXOBDLHAllowLongSignals) + if (!xEU5MXOBDLHEnableSignaller || + !xEU5MXOBDLHAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); + + // + XMarketConditions xMConditions2 = xEU5Provider.GenerateMarketConditions(2); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XOBDLHHasLongConditions() + xEU5Provider.XOBDLHHasLongConditions() // && // @@ -8002,53 +8233,61 @@ bool XAU5XOBDLHHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8067,93 +8306,27 @@ bool XAU5XOBDLHHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // - ( - false) - // - ) - // - || - // - // XOBDLH Long ... - // PriceUnderSignal ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - false) - // - ) - // - || - // - // XOBDLH Long ... - // PriceUnderSignal ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // ( // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHMAMCVale && - mConditions.isXCHMALCVale && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale) - // - || - // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHMASCVale && - mConditions.isXCHMAMCVale && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXCHMAMCVale && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXCHMASCUnderMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentUnderFarest) - // - || - // - (mConditions.isXAMAVale && - mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMASCVale && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXTMStartBearish && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXLHPriceCrossedUnderSignal) + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMALCVale && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHLHSCMCLLSame) + // + ) + // + ) // ) // @@ -8161,22 +8334,109 @@ bool XAU5XOBDLHHasLongSignal() // || // - // XOBDLH Long ... // PriceUnderSignal ... - // Not Same LL or HH in Lenght ... - ((!mConditions.isXLHHHSameInLength && + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + false + // + ) + // + ) + // + || + // + // PriceUnderSignal ... + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // - // Check if SC Fast Under Slow ... + ((mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHLLDecreased && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTSCurrentUnderFarest) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTMEndBearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame) + // + ) + // + ) + // + || + // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXTMVale && + mConditions.isXLHLLDecreased && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXAMAStartBearish) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest) + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHLHMCLCHHSame) + // + || // ((mConditions.isXTMVale && mConditions.isXAMAVale && - mConditions.isXCHMAMCVale) && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHSameLLs) && ( // (mConditions.isXCHMALCVale && @@ -8185,9 +8445,9 @@ bool XAU5XOBDLHHasLongSignal() // || // - (mConditions.isXCHMASCVale && - mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsDown) + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased) // ) // @@ -8195,20 +8455,116 @@ bool XAU5XOBDLHHasLongSignal() // || // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHMASCVale && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) + // + || + // + ((mConditions.isXCHMASCVale && + mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCLLSame) && + ( + // + mConditions.isXTSCurrentMax + // + || + // + mConditions.isXLHLowAttachedLL + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + // PriceUnderSignal ... + // Not Same LL or HH in Lenght ... + ((!mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale) // || // - ((mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMAMCFastUnderSlow) && - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastUnderSlow)) + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTSCurrentUnderFarest) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHMALCPeak && + mConditions.isXTMEndBearish && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTMNeutural && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCLLSame) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXTMStartBearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXAMAStartBearish) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXTSAllSame && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXTMStartBearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXLHLowAttachedLL) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXCHLHSameLLs) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXAMANeutural && + mConditions.isXTMStartBullish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDSignalCrossedOverBear) // ) // @@ -8235,53 +8591,61 @@ bool XAU5XOBDLHHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8305,53 +8669,61 @@ bool XAU5XOBDLHHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8371,29 +8743,29 @@ bool XAU5XOBDLHHasLongSignal() // // XOBDLH Short Signal Checking ... -bool XAU5XOBDLHHasShortSignal() +bool XEU5XOBDLHHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXOBDLHEnableSignaller || - !xAU5MXOBDLHAllowShortSignals) + if (!xEU5MXOBDLHEnableSignaller || + !xEU5MXOBDLHAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XOBDLHHasShortConditions() + xEU5Provider.XOBDLHHasShortConditions() // && // @@ -8411,50 +8783,73 @@ bool XAU5XOBDLHHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // - ( - false) - // - ) - // - || - // - // XOBDLH Short ... - // PriceInSignalRange ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // ( // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest) + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + ((mConditions.isXTMNeutural && + mConditions.isXAMANeutural) && + ( + // + (mConditions.isXCHMALCPeak && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMASCCrossedUnderMax) + // + ) + // + ) + // + ) + // + ) // - || + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMAMCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) + (((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp && + mConditions.isXCHMALCPeak && + mConditions.isXCHMALCTrendsUp) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + ) + // + ) // ) // @@ -8462,27 +8857,31 @@ bool XAU5XOBDLHHasShortSignal() // || // - // XOBDLH Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8501,53 +8900,61 @@ bool XAU5XOBDLHHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8568,20 +8975,21 @@ bool XAU5XOBDLHHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -8589,84 +8997,68 @@ bool XAU5XOBDLHHasShortSignal() // ( // - ((mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMAMCFastOverSlow) && - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastOverSlow)) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXCHMASCOverMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXCHMASCOverMax && - mConditions.isXLHLLIncreased && - mConditions.isXTMStartBullish && - mConditions.isXTDBullOverBear && - mConditions.isXAMAStartBullish && - mConditions.isXCHMASCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear) && + ((mConditions.isXFIOverZero && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTDBullOverBear) && ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMALCFastOverSlow && + (mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalOverBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTMEndBullish && mConditions.isXTSCurrentOverFarest) // || // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTMEndBullish) // || // - ((mConditions.isXTSCurrentMin && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentUnderMediest) && + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMin && + mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + || + // + (mConditions.isXFIOverZero && ( // - (mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXLHHighAttachedHH && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXCHMAMCFastUnderSlow) + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest) // ) // @@ -8678,27 +9070,143 @@ bool XAU5XOBDLHHasShortSignal() // || // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXCHMALCFastOverSlow) && + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && ( // - (mConditions.isXCHMASCOverMax && - mConditions.isXCHMALCTrendsUp && - mConditions.isXLHHighAttachedHH) + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + ((mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) && + ( + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + (mConditions.isXCHLHSameHHs && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) && + ( + // + (mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullCrossedOverBear) // || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXCHMASCTrendsUp && + mConditions.isXCHMAMCTrendsUp) + // + || + // + ((mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak) + // + ) + // + ) + // + ) + // + ) + // + || + // + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( // (mConditions.isXCHMASCPeak && mConditions.isXCHMAMCPeak && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentOverMediest) + mConditions.isXCHMALCPeak && + mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + || + // + ((mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) && + ( + // + (mConditions.isXCHMAMCTrendsUp && + mConditions.isXCHMALCTrendsUp) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear && + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) // ) // @@ -8710,20 +9218,41 @@ bool XAU5XOBDLHHasShortSignal() // || // - // XOBDLH Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMASCTrendsUp && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + ) + // + ) + // + ) // ) // || // - // XOBDLH Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -8731,62 +9260,14 @@ bool XAU5XOBDLHHasShortSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXAMANeutural && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear) && - (mConditions.isXTSAllSame && - mConditions.isXCHMASCPeak && - mConditions.isXCHMALCVale && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMALCFastUnderSlow)) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMASCPeak) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXTSCurrentOverFarest && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMin && - mConditions.isXLHHHIncreased && + (mConditions.isXTMStartBullish && mConditions.isXTDBullOverBear && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXTDSignalOverBear && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXCHMALCFastOverSlow) + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalOverBear) // ) // @@ -8794,108 +9275,55 @@ bool XAU5XOBDLHHasShortSignal() // || // - ((mConditions.isXCHMAMCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame) && + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) && ( // - ((mConditions.isXCHMALCPeak && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXCHMASCOverMax && - mConditions.isXTDSignalUnderBear) && - ( - // - (mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp && - mConditions.isXTSCurrentOverFarest) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp) - // - ) - // - ) + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXFIOverZero && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest) + // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMASCTrendsUp && + mConditions.isXCHMAMCTrendsUp) + // + ) + // + ) + // + || + // + (((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak && + mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && - mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMALCTrendsUp) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXLHHHIncreased && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMASCPeak) && - ( - // - (mConditions.isXTSAllSame && - mConditions.isXCHMALCVale && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMASCTrendsUp && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverMediest) && - ( - // - (mConditions.isXCHMASCOverMax && - mConditions.isXTDBullOverBear) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDBearishVale && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMASCTrendsDown) - // - ) - // - ) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTDSignalVale && - mConditions.isXTDBullishVale && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverNearest) - // - ) - // - ) + mConditions.isXFIOverZero && + mConditions.isXCHLHSameHHs && + mConditions.isXTSCurrentMax && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) // ) // @@ -8925,53 +9353,61 @@ bool XAU5XOBDLHHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XOBDLH Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XOBDLH Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -8991,29 +9427,29 @@ bool XAU5XOBDLHHasShortSignal() // // XCHMACC Long Signal Checking ... -bool XAU5XCHMACCHasLongSignal() +bool XEU5XCHMACCHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMACCEnableSignaller || - !xAU5MXCHMACCAllowLongSignals) + if (!xEU5MXCHMACCEnableSignaller || + !xEU5MXCHMACCAllowLongSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMACCHasLongConditions() + xEU5Provider.XCHMACCHasLongConditions() // && // @@ -9031,73 +9467,148 @@ bool XAU5XCHMACCHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // - ( - false) - // - ) - // - || - // - // XCHMACC Long ... - // PriceInSignalRange ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - false) - // - ) - // - || - // - // XCHMACC Long ... - // PriceInSignalRange ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDSignalUnderBear) + (mConditions.isXCHMAMCTrendsDown && + ( + // + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + (mConditions.isXTSCurrentOverFarest || + mConditions.isXTDSignalCrossedUnderBear)) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMANeutural && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXTMStartBullish && + mConditions.isXFICrossedUnderZero) + // + || + // + ( + (mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXAMAStartBullish) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHLLDecreased) + // + ) + // + ) + // + ) + // + ) + // + )) // || // - (mConditions.isXAMANeutural && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTDBullCrossedOverBear) + (((mConditions.isXTMNeutural && + mConditions.isXTMEndBullish && + mConditions.isXFICrossedUnderZero) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullOverBear)) + // + && + // + (mConditions.isXCHMALCPeak && + ( + // + mConditions.isXCHMALCTrendsDown + // + || + // + (mConditions.isXCHLHMCLCHHSame && + (mConditions.isXTDSignalUnderBear || + mConditions.isXTDSignalCrossedUnderBear)) + // + ) + // + ) + // + ) // ) // ) + // + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + false // - || + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( + // + (mConditions.isXCHMAMCTrendsDown && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + || // - (mConditions.isXCHMALCPeak && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXLHLLIncreased && + (mConditions.isXTDBullOverBear && + mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedUnderMediest) + mConditions.isXTSCurrentUnderFarest) // ) // @@ -9109,14 +9620,16 @@ bool XAU5XCHMACCHasLongSignal() // || // - // XCHMACC Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -9135,7 +9648,6 @@ bool XAU5XCHMACCHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -9143,50 +9655,77 @@ bool XAU5XCHMACCHasLongSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXTMNeutural && - mConditions.isXTSCurrentMax && - mConditions.isXAMAStartBullish && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedOverBear) - // - || - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish) && + (mConditions.isXCHMAMCTrendsDown && ( // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) - // - || - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXCHMASCOverMin && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderMediest) + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXTDSignalUnderBear && + ( + // + (mConditions.isXAMAVale && + mConditions.isXAMABearish) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMAStartBearish && + mConditions.isXFICrossedUnderZero) + // + || + // + ((mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish) && + mConditions.isXTMStartBullish && + mConditions.isXFICrossedOverZero) + // + || + // + (mConditions.isXCHLHMCLCHHSame && + mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTSCurrentUnderFarest) + // + ) + // + ) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDBullUnderBear) + // + ) + // + ) // || // - (mConditions.isXTSCurrentMax && + ((mConditions.isXAMABearish && + (mConditions.isXTMNeutural || + mConditions.isXTMBearish)) && + mConditions.isXTSCurrentUnderMediest && + (mConditions.isXTDBullCrossedUnderBear || + (mConditions.isXTDBullUnderBear && + mConditions.isXFICrossedUnderZero))) + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDSignalCrossedOverBear) + mConditions.isXLHPriceCrossedUnderSignal) // ) // @@ -9202,40 +9741,102 @@ bool XAU5XCHMACCHasLongSignal() // || // - // XCHMACC Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMAMCTrendsDown && + ( + // + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXTSCurrentMax && + ( + // + (mConditions.isXAMABearish && + mConditions.isXTDBullCrossedOverBear) + // + || + // + (mConditions.isXTMStartBullish && + ( + // + ( + // + mConditions.isXAMAStartBullish + // + || + // + (mConditions.isXAMAEndBearish && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + (mConditions.isXLHLLDecreased && + mConditions.isXTMStartBullish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + ) // ) // || // - // XCHMACC Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -9256,7 +9857,6 @@ bool XAU5XCHMACCHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -9264,50 +9864,110 @@ bool XAU5XCHMACCHasLongSignal() // ( // - (mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXRSICrossedOverLongExit) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHMASCOverMax && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMASCTrendsDown && - mConditions.isXTDSignalUnderBear) - // - || - // - ((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && ( // - (mConditions.isXCHMALCPeak && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest) + (mConditions.isXTMEndBullish && + mConditions.isXAMAEndBullish) // || // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXCHMASCOverMax && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedOverNearest) + (mConditions.isXTSCurrentMax && + (mConditions.isXTMBullish || + mConditions.isXTMStartBullish) && + (mConditions.isXAMABullish || + mConditions.isXAMAStartBullish) && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + mConditions.isXTDBearishVale + // + || + // + mConditions.isXRSICrossedOverLongExit + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXTDSignalUnderBear && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXTSCurrentUnderFarest) + // + ) + // + ) + // + ) + // + ) + // + || + // + (mConditions.isXCHMASCTrendsDown && + ( + // + (mConditions.isXCHMALCPeak && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXFIUnderZero && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXLHPriceCrossedOverSignal) + // + ) + // + ) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame && + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsDown)) // ) // @@ -9315,33 +9975,80 @@ bool XAU5XCHMACCHasLongSignal() // || // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && ( // - mConditions.isXCHMALCPeak + (mConditions.isXCHMALCPeak && + ( + // + ( + // + mConditions.isXCHMALCTrendsDown + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + ( + mConditions.isXTDSignalUnderBear && + ( + // + mConditions.isXTSAllSame + // + || + // + ((mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest)) + // + ) + // + ) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXCHMALCTrendsUp && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXTDBullOverBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXLHPriceCrossedOverSignal && + (mConditions.isXCHMAMCTrendsDown && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow))) + // + || + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear && + mConditions.isXCHMAMCTrendsDown) + // + ) + // + ) + // + ) + // + ) + // + ) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentMax && - mConditions.isXCHMASCOverMax && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedOverBear) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMax && - mConditions.isXCHMASCOverMax && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) + mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) // ) // @@ -9353,7 +10060,6 @@ bool XAU5XCHMACCHasLongSignal() // || // - // XCHMACC Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -9361,33 +10067,75 @@ bool XAU5XCHMACCHasLongSignal() // ( // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish) && + ((mConditions.isXCHMALCPeak && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && ( // - (mConditions.isXCHLHSameHHs && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && + (mConditions.isXCHMALCTrendsDown && + ( + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish) && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) + // + ) + // + ) + // + ) + // + ) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHLHSameHHs && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderNearest) // || // - (mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullUnderBear && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalUnderBear && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverNearest) + ( + (mConditions.isXAMABullish && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXTMEndBullish && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXTMBullish && + mConditions.isXTSCurrentMax) && + ( + // + (mConditions.isXTDBullOverBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTDBullCrossedOverBear && + mConditions.isXLHPriceCrossedOverSignal) + // + ) + // + ) + // + ) + // + ) // ) // @@ -9395,38 +10143,56 @@ bool XAU5XCHMACCHasLongSignal() // || // - ((mConditions.isXTDBearishVale && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - (mConditions.isXTSAllSame && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentCrossedOverNearest) + ( + (mConditions.isXCHMAMCTrendsDown && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish) + // + || + (mConditions.isXLHLLDecreased && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXCHMAMCPeak && + ( + // + (mConditions.isXTDBearishVale && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) + // + )) + // + || + // + (mConditions.isXCHMASCPeak && + mConditions.isXCHLHSameHHs && + (mConditions.isXTSCurrentUnderNearest || + mConditions.isXTSCurrentCrossedUnderNearest) && + (mConditions.isXTSCurrentUnderMediest || + mConditions.isXTSCurrentCrossedUnderMediest)) + // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXTMStartBullish && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH && + mConditions.isXTDSignalCrossedOverBear) + // + ) // ) // @@ -9438,7 +10204,6 @@ bool XAU5XCHMACCHasLongSignal() // || // - // XCHMACC Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -9446,51 +10211,71 @@ bool XAU5XCHMACCHasLongSignal() // ( // - (mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && - ( - // - mConditions.isXCHLHMCLCHHSame + (mConditions.isXCHMAMCTrendsDown && + ( + // + (mConditions.isXCHMALCPeak && + mConditions.isXTMNeutural && + mConditions.isXTMEndBullish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) // || // - (mConditions.isXTSCurrentMax && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedOverBear) + (mConditions.isXCHMALCTrendsDown && + ( + // + (((mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax) && + ( + // + mConditions.isXCHLHMCLCHHSame + // + || + // + (mConditions.isXTDSignalUnderBear && + mConditions.isXCHMALCPeak) + // + || + // + (mConditions.isXTDSignalUnderBear && + mConditions.isXFICrossedOverZero) + // + ) + // + ) + // + ) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXCHMAMCPeak && + mConditions.isXTMEndBullish && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTSCurrentUnderNearest) + // + ) + // + ) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHMALCPeak && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDSignalUnderBear) // ) // @@ -9502,7 +10287,6 @@ bool XAU5XCHMACCHasLongSignal() // || // - // XCHMACC Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -9510,33 +10294,87 @@ bool XAU5XCHMACCHasLongSignal() // ( // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // - mConditions.isXRSICrossedOverLongExit + (mConditions.isXCHMAMCTrendsDown && + ( + // + ((mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHLHSCMCHHSame) && + ( + // + mConditions.isXTSCurrentUnderNearest + // + || + // + (mConditions.isXLHLLIncreased && + mConditions.isXTDBullUnderBear && + mConditions.isXLHHighAttachedHH && + mConditions.isXTDSignalUnderBear && + mConditions.isXFICrossedUnderZero) + // + ) + // + ) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMALCTrendsDown && + ( + // + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXCHLHSameHHs && + mConditions.isXTSCurrentMax && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) // || // - (mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) - // - || - // - (mConditions.isXCHLHSameHHs && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullUnderBear && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentCrossedOverNearest) + ((mConditions.isXTMBullish && + mConditions.isXAMABullish && + (mConditions.isXTSCurrentMin || + mConditions.isXTSCurrentMax)) && + ( + // + (mConditions.isXCHMALCPeak && + mConditions.isXCHLHSameHHs && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXLHLLIncreased && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTDBullUnderBear && + mConditions.isXLHHighAttachedHH && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) // ) // @@ -9566,53 +10404,61 @@ bool XAU5XCHMACCHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -9632,29 +10478,29 @@ bool XAU5XCHMACCHasLongSignal() // // XCHMACC Short Signal Checking ... -bool XAU5XCHMACCHasShortSignal() +bool XEU5XCHMACCHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMACCEnableSignaller || - !xAU5MXCHMACCAllowShortSignals) + if (!xEU5MXCHMACCEnableSignaller || + !xEU5MXCHMACCAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMACCHasShortConditions() + xEU5Provider.XCHMACCHasShortConditions() // && // @@ -9672,7 +10518,6 @@ bool XAU5XCHMACCHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -9680,49 +10525,88 @@ bool XAU5XCHMACCHasShortSignal() // ( // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXTMStartBearish && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMALCVale && - mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentCrossedOverFarest) - // - || - // - ((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && + (mConditions.isXTDBullOverBear && ( // - (mConditions.isXTMNeutural && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentCrossedUnderNearest) + (mConditions.isXAMANeutural && + mConditions.isXTMStartBullish && + mConditions.isXTDSignalOverBear && + mConditions.isXTSCurrentOverFarest) + // + || + // + ((mConditions.isXFIOverZero && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) && + ( + // + (mConditions.isXAMAStartBearish && + mConditions.isXFICrossedOverZero) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXAMAStartBullish) + // + ) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && + ( + // + // + ((mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXLHLLIncreased && + mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentOverNearest) + // + || + // + (((mConditions.isXTMNeutural || + mConditions.isXTMEndBearish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBullish)) && + ( + // + (mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXTSAllSame && + mConditions.isXCHMAMCTrendsDown) + // + ) + // + ) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin && + mConditions.isXCHMALCTrendsUp && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) // ) // @@ -9734,20 +10618,43 @@ bool XAU5XCHMACCHasShortSignal() // || // - // XCHMACC Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMALCVale && + ( + // + ((mConditions.isXTMEndBearish || + mConditions.isXTMNeutural) && + (mConditions.isXAMABearish || + mConditions.isXAMANeutural) && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) + // + ) + // + ) + // + ) // ) // || // - // XCHMACC Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -9755,16 +10662,60 @@ bool XAU5XCHMACCHasShortSignal() // ( // - ((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && + (mConditions.isXAMANeutural && + mConditions.isXTMStartBearish && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXCHMALCVale && ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest) + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTMStartBearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentOverMediest) + // + || + // + ((mConditions.isXTMNeutural || + mConditions.isXTMEndBearish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish) && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest) + // + || + // + ((mConditions.isXTMNeutural && + mConditions.isXAMABearish && + mConditions.isXTMEndBearish && + mConditions.isXTDBullOverBear) && + ( + // + mConditions.isXCHLHSCMCLLSame + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentCrossedOverFarest) + // + ) + // + ) + // + ) + // + ) // ) // @@ -9776,7 +10727,6 @@ bool XAU5XCHMACCHasShortSignal() // || // - // XCHMACC Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -9784,18 +10734,7 @@ bool XAU5XCHMACCHasShortSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && - ( - // - (mConditions.isXTDSignalVale && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXTSCurrentCrossedUnderNearest) - // - ) - // - ) + false // ) // @@ -9816,7 +10755,6 @@ bool XAU5XCHMACCHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -9824,204 +10762,28 @@ bool XAU5XCHMACCHasShortSignal() // ( // - (mConditions.isXCHMASCUnderMin && + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullOverBear && + mConditions.isXAMAStartBearish && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverNearest) - // - || - // - ((mConditions.isXCHMAMCVale && - !mConditions.isXCHMAMCTrendsUp && - !mConditions.isXCHMAMCTrendsDown) && - ( - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest) - // - ) - // - ) + (mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXTSCurrentMin && - mConditions.isXTMStartBearish && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXAMAStartBearish && - mConditions.isXTDSignalUnderBear && - mConditions.isXLHPriceCrossedUnderSignal) - // - || - // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && - ( - // - (mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverMediest && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentUnderMediest) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXLHLLIncreased && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTSCurrentOverFarest && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastUnderSlow) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXTDBearishVale && - mConditions.isXLHLLIncreased && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - ((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - ( - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullCrossedUnderBear) - // - ) - // - ) - // - || - // - (((mConditions.isXTSCurrentOverNearest || - mConditions.isXTSCurrentCrossedOverNearest) && - (mConditions.isXTSCurrentOverMediest || - mConditions.isXTSCurrentCrossedOverMediest)) && - ( - // - (mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame) - // - ) - // - ) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXAMABullish && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame) - // - || - // - ((mConditions.isXAMANeutural || - mConditions.isXAMAEndBullish) && - (mConditions.isXTMStartBearish) && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && - ( - // - ((mConditions.isXCHLHMCLCHHSame && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) && - ( - // - mConditions.isXAMANeutural - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - ) - // - ) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) && - ( - // - (mConditions.isXTSCurrentMin && - mConditions.isXLHHHDecreased && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedUnderBear) - // - ) - // - ) + mConditions.isXCHMASCUnderMin) // ) // @@ -10029,121 +10791,67 @@ bool XAU5XCHMACCHasShortSignal() // || // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) - // - || - // - // XCHMACC Short ... - // PriceUnderSignal ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - // - (mConditions.isXTDBullOverBear && - (mConditions.isXTSCurrentOverNearest || - mConditions.isXTSCurrentCrossedOverNearest)) - // - ) - // - ) - // - || - // - // XCHMACC Short ... - // PriceUnderSignal ... - // Check If HH is Same In Length ... - ((mConditions.isXLHHHSameInLength && - !mConditions.isXLHLLSameInLength) && - // - ( - // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && + ((mConditions.isXTMStartBearish && + mConditions.isXTDBullOverBear && + mConditions.isXAMAStartBearish) && ( // (mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHMASCUnderMin) + mConditions.isXTDSignalUnderBear) // || // - ((mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) && + (mConditions.isXTSCurrentOverFarest && + mConditions.isXLHPriceCrossedUnderSignal) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && + ( + // + mConditions.isXCHMALCTrendsDown + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXFIOverZero && + mConditions.isXFICrossedOverZero) + // + || + // + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin) && ( // - (mConditions.isXTSCurrentOverNearest && + (mConditions.isXFICrossedUnderZero && + mConditions.isXTDBullCrossedUnderBear) + // + || + // + (mConditions.isXCHMALCTrendsUp && mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // || // - (mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) - // - || - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXRSICrossedUnderShortExit) + (mConditions.isXTDBullOverBear && + mConditions.isXCHLHMCLCLLSame && + mConditions.isXFICrossedUnderZero && + mConditions.isXLHPriceCrossedUnderSignal) // ) // ) // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHMASCUnderMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXTSCurrentCrossedUnderFarest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) - // ) // ) @@ -10151,68 +10859,98 @@ bool XAU5XCHMACCHasShortSignal() || // ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXLHPriceCrossedUnderSignal) + (mConditions.isXCHMALCVale && + mConditions.isXTSCurrentOverNearest) + // + ) + // + ) + // + ) + // + ) + // + || + // + // PriceUnderSignal ... + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + ((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXCHMASCTrendsDown && + mConditions.isXTSCurrentOverNearest) // || // - ((mConditions.isXTSCurrentOverNearest || + (mConditions.isXCHMALCVale && + (mConditions.isXTSCurrentOverNearest || mConditions.isXTSCurrentCrossedOverNearest) && + (mConditions.isXTSCurrentOverFarest || + mConditions.isXTSCurrentCrossedOverFarest)) + // + ) + // + ) + // + ) + // + ) + // + || + // + // PriceUnderSignal ... + // Check If HH is Same In Length ... + ((mConditions.isXLHHHSameInLength && + !mConditions.isXLHLLSameInLength) && + // + ( + // + ((mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMin) && + ( + // + ((mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && ( // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - ) - // - ) - // - || - // - (mConditions.isXCHMASCUnderMin && - ( - // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXTSCurrentMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXRSICrossedUnderShortExit) + (mConditions.isXCHMALCVale && + mConditions.isXCHMALCTrendsUp) // || // - ((mConditions.isXTSCurrentOverNearest || - mConditions.isXTSCurrentCrossedOverNearest) && + ((mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) && ( // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXCHMASCVale) + // + || + // + ((mConditions.isXCHLHSameLLs && + mConditions.isXLHHHIncreased && + mConditions.isXLHLowAttachedLL) && ( // - ((mConditions.isXCHLHMCLCHHSame) && - ( - // - (mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverFarest) - // - || - // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXFICrossedOverZero) - // - ) - // - ) + mConditions.isXCHMAMCTrendsDown + // + || + // + mConditions.isXCHMASCCrossedUnderMin // ) // @@ -10226,6 +10964,26 @@ bool XAU5XCHMACCHasShortSignal() // ) // + || + // + ((mConditions.isXCHMALCVale && + mConditions.isXTDBullCrossedUnderBear) && + ( + // + (mConditions.isXCHLHSCMCLLSame && + mConditions.isXLHLowAttachedLL) + // + || + // + (mConditions.isXCHLHMCLCHHSame && + mConditions.isXCHMALCTrendsDown && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) + // ) // ) @@ -10236,7 +10994,6 @@ bool XAU5XCHMACCHasShortSignal() // || // - // XCHMACC Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -10244,41 +11001,38 @@ bool XAU5XCHMACCHasShortSignal() // ( // - (mConditions.isXCHMASCUnderMin && + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMAMCVale && + mConditions.isXTSCurrentMin && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && ( // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && + ((mConditions.isXAMABearish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) && ( // - mConditions.isXRSICrossedUnderShortExit + (mConditions.isXTMEndBearish && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest) // || // - (mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) - // - || - // - (mConditions.isXTDBullOverBear && - (mConditions.isXTSCurrentOverMediest || - mConditions.isXTSCurrentCrossedOverMediest)) - // - || - // - (mConditions.isXCHLHSameLLs && + (mConditions.isXTMNeutural && mConditions.isXTSCurrentMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) + mConditions.isXCHLHSCMCLLSame && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) // ) // @@ -10286,14 +11040,19 @@ bool XAU5XCHMACCHasShortSignal() // || // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && + ((mConditions.isXTMBearish && + mConditions.isXAMABearish) && ( // - (mConditions.isXCHLHSameLLs && - mConditions.isXTSCurrentMin && - mConditions.isXLHLowAttachedLL && - mConditions.isXCHMASCCrossedUnderMin) + (mConditions.isXCHMALCVale && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverNearest) + // + || + // + (mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentOverMediest) // ) // @@ -10324,7 +11083,6 @@ bool XAU5XCHMACCHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10332,30 +11090,31 @@ bool XAU5XCHMACCHasShortSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && + ((mConditions.isXCHMALCVale && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && ( // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && + ((mConditions.isXTMNeutural && + mConditions.isXAMANeutural) && ( // - ((mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedUnderBear) && - ( - // - mConditions.isXTSCurrentOverFarest - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) - // - ) - // - ) + (mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentOverMediest) + // + || + // + (mConditions.isXFIUnderZero && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullUnderBear && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest && + mConditions.isXTSCurrentCrossedUnderFarest && + mConditions.isXTSCurrentCrossedUnderNearest && + mConditions.isXTSCurrentCrossedUnderMediest) // ) // @@ -10363,45 +11122,142 @@ bool XAU5XCHMACCHasShortSignal() // || // - (mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) + (mConditions.isXTSCurrentOverFarest && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXTMEndBearish && + mConditions.isXAMAEndBearish && + mConditions.isXTDBullOverBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMANeutural && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXFIOverZero && + mConditions.isXTMStartBullish && + mConditions.isXTDBullOverBear && + mConditions.isXAMAStartBullish && + mConditions.isXTSCurrentOverNearest) + // + ) + // + ) // || // - (mConditions.isXTDBullOverBear && + ((mConditions.isXTDSignalVale && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullishVale && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXAMANeutural) + // + ) + // + ) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMANeutural && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMin && + mConditions.isXCHMASCOverMin && mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) + mConditions.isXCHMASCUnderMax && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderMediest) // ) // ) // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCVale && + mConditions.isXAMANeutural && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverNearest) + // + || + // + ((mConditions.isXTMNeutural || + mConditions.isXTMEndBearish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish) && + mConditions.isXFIOverZero && + mConditions.isXTDBullOverBear && + mConditions.isXFICrossedOverZero && + mConditions.isXTSCurrentOverNearest) + // ) // ) // || // - // XCHMACC Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXFIOverZero && + mConditions.isXTSCurrentMax && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest) + // + ) // ) // || // - // XCHMACC Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -10409,25 +11265,60 @@ bool XAU5XCHMACCHasShortSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && + ((mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMin) && ( // - (mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderFarest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) + (mConditions.isXTMVale && + mConditions.isXAMAVale) // || // (mConditions.isXTMBearish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXLHLLIncreased && + mConditions.isXCHMALCTrendsUp && + mConditions.isXAMAStartBearish) + // + || + // + ((mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTDSignalVale && + mConditions.isXTDBullishVale && + mConditions.isXLHLLIncreased && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXTSCurrentMin && + mConditions.isXAMAEndBullish && + mConditions.isXTMStartBearish && + mConditions.isXTDBullOverBear && + mConditions.isXCHMAMCTrendsDown) + // + || + // + (mConditions.isXAMAVale && + mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMin && + mConditions.isXTDBullUnderBear && + mConditions.isXCHMALCTrendsDown && + mConditions.isXTDSignalUnderBear && + mConditions.isXTSCurrentUnderFarest && + mConditions.isXTSCurrentUnderNearest && + mConditions.isXTSCurrentUnderMediest) + // + ) + // + ) // ) // @@ -10439,14 +11330,16 @@ bool XAU5XCHMACCHasShortSignal() // || // - // XCHMACC Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -10470,53 +11363,61 @@ bool XAU5XCHMACCHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMACC Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMACC Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -10536,29 +11437,42 @@ bool XAU5XCHMACCHasShortSignal() // // XCHMAMN Long Signal Checking ... -bool XAU5XCHMAMNHasLongSignal() +bool XEU5XCHMAMNHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMAMNEnableSignaller || - !xAU5MXCHMAMNAllowLongSignals) + if (!xEU5MXCHMAMNEnableSignaller || + !xEU5MXCHMAMNAllowLongSignals) { return result; } + // + ENUM_XCHMA_CYCLES cycles[]; + Add( + X_XCHMA_CYCLE_MEDIUM, + cycles); + Add( + X_XCHMA_CYCLE_LONG, + cycles); + + // + double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles); + double xCHMANonSCMin2 = XCHMAGetCyclesMinValue(2, cycles); + // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMAMNHasLongConditions() + xEU5Provider.XCHMAMNHasLongConditions() // && // @@ -10576,7 +11490,6 @@ bool XAU5XCHMAMNHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10584,12 +11497,52 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown) && ( // - (mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && + ( + // + (mConditions.isXCHMALCVale && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHMAMCVale && + mConditions.isXCHLHMCLCLLSame) + // + || + // + (mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased && + mConditions.isXLHLLDecreased && + mConditions.isXTMStartBullish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXLHHHDecreased && + mConditions.isXLHLLDecreased && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // @@ -10603,7 +11556,6 @@ bool XAU5XCHMAMNHasLongSignal() // || // - // XCHMAMN Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10611,46 +11563,9 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - (((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) || - (mConditions.isXTMEndBullish && - mConditions.isXAMAEndBullish)) && - ( - // - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentUnderMediest) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastUnderSlow) && - ( - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalOverBear && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) - // - ) - // - ) - // - ) - // - ) + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) // ) // @@ -10658,7 +11573,6 @@ bool XAU5XCHMAMNHasLongSignal() // || // - // XCHMAMN Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -10666,45 +11580,7 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - (mConditions.isXTMBullish && - mConditions.isXAMABullish && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTDSignalUnderBear) - // - || - // - (mConditions.isXCHMALCVale && - mConditions.isXAMANeutural && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXCHMASCFastCrossedUnderSlow) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedOverBear) - // - ) - // - ) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXCHMASCFastCrossedUnderSlow && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverNearest) + false // ) // @@ -10712,14 +11588,30 @@ bool XAU5XCHMAMNHasLongSignal() // || // - // XCHMAMN Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + (((mConditions.isXTMVale || + mConditions.isXTMNeutural) && + mConditions.isXTMEndBearish) && + (mConditions.isXAMANeutural || + mConditions.isXAMAEndBearish) && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) // ) // @@ -10738,7 +11630,6 @@ bool XAU5XCHMAMNHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10746,18 +11637,61 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) && ( // - (mConditions.isXAMAVale && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && + (mConditions.isXCHMAMCVale && + mConditions.isXLHLLDecreased && + mConditions.isXCHLHMCLCHHSame) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + || + // + // LC Vale ... + (mConditions.isXCHMALCVale && + ( + // + (mConditions.isXCHMAMCVale && + ( + // + (mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + mConditions.isXCHMASCTrendsDown + // + || + // + (mConditions.isXTMVale && + mConditions.isXAMAVale && + mConditions.isXLHLLIncreased && + mConditions.isXCHLHMCLCHHSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) // ) // @@ -10769,40 +11703,70 @@ bool XAU5XCHMAMNHasLongSignal() // || // - // XCHMAMN Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + || + // + ((mConditions.isXCHMAMCVale && + mConditions.isXCHMAMCTrendsUp && + (mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow)) && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) // ) // || // - // XCHMAMN Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + (mConditions.isXCHMAMCVale && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMN Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -10823,7 +11787,6 @@ bool XAU5XCHMAMNHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10831,116 +11794,70 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCVale && - mConditions.isXTSCurrentMax && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown) && ( // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXTDSignalCrossedOverBear && - mConditions.isXTSCurrentCrossedOverNearest && - mConditions.isXTSCurrentCrossedOverMediest) + ((mConditions.isXCHMASCPeak && + mConditions.isXCHMALCVale) && + ( + // + mConditions.isXCHMAMCVale + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXLHHHDecreased && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + ) + // + ) // || // - (mConditions.isXTSCurrentMax && - mConditions.isXLHLLIncreased && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDBullUnderBear && + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXCHLHMCLCLLSame) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedOverFarest) - // - ) - // - ) - // - || - // - (((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) && - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow)) && - ( - // - (mConditions.isXTDSignalVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDBullishVale && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalOverBear) - // - ) - // - ) - // - || - // - (((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow)) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverMediest) + mConditions.isXTSCurrentUnderNearest) // || // - ((mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax && - mConditions.isXTDSignalUnderBear) && + (mConditions.isXCHMALCVale && ( // - mConditions.isXLHPriceCrossedOverSignal + mConditions.isXCHMASCTrendsDown // || // - (mConditions.isXTDBullUnderBear && - mConditions.isXCHMASCFastCrossedOverSlow) - // - ) - // - ) - // - || - // - ((mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverNearest) && - ( - // - (mConditions.isXCHMASCPeak && + (mConditions.isXTMBullish && + mConditions.isXAMABullish && mConditions.isXTSCurrentMax && - mConditions.isXCHMASCTrendsDown) + mConditions.isXTDBearishVale) // || // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCVale && - mConditions.isXCHMALCVale && - mConditions.isXTSCurrentMax) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCLLSame && + (mConditions.isXAMANeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDBearishVale && mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish) + mConditions.isXTDSignalUnderBear) // ) // @@ -10950,13 +11867,27 @@ bool XAU5XCHMAMNHasLongSignal() // ) // + || + // + (mConditions.isXCHMALCTrendsDown && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + (mConditions.isXCHLHMCLCHHSame || + mConditions.isXCHLHMCLCLLSame) && + mConditions.isXTSCurrentUnderNearest) + // + ) + // + ) + // ) // ) // || // - // XCHMAMN Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -10964,99 +11895,82 @@ bool XAU5XCHMAMNHasLongSignal() // ( // - (mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedUnderNearest && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverFarest && - mConditions.isXTSCurrentCrossedOverMediest) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXAMAStartBullish && - mConditions.isXTDBullUnderBear && - mConditions.isXLHHighAttachedHH && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentOverMediest && - mConditions.isXLHPriceCrossedOverSignal) - // - || - // - ((mConditions.isXCHMASCPeak && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastOverSlow) && + ((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown) && ( // - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) + mConditions.isXCHMALCVale + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + ((mConditions.isXCHLHSCMCHHSame && + mConditions.isXLHHighAttachedHH) && + ( + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale) + // + || + // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear) + // + || + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHMALCVale && + mConditions.isXTSCurrentMax && + mConditions.isXTDBullUnderBear) + // + ) + // + ) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentMax && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentCrossedOverFarest) + mConditions.isXCHLHSCMCLLSame && + mConditions.isXTDSignalUnderBear) + // + || + // + mConditions.isXCHMASCTrendsDown // ) // ) // - || - // - ((mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastUnderSlow) && - ( - // - (mConditions.isXCHMASCPeak && - mConditions.isXCHMAMCVale && - mConditions.isXTSCurrentMax && - mConditions.isXLHHHDecreased && - mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow && - mConditions.isXCHMAMCFastUnderSlow) - // - ) - // - ) - // - || - // - (mConditions.isXTSCurrentMax && - mConditions.isXTMStartBullish && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullOverBear && - mConditions.isXAMAStartBullish && - mConditions.isXTDSignalOverBear && - mConditions.isXCHMAMCFastUnderSlow && - mConditions.isXCHMALCFastUnderSlow && - mConditions.isXLHPriceCrossedOverSignal && - mConditions.isXTSCurrentCrossedOverMediest) - // ) // ) // || // - // XCHMAMN Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -11065,27 +11979,8 @@ bool XAU5XCHMAMNHasLongSignal() ( // (mConditions.isXCHMASCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - ((mConditions.isXCHMALCVale && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastUnderSlow) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMAMCFastUnderSlow) - // - ) - // - ) + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) // ) // @@ -11093,14 +11988,50 @@ bool XAU5XCHMAMNHasLongSignal() // || // - // XCHMAMN Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + // LC Vale ... + (mConditions.isXCHMALCVale && + ( + // + (mConditions.isXCHMAMCVale && + ( + // + (mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXTDBullUnderBear && + mConditions.isXLHHighAttachedHH && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + ) // ) // @@ -11124,53 +12055,63 @@ bool XAU5XCHMAMNHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) // ) // || // - // XCHMAMN Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11190,29 +12131,29 @@ bool XAU5XCHMAMNHasLongSignal() // // XCHMAMN Short Signal Checking ... -bool XAU5XCHMAMNHasShortSignal() +bool XEU5XCHMAMNHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMAMNEnableSignaller || - !xAU5MXCHMAMNAllowShortSignals) + if (!xEU5MXCHMAMNEnableSignaller || + !xEU5MXCHMAMNAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMAMNHasShortConditions() + xEU5Provider.XCHMAMNHasShortConditions() // && // @@ -11230,53 +12171,80 @@ bool XAU5XCHMAMNHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTSAllSame && + mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalOverBear) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMN Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXTMBearish || + mConditions.isXTMNeutural) && + mConditions.isXAMANeutural && + mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + mConditions.isXLHLLIncreased && + mConditions.isXTSCurrentOverNearest) + // + ) // ) // || // - // XCHMAMN Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11295,7 +12263,6 @@ bool XAU5XCHMAMNHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -11303,47 +12270,26 @@ bool XAU5XCHMAMNHasShortSignal() // ( // - (mConditions.isXCHMASCVale && - mConditions.isXCHMASCTrendsDown) - // - || - // - (mConditions.isXCHMAMCVale && - mConditions.isXCHMAMCTrendsDown) - // - || - // - (mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - || - // - (mConditions.isXTMVale && - mConditions.isXAMAVale && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMALCFastOverSlow && - mConditions.isXTSCurrentOverNearest) - // - || - // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && + ((mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentOverFarest) && ( // - (mConditions.isXCHMALCVale && - mConditions.isXTMNeutural && + (mConditions.isXFIOverZero && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCCrossedUnderMin && - mConditions.isXTSCurrentCrossedUnderFarest) + mConditions.isXAMAEndBullish && + mConditions.isXTMStartBearish) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverNearest && + mConditions.isXTSCurrentOverMediest && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) // ) // @@ -11355,40 +12301,52 @@ bool XAU5XCHMAMNHasShortSignal() // || // - // XCHMAMN Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMALCVale && + mConditions.isXTDBullOverBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXFICrossedUnderZero && + mConditions.isXTSCurrentOverFarest) + // + ) // ) // || // - // XCHMAMN Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + mConditions.isXRSICrossedUnderShortExit + // + ) // ) // || // - // XCHMAMN Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11409,53 +12367,91 @@ bool XAU5XCHMAMNHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXTSCurrentOverFarest && + (mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow)) && + ( + // + (mConditions.isXTMNeutural && + mConditions.isXAMAStartBearish) + // + || + // + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMASCVale && + mConditions.isXCHMAMCVale && + mConditions.isXCHMALCVale && + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow))) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMN Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXAMANeutural && + mConditions.isXTMEndBearish && + mConditions.isXTSCurrentOverMediest) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMN Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11479,53 +12475,61 @@ bool XAU5XCHMAMNHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMN Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMN Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11545,29 +12549,41 @@ bool XAU5XCHMAMNHasShortSignal() // // XCHMAMX Long Signal Checking ... -bool XAU5XCHMAMXHasLongSignal() +bool XEU5XCHMAMXHasLongSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMAMXEnableSignaller || - !xAU5MXCHMAMXAllowLongSignals) + if (!xEU5MXCHMAMXEnableSignaller || + !xEU5MXCHMAMXAllowLongSignals) { return result; } + // + ENUM_XCHMA_CYCLES cycles[]; + Add( + X_XCHMA_CYCLE_MEDIUM, + cycles); + Add( + X_XCHMA_CYCLE_LONG, + cycles); + + // + double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles); + // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMAMXHasLongConditions() + xEU5Provider.XCHMAMXHasLongConditions() // && // @@ -11585,7 +12601,6 @@ bool XAU5XCHMAMXHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -11593,48 +12608,52 @@ bool XAU5XCHMAMXHasLongSignal() // ( // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && + false + // + ) + // + ) + // + || + // + // PriceInSignalRange ... + // Check If LL Same In Length ... + ((mConditions.isXLHLLSameInLength && + !mConditions.isXLHHHSameInLength) && + // + ( + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXTMEndBullish && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentUnderNearest && - mConditions.isXTSCurrentCrossedUnderNearest) - // - || - // - (mConditions.isXTSCurrentMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest) - // - || - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMax && - mConditions.isXTDBearishVale && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear && - mConditions.isXCHMASCFastCrossedOverSlow && - mConditions.isXTSCurrentCrossedOverNearest) + (mConditions.isXCHMALCPeak && + ( + // + (mConditions.isXCHMALCTrendsDown && + ( + // + ( + // + mConditions.isXCHMASCPeak + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural && + mConditions.isXCHLHSameHHs && + mConditions.isXLHHighAttachedHH && + mConditions.isXTDSignalUnderBear) + // + ) + // + ) + // + ) + // + ) + // + ) // ) // @@ -11646,20 +12665,6 @@ bool XAU5XCHMAMXHasLongSignal() // || // - // XCHMAMX Long ... - // PriceInSignalRange ... - // Check If LL Same In Length ... - ((mConditions.isXLHLLSameInLength && - !mConditions.isXLHHHSameInLength) && - // - ( - false) - // - ) - // - || - // - // XCHMAMX Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -11667,25 +12672,7 @@ bool XAU5XCHMAMXHasLongSignal() // ( // - (((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow)) && - ( - // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTMStartBearish && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastCrossedUnderSlow) - // - ) - // - ) + false // ) // @@ -11693,14 +12680,16 @@ bool XAU5XCHMAMXHasLongSignal() // || // - // XCHMAMX Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11719,7 +12708,6 @@ bool XAU5XCHMAMXHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -11727,22 +12715,7 @@ bool XAU5XCHMAMXHasLongSignal() // ( // - ((mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTDBearishVale && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentUnderFarest && - mConditions.isXTSCurrentUnderMediest) - // - ) - // - ) + false // ) // @@ -11750,20 +12723,21 @@ bool XAU5XCHMAMXHasLongSignal() // || // - // XCHMAMX Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -11771,33 +12745,7 @@ bool XAU5XCHMAMXHasLongSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - ( - mConditions.isXCHMAMCPeak && - ( - // - ((mConditions.isXTMBullish && - mConditions.isXAMABullish) && - ( - // - (mConditions.isXTSCurrentMax && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) - // - ) - // - ) - // - ) - // - ) - // - )) + false // ) // @@ -11805,14 +12753,16 @@ bool XAU5XCHMAMXHasLongSignal() // || // - // XCHMAMX Long ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11833,53 +12783,124 @@ bool XAU5XCHMAMXHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + (((mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow) && + (mConditions.isXCHMALCFastUnderSlow || + mConditions.isXCHMALCFastCrossedUnderSlow)) && + ( + // + (mConditions.isXLHHHDecreased && + mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear && + mConditions.isXLHPriceCrossedOverSignal) + // + || + // + (mConditions.isXTMNeutural && + mConditions.isXAMANeutural) + // + || + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMX Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + || + // + (((mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMALCTrendsDown) || + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown) || + (mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown)) && + ( + // + (mConditions.isXCHMAMCPeak + // + || + // + mConditions.isXRSICrossedOverLongExit) + // + || + // + ((mConditions.isXCHMAMCFastUnderSlow || + mConditions.isXCHMAMCFastCrossedUnderSlow) && + ( + // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXCHLHSCMCHHSame) + // + ) + // + ) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMX Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) // ) // || // - // XCHMAMX Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + (mConditions.isXCHMASCTrendsDown && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) // ) // @@ -11903,53 +12924,61 @@ bool XAU5XCHMAMXHasLongSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -11969,29 +12998,29 @@ bool XAU5XCHMAMXHasLongSignal() // // XCHMAMX Short Signal Checking ... -bool XAU5XCHMAMXHasShortSignal() +bool XEU5XCHMAMXHasShortSignal() { // bool result = false; // // Validate Args ... - if (!xAU5MXCHMAMXEnableSignaller || - !xAU5MXCHMAMXAllowShortSignals) + if (!xEU5MXCHMAMXEnableSignaller || + !xEU5MXCHMAMXAllowShortSignals) { return result; } // // Retrieve Market Condition ... - XMarketConditions mConditions = xAU5Provider.GetLastMarketCondition(); + XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: - xAU5Provider.XCHMAMXHasShortConditions() + xEU5Provider.XCHMAMXHasShortConditions() // && // @@ -12009,7 +13038,6 @@ bool XAU5XCHMAMXHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -12017,83 +13045,39 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - (mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - (!mConditions.isXCHMAMCTrendsUp && - !mConditions.isXCHMAMCTrendsDown) && - mConditions.isXCHMAMCFastOverSlow) - // - || - // - (((mConditions.isXTMNeutural && - mConditions.isXTMEndBearish) && - (mConditions.isXAMANeutural && - mConditions.isXAMAEndBearish)) && - ( - // - (mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear) - // - ) - // - ) - // - || - // - (((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow)) && - ( - // - (mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp) - // - ) - // - ) - // - || - // - (((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && - (mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow)) && - ( - // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXTSCurrentMin && - mConditions.isXTDSignalUnderBear && - mConditions.isXTDBullCrossedUnderBear && - mConditions.isXTSCurrentCrossedUnderNearest) - // - ) - // - ) - // - || - // - (mConditions.isXCHMASCVale && + (mConditions.isXTMNeutural && + mConditions.isXCHMASCVale && + mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastOverSlow && - mConditions.isXCHMAMCFastOverSlow && - mConditions.isXCHMALCFastOverSlow) + mConditions.isXAMANeutural && + mConditions.isXTSCurrentMin) // || // - (mConditions.isXTSCurrentMin && - mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish && - mConditions.isXTDBullUnderBear && - mConditions.isXCHMALCTrendsDown && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMALCFastUnderSlow) + (((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + (mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentOverFarest) + // + || + // + (mConditions.isXCHMASCVale && + mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) + // + || + // + (mConditions.isXTSCurrentMin && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXAMAStartBearish) + // + ) + // + ) // ) // @@ -12101,7 +13085,6 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -12109,12 +13092,21 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - (mConditions.isXTMNeutural && - mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXLHHHIncreased && + mConditions.isXTDBullOverBear && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHMAMCTrendsUp && + mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) // ) // @@ -12122,7 +13114,6 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -12130,28 +13121,15 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - (mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCHHSame && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTMStartBearish && - mConditions.isXLHLowAttachedLL && - mConditions.isXAMAStartBearish && - mConditions.isXCHMASCFastCrossedUnderSlow) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastUnderSlow) && + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHMAMCTrendsUp && mConditions.isXTMStartBearish && mConditions.isXAMAStartBearish && - mConditions.isXTDSignalOverBear && - mConditions.isXCHMAMCFastOverSlow) + mConditions.isXLHLowAttachedLL) // ) // @@ -12163,7 +13141,6 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && @@ -12171,42 +13148,7 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - ((mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXLHLowAttachedLL) && - ( - // - mConditions.isXTDSignalCrossedUnderBear - // - || - // - (mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentCrossedUnderFarest) - // - ) - // - ) - // - ) - // - ) - // - || - // - (mConditions.isXTMNeutural && - mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXAMAStartBearish && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalOverBear && - mConditions.isXTSCurrentCrossedUnderFarest) + false // ) // @@ -12227,7 +13169,6 @@ bool XAU5XCHMAMXHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -12235,44 +13176,24 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - ((mConditions.isXTDBullOverBear && - mConditions.isXTDSignalOverBear) && + (((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && ( // - (mConditions.isXLHHHDecreased && - mConditions.isXTSCurrentOverFarest && - mConditions.isXLHPriceCrossedUnderSignal) - // - ) - // - ) - // - || - // - ((mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear) && - ( - // - ((mConditions.isXTMStartBearish && - mConditions.isXAMAStartBearish) && + ((mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak) && ( // - (mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentCrossedUnderNearest) + (mConditions.isXTMVale && + mConditions.isXAMAVale) // || // - (((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow)) && - ( - // - mConditions.isXTSCurrentOverFarest - // - ) - // - ) + (mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXTSCurrentOverFarest) // ) // @@ -12280,13 +13201,42 @@ bool XAU5XCHMAMXHasShortSignal() // || // - (mConditions.isXCHMAMCPeak && + (mConditions.isXTMBearish && + mConditions.isXAMABearish && mConditions.isXCHMALCPeak && mConditions.isXTSCurrentMin && - mConditions.isXCHLHMCLCHHSame && - mConditions.isXTMStartBearish && + mConditions.isXCHMAMCTrendsDown) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXTMBearish && + mConditions.isXCHMAMCPeak && mConditions.isXAMAStartBearish && - mConditions.isXTSCurrentCrossedUnderNearest) + mConditions.isXTSCurrentOverFarest) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && + ( + // + (mConditions.isXTSCurrentMin && + mConditions.isXLHHHDecreased && + mConditions.isXTMStartBearish && + mConditions.isXCHMALCTrendsUp && + mConditions.isXAMAStartBearish) // ) // @@ -12298,7 +13248,6 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -12306,33 +13255,7 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - mConditions.isXCHMAMCPeak && - mConditions.isXCHMALCPeak && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest - // - ) - // - ) - // - || - // - ((mConditions.isXTMBearish && - mConditions.isXAMABearish) && - ( - // - (mConditions.isXTDBullOverBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) - // - ) - // - ) + false // ) // @@ -12340,7 +13263,6 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -12348,18 +13270,19 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - ((mConditions.isXCHMALCPeak && - mConditions.isXCHMALCTrendsUp && - mConditions.isXCHMALCFastOverSlow) && + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && + mConditions.isXCHMALCPeak + // + || + // + (mConditions.isXTSAllSame && + mConditions.isXAMAEndBullish && + mConditions.isXTMStartBearish && mConditions.isXTDBullOverBear && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXLHLowAttachedLL && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) + mConditions.isXLHLowAttachedLL) // ) // @@ -12367,16 +13290,35 @@ bool XAU5XCHMAMXHasShortSignal() // || // - (mConditions.isXTMBearish && - mConditions.isXAMABearish && - mConditions.isXCHMALCPeak && - mConditions.isXTSCurrentMin && - mConditions.isXCHLHSCMCLLSame && - mConditions.isXTDBullUnderBear && - mConditions.isXLHLowAttachedLL && - mConditions.isXTDSignalUnderBear && - mConditions.isXCHMASCFastCrossedUnderSlow && - mConditions.isXTSCurrentCrossedUnderNearest) + (((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow)) && + ( + // + ( + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHLHSCMCLLSame && + mConditions.isXLHLowAttachedLL) && + ( + // + (mConditions.isXTSCurrentMin && + mConditions.isXCHLHMCLCHHSame) + // + || + // + (mConditions.isXCHMALCPeak && + mConditions.isXTDBullOverBear && + mConditions.isXTSCurrentCrossedUnderNearest) + // + ) + // + ) + // + ) + // + ) // ) // @@ -12384,14 +13326,42 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHLHSameHHs && + mConditions.isXCHLHSameLLs && + mConditions.isXTSCurrentMin && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXLHLowAttachedLL) + // + ) + // + ) + // + || + // + (mConditions.isXTSCurrentMin && + mConditions.isXTMStartBearish && + mConditions.isXAMAStartBearish && + mConditions.isXLHLowAttachedLL && + ((mConditions.isXCHMASCFastOverSlow || + mConditions.isXCHMASCFastCrossedOverSlow) && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + (mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow))) + // + ) // ) // @@ -12412,7 +13382,6 @@ bool XAU5XCHMAMXHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && @@ -12420,88 +13389,29 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - ((mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow) && - ( - // - (mConditions.isXTDBullOverBear && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTDSignalCrossedUnderBear) - // - ) - // - ) + (mConditions.isXTMBearish && + mConditions.isXAMABearish && + mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentMin && + mConditions.isXCHMAMCTrendsUp) // || // - ((mConditions.isXCHMAMCPeak && - mConditions.isXCHMAMCTrendsUp && - mConditions.isXCHMAMCFastOverSlow) && - ( - // - ((mConditions.isXTMNeutural && - mConditions.isXAMANeutural) && - ( - // - (mConditions.isXTSCurrentMin && - mConditions.isXTDBullOverBear) - // - || - // - (mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest) - // - ) - // - ) - // - ) - // - ) + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMAMCTrendsUp && + (mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow)) // || // - (((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow)) && + ((mConditions.isXCHMALCFastOverSlow || + mConditions.isXCHMALCFastCrossedOverSlow) && ( // - (mConditions.isXAMABullish && + (mConditions.isXCHMASCVale && mConditions.isXTSCurrentMin && - mConditions.isXTDBullUnderBear && - mConditions.isXTDSignalUnderBear && - mConditions.isXTSCurrentCrossedUnderFarest && - mConditions.isXTSCurrentCrossedUnderMediest) - // - || - // - (mConditions.isXCHMALCPeak && - mConditions.isXAMABullish && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentCrossedUnderMediest) - // - ) - // - ) - // - || - // - ((mConditions.isXCHMALCTrendsDown && - mConditions.isXCHMALCFastOverSlow) && - ( - // - (mConditions.isXAMANeutural && - mConditions.isXTSCurrentMin && - mConditions.isXAMAEndBullish && - mConditions.isXTDBullOverBear && mConditions.isXTMStartBearish && - mConditions.isXCHLHMCLCLLSame && - mConditions.isXCHMASCCrossedUnderMax && - mConditions.isXTDSignalCrossedUnderBear && - mConditions.isXCHMASCFastCrossedUnderSlow) + mConditions.isXAMAStartBearish) // ) // @@ -12513,20 +13423,53 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + ((mConditions.isXTMBearish && + mConditions.isXCHMAMCPeak && + mConditions.isXAMANeutural && + mConditions.isXCHLHSCMCHHSame && + mConditions.isXCHLHMCLCLLSame) && + ( + // + mConditions.isXTSCurrentOverFarest + // + || + // + (mConditions.isXTSCurrentMin && + mConditions.isXCHMAMCTrendsDown && + mConditions.isXCHMALCTrendsDown) + // + ) + // + ) + // + || + // + ((mConditions.isXCHMAMCFastOverSlow || + mConditions.isXCHMAMCFastCrossedOverSlow) && + ( + // + (mConditions.isXCHMAMCPeak && + mConditions.isXCHMALCPeak && + mConditions.isXAMANeutural && + mConditions.isXTMStartBearish) + // + ) + // + ) + // + ) // ) // || // - // XCHMAMX Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && @@ -12534,18 +13477,18 @@ bool XAU5XCHMAMXHasShortSignal() // ( // - (((mConditions.isXCHMASCTrendsDown && - mConditions.isXCHMASCFastUnderSlow) && - (mConditions.isXCHMAMCTrendsDown && - mConditions.isXCHMAMCFastUnderSlow)) && + ((mConditions.isXCHMASCTrendsUp && + (mConditions.isXCHMASCFastUnderSlow || + mConditions.isXCHMASCFastCrossedUnderSlow)) && ( // - (mConditions.isXTMBearish && - mConditions.isXAMABullish && - mConditions.isXTDBullOverBear && - mConditions.isXTSCurrentOverFarest && - mConditions.isXTSCurrentOverNearest && - mConditions.isXTSCurrentCrossedOverNearest) + (mConditions.isXFIUnderZero && + (mConditions.isXTMBearish || + mConditions.isXTMStartBearish) && + (mConditions.isXAMABearish || + mConditions.isXAMAStartBearish) && + (mConditions.isXTDBullUnderBear && + mConditions.isXTDSignalUnderBear)) // ) // @@ -12557,14 +13500,16 @@ bool XAU5XCHMAMXHasShortSignal() // || // - // XCHMAMX Short ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // @@ -12588,53 +13533,61 @@ bool XAU5XCHMAMXHasShortSignal() // // Next Step is to Check LL and HH Same Style ... // - // XCHMAMX Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // || // - // XCHMAMX Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( - false) + // + false + // + ) // ) // diff --git a/BKP/Main/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 b/BKP/Main/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 new file mode 100644 index 00000000..d991bf5b --- /dev/null +++ b/BKP/Main/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 @@ -0,0 +1,283 @@ +/////////////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 XEU5 Signal Provider Library Inputs +// ----------------------------------------------------------- +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +// Include Logger ... +#include "../Libraries/x-saherelm.log.lib.mq5" + +// +// Include Classes ... +#include "../Classes/x-saherelm.class.lib.mq5" + +// +input group "XEU5 Provider"; + +// +// Commonly Used Configurations ... +input group "XEU5 Common"; +// +// Provider ... +input bool xEU5EnableProvider = true; // Enable Provider +input int xEU5NumberOfItemsPerTick = 30; // Number Of items Readed In Each Tick +// +// Alerts ... +input bool xEU5EnableAlerts = true; // Enable Events Alert +input bool xEU5EnableHourlyAlerts = false; // Send Alert on each new Hour +input bool xEU5EnableDailyAlerts = false; // Send Alert on each new Day +input bool xEU5EnableWeeklyAlerts = false; // Send Alert on each new Week +input bool xEU5EnableMonthlyAlerts = false; // Send Alert on each new Month +// +// Reports ... +input bool xEU5EnableDailyReports = false; // Send Report on each new Day +input bool xEU5EnableWeeklyReports = false; // Send Report on each new Week +input bool xEU5EnableMonthlyReports = false; // Send Report on each new Month + +// +// Trader and Expert Specific Configurations ... +input group "XEU5 Trader"; +input int xEU5MagicNumber = 16940560; // Trader MagicNumber +input int xEU5Slippage = 10; // Trader Slippage + +// +// Trades Management Configurations ... +input group "XEU5 Trade Management"; +input bool xEU5AllowLongTrades = true; // Allow Long Trades +input bool xEU5AllowShortTrades = true; // Allow Short Trades + +// +// Risk Management Configurations ... +input group "XEU5 Risk Management"; +// +// Trade Count ... +input int xEU5MaxAllowedTrades = 10; // Max Allowed Trades at Same Time +input ENUM_X_CROSS_SIGNAL_METHOD xEU5CrossSignalsMethod = X_CROSS_SIGNAL_REGULAR; // Handle Cross Signals Method +// +// Max Allowed Trade Age ... +input int xEU5MaxAllowedTradeAge = 1500; // Detect Long Time Trades +input ENUM_X_GUARD_ACTIONS xEU5OldTradesAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // What to do with Old Trades +// +// Trade Volume Specific Configurations ... +input double xEU5StaticVolumeFactor = 0.0002; // Static Volume baesd on Balance +input ENUM_STATIC_VOLUME_METHODS xEU5StaticVolumeMethod = X_STATIC_VOLUME_BASED_ON_BALANCE; // How to Calculate Static Volume +input double xEU5VolumeMultiplier = 0; // Volume Increase Multiplier +input double xEU5ApplyVolumeMultiplierFactor = 0; // Apply Volume Multiplier Rate based on Balance +input double xEU5MaxSupportedVolumePerTradeFactor = 0; // Max Supported Volume Per Trade Factor based on Balance +input double xEU5IncreasedMaxSupportedVolumeRate = 0; // Increase Max Supported Volume based on Balance +// +// Trade Profits ... +input double xEU5MinRewardInPips = 6; // Minimum Reward Per Trade in Pips +input double xEU5RiskFreeStepInPips = 0; // Make Trades Risk Free Steps in Pips +input double xEU5RiskFreeRate = 0; // Volume Multiplier for Risk Free Trades +// +// Guard Riskable Money and Profits ... +input double xEU5CriticalDrawDownFactor = 0.20; // Critical Allowed Drawdown Factor based on Balance +input ENUM_X_GUARD_ACTIONS xEU5CriticalGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // Specify Guard Action on Critical Drawdown +input double xEU5MaxAllowedDrawDownFactor = 0.25; // Max Allowed Drawdown Factor based on Balance +input ENUM_X_GUARD_ACTIONS xEU5MaxAllowedGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_5; // Specify Guard Action on Max Allowed Drawdown +input int xEU5GuardStopoutFiredAfterTouches = 5; // Guard Stopout all Trades if Max Allowed Drawdown touched + +// +// Account Conditions for Trading ... +input double xEU5BalanceFactorForOpenTrades = 0.5; // Minimum Balance for Open Trades +input double xEU5FreeMarginFactorForOpenTrades = 0.8; // Minimum Free Margin for Open Trades + +// +// May be Used Later as Input Params ... +bool xEU5UseVirtualTPSl = false; // Use Virtual TP SL +bool xEU5EnableSignalAlerts = false; // Send Signal Alert + +// +// Validate Inputs before Initialization ... +bool XEU5ValidateInputs() +{ + // + bool result = false; + + // + // Implement Other Verifications ... + + // + // Check Trading Availability ... + bool isTradeAvailable = xEU5AllowLongTrades || xEU5AllowShortTrades; + if (!isTradeAvailable) + { + LogMessage("XEU5 => Warning: Trading disabled ..."); + } + + // + // Chekc Number of reading items per tick ... + result = xEU5NumberOfItemsPerTick >= 5; + if (!result) + { + // + LogMessage("XEU5 invalid Number of items Reading Per Tick ..."); + + // + return result; + } + + // + // Check Max Allowed Trades Count ... + result = isTradeAvailable && xEU5MaxAllowedTrades >= 1; + if (!result) + { + // + LogMessage("XEU5 Number of Trades not valid ..."); + + // + return result; + } + + // + // Check Free Margin ... + result = + isTradeAvailable && + xEU5FreeMarginFactorForOpenTrades > 0 && + xEU5FreeMarginFactorForOpenTrades < 1; + if (!result) + { + // + LogMessage("XEU5 Invalid Free Margin ..."); + + // + return result; + } + + // + // Check min Balance for Open Trades ... + result = + isTradeAvailable && + xEU5BalanceFactorForOpenTrades > 0 && + xEU5BalanceFactorForOpenTrades < 1; + if (!result) + { + // + LogMessage("XEU5 Invalid Min Balance for Open Trades ..."); + + // + return result; + } + + // + // Check Min Reward Per Trade ... + result = xEU5MinRewardInPips > 0; + if (!result) + { + // + LogMessage("XEU5 Invalid Min Reward Per Trade ..."); + + // + return result; + } + + // + // Check Trades Volume ... + result = xEU5StaticVolumeFactor > 0; + if (!result) + { + // + LogMessage("XEU5 Invalid Static Volume ..."); + + // + return result; + } + + // + // Check Volume Multiplier ... + result = xEU5VolumeMultiplier >= 0; + if (!result) + { + // + LogMessage("XEU5 Invalid Volume Multiplier ..."); + + // + return result; + } + + // + result = + xEU5CriticalDrawDownFactor == 0 || (xEU5CriticalDrawDownFactor > 0 && + xEU5CriticalDrawDownFactor < 1); + if (!result) + { + // + LogMessage("XEU5 Invalid Critical DrawDown Factor ..."); + + // + return result; + } + + // + result = + xEU5MaxAllowedDrawDownFactor == 0 || (xEU5MaxAllowedDrawDownFactor > 0 && + xEU5MaxAllowedDrawDownFactor < 1); + if (!result) + { + // + LogMessage("XEU5 Invalid Max Allowed DrawDown Factor ..."); + + // + return result; + } + + // + // Check Guard Actions ... + // + result = + xEU5CriticalDrawDownFactor > 0 && + xEU5CriticalDrawDownFactor < 1 && + xEU5MaxAllowedDrawDownFactor > 0 && + xEU5MaxAllowedDrawDownFactor < 1; + if (!result) + { + // + LogMessage("XEU5 For Critical Drawdown, you have to Specify Max Drawdown also ..."); + + // + return result; + } + + // + result = xEU5CriticalDrawDownFactor > 0 && xEU5CriticalDrawDownFactor < xEU5MaxAllowedDrawDownFactor; + if (!result) + { + // + LogMessage("XEU5 Critical Drawdown must Smaller than Max Drawdown ..."); + + // + return result; + } + + // + if (xEU5CriticalDrawDownFactor > 0 && xEU5CriticalGuardAction == X_GUARD_DO_NOTHING) + { + LogMessage("XEU5 IMPORTANT you Specified Critical Drawdown, but there is no any Guard Action ..."); + } + + // + if (xEU5MaxAllowedDrawDownFactor > 0 && xEU5MaxAllowedGuardAction == X_GUARD_DO_NOTHING) + { + LogMessage("XEU5 IMPORTANT you Specified Max Allowed Drawdown, but there is no any Guard Action ..."); + } + + // + result = true; + + // + return result; +} \ No newline at end of file diff --git a/BKP/Main/Providers/x-saherelm.xau5.provider.lib.mq5 b/BKP/Main/Providers/x-saherelm.xeu5.provider.lib.mq5 similarity index 63% rename from BKP/Main/Providers/x-saherelm.xau5.provider.lib.mq5 rename to BKP/Main/Providers/x-saherelm.xeu5.provider.lib.mq5 index 96e5fdbd..f2d86858 100644 --- a/BKP/Main/Providers/x-saherelm.xau5.provider.lib.mq5 +++ b/BKP/Main/Providers/x-saherelm.xeu5.provider.lib.mq5 @@ -1,9 +1,9 @@ //////////////////////////////////////////////////////////// // -// SaherElm IT Center MQL5 XAU5 Signal Provider Library +// SaherElm IT Center MQL5 XEU5 Signal Provider Library // -------------------------------------------------------- -// Name: XAU5SignalProvider -// Description: XAU5 based signal provider ... +// Name: XEU5SignalProvider +// Description: XEU5 based signal provider ... // // // Maintainer: @@ -19,13 +19,13 @@ #property version "1.00" #property strict -#define XAU5ProviderName "XAU5" +#define XEU5ProviderName "XEU5" // // START Inputs ... // -#include "x-saherelm.xau5.provider.inputs.lib.mq5"; +#include "x-saherelm.xeu5.provider.inputs.lib.mq5"; // // END Inputs ... @@ -56,42 +56,42 @@ // // -XCGuard *xAU5Guard; -XCTrade *xAU5Trader; -XCReporter *xAU5Reporter; -XCCollector *xAU5Collector; -XCAccountInfo *xAU5AccountInfo; -XCVolumeManager *xAU5VolumeManager; +XCGuard *xEU5Guard; +XCTrade *xEU5Trader; +XCReporter *xEU5Reporter; +XCCollector *xEU5Collector; +XCAccountInfo *xEU5AccountInfo; +XCVolumeManager *xEU5VolumeManager; // -#include "x-saherelm.xau5.provider.indicators.lib.mq5" +#include "x-saherelm.xeu5.provider.indicators.lib.mq5" // // Controlling Variables ... -bool xAU5MEnableProvider = false; -bool xAU5MAllowLongTrades = false; -bool xAU5MAllowShortTrades = false; +bool xEU5MEnableProvider = false; +bool xEU5MAllowLongTrades = false; +bool xEU5MAllowShortTrades = false; // -double xAU5Deposit = 0; -double xAU5Balance = 0; -double xAU5MinReward = 0; -double xAU5FreeMargin = 0; -double xAU5BalanceForOpenTrades = 0; -double xAU5FreeMarginForOpenTrades = 0; +double xEU5Deposit = 0; +double xEU5Balance = 0; +double xEU5MinReward = 0; +double xEU5FreeMargin = 0; +double xEU5BalanceForOpenTrades = 0; +double xEU5FreeMarginForOpenTrades = 0; // // Guard ... -double xAU5CriticalDrawDown = 0; -double xAU5MaxAllowedDrawDown = 0; +double xEU5CriticalDrawDown = 0; +double xEU5MaxAllowedDrawDown = 0; // -double xAU5MaxDrawUp = 0; -double xAU5MaxDrawDown = 0; +double xEU5MaxDrawUp = 0; +double xEU5MaxDrawDown = 0; // int NOT_ENOUGH_MONEY_ERROR = 4756; -const string XAU5_SUPPORT_ID = "SP"; +const string XEU5_SUPPORT_ID = "SP"; // // END Global Definitions: Variables, Properties and etc ... @@ -103,26 +103,26 @@ const string XAU5_SUPPORT_ID = "SP"; // // Initial Library if required ... -bool XAU5InitSignalProviderLibrary() +bool XEU5InitSignalProviderLibrary() { // bool result = false; // - if (!xAU5EnableProvider) + if (!xEU5EnableProvider) { return result; } // // Controlling Variables ... - xAU5MEnableProvider = xAU5EnableProvider; - xAU5MAllowLongTrades = xAU5AllowLongTrades; - xAU5MAllowShortTrades = xAU5AllowShortTrades; + xEU5MEnableProvider = xEU5EnableProvider; + xEU5MAllowLongTrades = xEU5AllowLongTrades; + xEU5MAllowShortTrades = xEU5AllowShortTrades; // // Validate Inputs ... - result = XAU5ValidateInputs(); + result = XEU5ValidateInputs(); if (!result) { return result; @@ -130,113 +130,113 @@ bool XAU5InitSignalProviderLibrary() // // Init Indicators ... - result = XAU5InitIndicators(); + result = XEU5InitIndicators(); if (!result) { return result; } // - xAU5Reporter = new XCReporter(); - xAU5Collector = new XCCollector(); - xAU5AccountInfo = new XCAccountInfo(); + xEU5Reporter = new XCReporter(); + xEU5Collector = new XCCollector(); + xEU5AccountInfo = new XCAccountInfo(); // // Calculate Account Deposit ... - xAU5Deposit = xAU5AccountInfo.GetInitialBalance(); + xEU5Deposit = xEU5AccountInfo.GetInitialBalance(); // // Prepare Min Reward ... - if (xAU5MinRewardInPips > 0) + if (xEU5MinRewardInPips > 0) { - xAU5MinReward = PipsToPrice(xAU5MinRewardInPips); + xEU5MinReward = PipsToPrice(xEU5MinRewardInPips); } // // Calculate Min Balance for Trades ... - if (xAU5BalanceFactorForOpenTrades > 0) + if (xEU5BalanceFactorForOpenTrades > 0) { - xAU5BalanceForOpenTrades = xAU5BalanceFactorForOpenTrades * xAU5Deposit; + xEU5BalanceForOpenTrades = xEU5BalanceFactorForOpenTrades * xEU5Deposit; } // // Claculate Min Free Marging for Trades ... - if (xAU5FreeMarginFactorForOpenTrades > 0) + if (xEU5FreeMarginFactorForOpenTrades > 0) { - xAU5FreeMarginForOpenTrades = xAU5FreeMarginFactorForOpenTrades * xAU5Deposit; + xEU5FreeMarginForOpenTrades = xEU5FreeMarginFactorForOpenTrades * xEU5Deposit; } // // Calculate Init Time Critical DrawDown Value ... - if (xAU5CriticalDrawDownFactor > 0) + if (xEU5CriticalDrawDownFactor > 0) { - xAU5CriticalDrawDown = xAU5CriticalDrawDownFactor * xAU5Deposit; + xEU5CriticalDrawDown = xEU5CriticalDrawDownFactor * xEU5Deposit; } // // Calculate Init Time Max Allowed DrawDown Value ... - if (xAU5MaxAllowedDrawDownFactor > 0) + if (xEU5MaxAllowedDrawDownFactor > 0) { - xAU5MaxAllowedDrawDown = xAU5MaxAllowedDrawDownFactor * xAU5Deposit; + xEU5MaxAllowedDrawDown = xEU5MaxAllowedDrawDownFactor * xEU5Deposit; } // // Instant Volume Manager ... - xAU5VolumeManager = new XCVolumeManager( - xAU5StaticVolumeFactor, - xAU5StaticVolumeMethod, - xAU5VolumeMultiplier, - xAU5ApplyVolumeMultiplierFactor, - xAU5MaxSupportedVolumePerTradeFactor, - xAU5IncreasedMaxSupportedVolumeRate); + xEU5VolumeManager = new XCVolumeManager( + xEU5StaticVolumeFactor, + xEU5StaticVolumeMethod, + xEU5VolumeMultiplier, + xEU5ApplyVolumeMultiplierFactor, + xEU5MaxSupportedVolumePerTradeFactor, + xEU5IncreasedMaxSupportedVolumeRate); // // Make XCTrader instance ... - xAU5Trader = new XCTrade( - XAU5ProviderName, + xEU5Trader = new XCTrade( + XEU5ProviderName, _Symbol, - xAU5Slippage, - xAU5MagicNumber, - xAU5UseVirtualTPSl, - xAU5MaxAllowedTrades, - xAU5FreeMarginForOpenTrades, - xAU5BalanceForOpenTrades); + xEU5Slippage, + xEU5MagicNumber, + xEU5UseVirtualTPSl, + xEU5MaxAllowedTrades, + xEU5FreeMarginForOpenTrades, + xEU5BalanceForOpenTrades); // // Instantiate Account Guard ... - xAU5Guard = new XCGuard( + xEU5Guard = new XCGuard( // // Old Trades ... - xAU5MaxAllowedTradeAge, - xAU5OldTradesAction, + xEU5MaxAllowedTradeAge, + xEU5OldTradesAction, // // Critical DrawDown ... - xAU5CriticalDrawDownFactor, - xAU5CriticalGuardAction, + xEU5CriticalDrawDownFactor, + xEU5CriticalGuardAction, // // Max Allowed DrawDown ... - xAU5MaxAllowedDrawDownFactor, - xAU5MaxAllowedGuardAction, - xAU5GuardStopoutFiredAfterTouches, + xEU5MaxAllowedDrawDownFactor, + xEU5MaxAllowedGuardAction, + xEU5GuardStopoutFiredAfterTouches, // - // xAU5GuardSupportMethod + // xEU5GuardSupportMethod X_SUPPORT_DO_NOTHING // ); // // Reset Calculations Buffers and Variables ... - XAU5ResetCollectors(); + XEU5ResetCollectors(); // - XAU5UpdateReports(); + XEU5UpdateReports(); // result = true; // // Logging State ... - XAU5IssueInitializationSucceedAlert(); + XEU5IssueInitializationSucceedAlert(); // return result; @@ -244,65 +244,65 @@ bool XAU5InitSignalProviderLibrary() // // DeInitial Library if required ... -void XAU5DeinitSignalProviderLibrary(const int reason) +void XEU5DeinitSignalProviderLibrary(const int reason) { // // Release Handlers ... - XAU5ReleaseIndicators(); + XEU5ReleaseIndicators(); // // Logging State ... - XAU5IssueDeinitializationSucceedAlert(); + XEU5IssueDeinitializationSucceedAlert(); } // // this is a Globally Function which do all of // checkings and positions handling ... -void XAU5SignalProviderHandleTick() +void XEU5SignalProviderHandleTick() { // // Check Provider is Enable or Not ... - if (!xAU5MEnableProvider) + if (!xEU5MEnableProvider) { return; } // - XAU5SignalProviderDoControlState(); + XEU5SignalProviderDoControlState(); // // Reading Indicator Buffers ... - XAU5HandleReadingBuffers(); - if (xAU5CalculatedBars < xAU5MaxLengthOfInputs) + XEU5HandleReadingBuffers(); + if (xEU5CalculatedBars < xEU5MaxLengthOfInputs) { return; } // // Handle Open Trades ... - XAU5HandleOpenTrades(); + XEU5HandleOpenTrades(); // // Handle Close Trades ... - XAU5HandleCloseTrades(); + XEU5HandleCloseTrades(); // // DrawDown and DrawUp ... - XAU5HandleCalculateDrawDownUp(); + XEU5HandleCalculateDrawDownUp(); } // // Do Control Checks here ... -void XAU5SignalProviderDoControlState() +void XEU5SignalProviderDoControlState() { // // Update account Balance ... - xAU5Balance = xAU5AccountInfo.GetBalance(); - xAU5FreeMargin = xAU5AccountInfo.GetFreeMargin(); + xEU5Balance = xEU5AccountInfo.GetBalance(); + xEU5FreeMargin = xEU5AccountInfo.GetFreeMargin(); // // Check Provider is Enable or Not ... - if (!xAU5MEnableProvider) + if (!xEU5MEnableProvider) { return; } @@ -312,10 +312,10 @@ void XAU5SignalProviderDoControlState() // TODO: add Guard Result here ... string guardMessage = ""; XGuardHandlerResult guardHandlerResult; - bool isGuarded = xAU5Guard.Guard( + bool isGuarded = xEU5Guard.Guard( guardHandlerResult, guardMessage, - xAU5Trader, + xEU5Trader, _Period); if (isGuarded) { @@ -331,7 +331,7 @@ void XAU5SignalProviderDoControlState() XSignal iSignal = guardHandlerResult.criticals[i]; // - XAU5OnGuard( + XEU5OnGuard( iSignal, X_GUARDED_CRITICAL, guardMessage); @@ -350,7 +350,7 @@ void XAU5SignalProviderDoControlState() XSignal iSignal = guardHandlerResult.maxes[i]; // - XAU5OnGuard( + XEU5OnGuard( iSignal, X_GUARDED_MAX, guardMessage, @@ -370,7 +370,7 @@ void XAU5SignalProviderDoControlState() XSignal iSignal = guardHandlerResult.olds[i]; // - XAU5OnGuard( + XEU5OnGuard( iSignal, X_GUARDED_OLD, guardMessage); @@ -381,9 +381,9 @@ void XAU5SignalProviderDoControlState() // // Signal Protection ... XSignal protectSupports[]; - bool isSupported = xAU5Guard.ProtectSignals( + bool isSupported = xEU5Guard.ProtectSignals( protectSupports, - xAU5Trader); + xEU5Trader); if (isSupported) { // @@ -393,7 +393,7 @@ void XAU5SignalProviderDoControlState() // // Handling Signals ... XTraderHandlerResult signalHandlerResult; - xAU5Trader.HandleSignals( + xEU5Trader.HandleSignals( signalHandlerResult, false // Ignore Risk Free Trdaes ); @@ -408,7 +408,7 @@ void XAU5SignalProviderDoControlState() { // XSignal iSignal = signalHandlerResult.sl[i]; - XAU5OnSL(iSignal); + XEU5OnSL(iSignal); } } @@ -422,7 +422,7 @@ void XAU5SignalProviderDoControlState() { // XSignal iSignal = signalHandlerResult.tp[i]; - XAU5OnTP(iSignal); + XEU5OnTP(iSignal); } } @@ -436,18 +436,18 @@ void XAU5SignalProviderDoControlState() { // XSignal iSignal = signalHandlerResult.rf[i]; - XAU5OnRF(iSignal); + XEU5OnRF(iSignal); } } } // // Handle Trades when OnTrade Event Hnadler Calls ... -void XAU5SignalProviderHandleTrade() +void XEU5SignalProviderHandleTrade() { // // Check Provider Enabled ... - if (!xAU5MEnableProvider) + if (!xEU5MEnableProvider) { return; } @@ -455,7 +455,7 @@ void XAU5SignalProviderHandleTrade() // // Handle OnTrade Event ... XOnTradeHandlerResult result = {}; - xAU5Trader.HandleOnTradeEvent( + xEU5Trader.HandleOnTradeEvent( result); // @@ -463,27 +463,27 @@ void XAU5SignalProviderHandleTrade() if (result.hasNewDeal) { // - XDeal last = xAU5Trader.GetLastDeal(); + XDeal last = xEU5Trader.GetLastDeal(); // if (last.reason == DEAL_REASON_SL) { - xAU5Reporter.AddTradeSLInReports(); + xEU5Reporter.AddTradeSLInReports(); } else if (last.reason == DEAL_REASON_TP) { - xAU5Reporter.AddTradeTPInReports(); + xEU5Reporter.AddTradeTPInReports(); } } } // // Handle Open Trades ... -void XAU5HandleOpenTrades() +void XEU5HandleOpenTrades() { // // Check Can Trade ... - bool canTrade = xAU5MAllowLongTrades || xAU5MAllowShortTrades; + bool canTrade = xEU5MAllowLongTrades || xEU5MAllowShortTrades; if (!canTrade) { return; @@ -491,8 +491,8 @@ void XAU5HandleOpenTrades() // // Check Max Open Trades ... - int openSignals = xAU5Trader.Count(); - bool canOpenPositions = openSignals < xAU5MaxAllowedTrades; + int openSignals = xEU5Trader.Count(); + bool canOpenPositions = openSignals < xEU5MaxAllowedTrades; if (!canOpenPositions) { return; @@ -502,8 +502,8 @@ void XAU5HandleOpenTrades() // Check Signals Exists ... XProvidedSignal longSignalInfo; XProvidedSignal shortSignalInfo; - bool hasLongSignal = XAU5CanOpenLongTrade(longSignalInfo); - bool hasShortSignal = XAU5CanOpenShortTrade(shortSignalInfo); + bool hasLongSignal = XEU5CanOpenLongTrade(longSignalInfo); + bool hasShortSignal = XEU5CanOpenShortTrade(shortSignalInfo); if (!hasLongSignal && !hasShortSignal) { return; @@ -511,20 +511,20 @@ void XAU5HandleOpenTrades() // // Update Reports ... - XAU5UpdateReports(); + XEU5UpdateReports(); // - xAU5WaitUntilNextCandle = true; + xEU5WaitUntilNextCandle = true; // // Open Long Trades ... if ( // hasLongSignal && - xAU5MAllowLongTrades) + xEU5MAllowLongTrades) { // - bool isOpened = XAU5OpenLongPosition(longSignalInfo); + bool isOpened = XEU5OpenLongPosition(longSignalInfo); } // @@ -532,29 +532,29 @@ void XAU5HandleOpenTrades() if ( // hasShortSignal && - xAU5MAllowShortTrades) + xEU5MAllowShortTrades) { // - bool isOpened = XAU5OpenShortPosition(shortSignalInfo); + bool isOpened = XEU5OpenShortPosition(shortSignalInfo); } } // // Handle Close Trades ... -void XAU5HandleCloseTrades() +void XEU5HandleCloseTrades() { // // Force Close Long Trades ... bool isClosedLongTrades = false; - bool canCloseLongTrades = XAU5CanCloseLongTrade(); - if (xAU5MAllowLongTrades && canCloseLongTrades) + bool canCloseLongTrades = XEU5CanCloseLongTrade(); + if (xEU5MAllowLongTrades && canCloseLongTrades) { // ENUM_X_SIGNAL_TYPE type = X_SIGNAL_LONG; // XSignal closed[]; - xAU5Trader.CloseSignals( + xEU5Trader.CloseSignals( closed, type); @@ -568,7 +568,7 @@ void XAU5HandleCloseTrades() { // XSignal iSignal = closed[i]; - XAU5OnFC(iSignal); + XEU5OnFC(iSignal); } } } @@ -576,15 +576,15 @@ void XAU5HandleCloseTrades() // // Force Close Short Trades ... bool isClosedShortTrades = false; - bool canCloseShortTrades = XAU5CanCloseShortTrade(); - if (xAU5MAllowShortTrades && canCloseShortTrades) + bool canCloseShortTrades = XEU5CanCloseShortTrade(); + if (xEU5MAllowShortTrades && canCloseShortTrades) { // ENUM_X_SIGNAL_TYPE type = X_SIGNAL_SHORT; // XSignal closed[]; - xAU5Trader.CloseSignals( + xEU5Trader.CloseSignals( closed, type); @@ -598,7 +598,7 @@ void XAU5HandleCloseTrades() { // XSignal iSignal = closed[i]; - XAU5OnFC(iSignal); + XEU5OnFC(iSignal); } } } @@ -606,7 +606,7 @@ void XAU5HandleCloseTrades() // // Open Long Position ... -bool XAU5OpenLongPosition( +bool XEU5OpenLongPosition( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -619,14 +619,14 @@ bool XAU5OpenLongPosition( double sl = info.sl > 0 ? info.sl : 0; // entry - (200 * _Point); // info.sl > 0 ? info.sl : 0; - double tp = info.tp > 0 ? info.tp : entry + xAU5MinReward; - double riskFreeRate = xAU5RiskFreeRate; - double riskFreeStep = xAU5RiskFreeStepInPips; - double volume = XAU5CalculateVolume(ArraySize(info.signallers)); + double tp = info.tp > 0 ? info.tp : entry + xEU5MinReward; + double riskFreeRate = xEU5RiskFreeRate; + double riskFreeStep = xEU5RiskFreeStepInPips; + double volume = XEU5CalculateVolume(ArraySize(info.signallers)); // XSignal signal = {}; - signal = xAU5Trader.GenerateSignal( + signal = xEU5Trader.GenerateSignal( X_SIGNAL_LONG, tp, sl, @@ -635,20 +635,20 @@ bool XAU5OpenLongPosition( riskFreeRate); bool isValidSignal = IsValid( signal, - xAU5MagicNumber); + xEU5MagicNumber); if (!isValidSignal) { return result; } // - int signalsCount = xAU5Trader.Count(); + int signalsCount = xEU5Trader.Count(); bool isCross = signalsCount >= 1; if (isCross) { // // Handle Cross Signals ... - XAU5HnadleCrossSignal(signal); + XEU5HnadleCrossSignal(signal); } // @@ -661,7 +661,7 @@ bool XAU5OpenLongPosition( ( // isCross && - xAU5CrossSignalsMethod != X_CROSS_SIGNAL_DO_NOTHING + xEU5CrossSignalsMethod != X_CROSS_SIGNAL_DO_NOTHING // ); if (!canExecuteSignal) @@ -671,7 +671,7 @@ bool XAU5OpenLongPosition( // // Execute Signal ... - ENUM_EXECUTION_SIGNAL_RESULT executionResult = xAU5Trader.ExecuteSignal( + ENUM_EXECUTION_SIGNAL_RESULT executionResult = xEU5Trader.ExecuteSignal( signal, false, // Ignore Number of Trades ... true // Check Account Conditions ... @@ -688,16 +688,16 @@ bool XAU5OpenLongPosition( ); // - XSignal tSignal = xAU5Trader.GetSignal(signal.ticket); + XSignal tSignal = xEU5Trader.GetSignal(signal.ticket); // - XAU5OnSignal( + XEU5OnSignal( tSignal, providers); } else { - XAU5IssueSignalExecutionError(executionResult); + XEU5IssueSignalExecutionError(executionResult); } // @@ -706,7 +706,7 @@ bool XAU5OpenLongPosition( // // Open Short Position ... -bool XAU5OpenShortPosition( +bool XEU5OpenShortPosition( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { @@ -719,14 +719,14 @@ bool XAU5OpenShortPosition( double sl = info.sl > 0 ? info.sl : 0; // entry + (200 * _Point); // info.sl > 0 ? info.sl : 0; - double tp = info.tp > 0 ? info.tp : entry - xAU5MinReward; - double riskFreeRate = xAU5RiskFreeRate; - double riskFreeStep = xAU5RiskFreeStepInPips; - double volume = XAU5CalculateVolume(ArraySize(info.signallers)); + double tp = info.tp > 0 ? info.tp : entry - xEU5MinReward; + double riskFreeRate = xEU5RiskFreeRate; + double riskFreeStep = xEU5RiskFreeStepInPips; + double volume = XEU5CalculateVolume(ArraySize(info.signallers)); // XSignal signal = {}; - signal = xAU5Trader.GenerateSignal( + signal = xEU5Trader.GenerateSignal( X_SIGNAL_SHORT, tp, sl, @@ -735,20 +735,20 @@ bool XAU5OpenShortPosition( riskFreeRate); bool isValidSignal = IsValid( signal, - xAU5MagicNumber); + xEU5MagicNumber); if (!isValidSignal) { return result; } // - int signalsCount = xAU5Trader.Count(); + int signalsCount = xEU5Trader.Count(); bool isCross = signalsCount >= 1; if (isCross) { // // Handle Cross Signals ... - XAU5HnadleCrossSignal(signal); + XEU5HnadleCrossSignal(signal); } // @@ -761,7 +761,7 @@ bool XAU5OpenShortPosition( ( // isCross && - xAU5CrossSignalsMethod != X_CROSS_SIGNAL_DO_NOTHING + xEU5CrossSignalsMethod != X_CROSS_SIGNAL_DO_NOTHING // ); if (!canExecuteSignal) @@ -771,7 +771,7 @@ bool XAU5OpenShortPosition( // // Execute Signal ... - ENUM_EXECUTION_SIGNAL_RESULT executionResult = xAU5Trader.ExecuteSignal( + ENUM_EXECUTION_SIGNAL_RESULT executionResult = xEU5Trader.ExecuteSignal( signal, false, // Ignore Number of Trades ... true // Check Account Conditions ... @@ -786,16 +786,16 @@ bool XAU5OpenShortPosition( ); // - XSignal tSignal = xAU5Trader.GetSignal(signal.ticket); + XSignal tSignal = xEU5Trader.GetSignal(signal.ticket); // - XAU5OnSignal( + XEU5OnSignal( tSignal, providers); } else { - XAU5IssueSignalExecutionError(executionResult); + XEU5IssueSignalExecutionError(executionResult); } // @@ -804,20 +804,20 @@ bool XAU5OpenShortPosition( // // Apply Cross Signal Actions ... -void XAU5HnadleCrossSignal( +void XEU5HnadleCrossSignal( XSignal &signal // Specified Signal ... ) { // // Check Cross Signal Handling Enabled ... - if (xAU5CrossSignalsMethod == X_CROSS_SIGNAL_DO_NOTHING) + if (xEU5CrossSignalsMethod == X_CROSS_SIGNAL_DO_NOTHING) { return; } // // First We have to Change Cross Signals Comment ... - string comment = xAU5Trader.GenerateSignalComment( + string comment = xEU5Trader.GenerateSignalComment( signal, true); @@ -826,21 +826,21 @@ void XAU5HnadleCrossSignal( // // If Every thing is Regular, prevent any changes here ... - if (xAU5CrossSignalsMethod == X_CROSS_SIGNAL_REGULAR) + if (xEU5CrossSignalsMethod == X_CROSS_SIGNAL_REGULAR) { return; } // // Retrieve Max in Drawdown Signal ... - XSignal maxInDDSignal = xAU5Trader.GetMaxInDrawdownSignal(); + XSignal maxInDDSignal = xEU5Trader.GetMaxInDrawdownSignal(); // // Validate Signal ... bool isValidSignal = maxInDDSignal.ticket > 0 && maxInDDSignal.symbol == signal.symbol && - IsValid(maxInDDSignal, xAU5MagicNumber); + IsValid(maxInDDSignal, xEU5MagicNumber); if (!isValidSignal) { return; @@ -856,14 +856,14 @@ void XAU5HnadleCrossSignal( isDirectional ? ( // - xAU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_REGULAR || - xAU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_REGULAR_INDIRECTION_IMPORTANT + xEU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_REGULAR || + xEU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_REGULAR_INDIRECTION_IMPORTANT // ) : ( // - xAU5CrossSignalsMethod == X_CROSS_SIGNAL_INDIRECTION_REGULAR || - xAU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_IMPORTANT_INDIRECTION_REGULAR + xEU5CrossSignalsMethod == X_CROSS_SIGNAL_INDIRECTION_REGULAR || + xEU5CrossSignalsMethod == X_CROSS_SIGNAL_DIRECTION_IMPORTANT_INDIRECTION_REGULAR // ); if (isRegular) @@ -882,11 +882,11 @@ void XAU5HnadleCrossSignal( // // Calculate Usefull data ... -void XAU5HandleCalculateDrawDownUp() +void XEU5HandleCalculateDrawDownUp() { // XSignal signals[]; - xAU5Trader.GetSignals(signals); + xEU5Trader.GetSignals(signals); int signalsCount = ArraySize(signals); if (signalsCount <= 0) { @@ -897,7 +897,7 @@ void XAU5HandleCalculateDrawDownUp() double profit = 0; double volume = 0; XCollector collector = {}; - double maxAllowedVolume = xAU5VolumeManager.GetMaxAllowedVolume(); + double maxAllowedVolume = xEU5VolumeManager.GetMaxAllowedVolume(); for (int i = 0; i < signalsCount; i++) { // @@ -918,11 +918,11 @@ void XAU5HandleCalculateDrawDownUp() if (profit < 0) { // - xAU5MaxDrawDown = - xAU5MaxDrawDown == 0 || - xAU5MaxDrawDown > MathAbs(profit) + xEU5MaxDrawDown = + xEU5MaxDrawDown == 0 || + xEU5MaxDrawDown > MathAbs(profit) ? MathAbs(profit) - : xAU5MaxDrawDown; + : xEU5MaxDrawDown; // // Update Buffers ... @@ -933,29 +933,29 @@ void XAU5HandleCalculateDrawDownUp() // collector.time = time; collector.volume = volume; - collector.maxDrawDown = xAU5MaxDrawDown; + collector.maxDrawDown = xEU5MaxDrawDown; collector.maxAllowedVolume = maxAllowedVolume; - collector.minBalanceForOpenTrade = xAU5Trader.GetMinBalanceForOpenTrades(); + collector.minBalanceForOpenTrade = xEU5Trader.GetMinBalanceForOpenTrades(); } else { // - xAU5MaxDrawUp = - xAU5MaxDrawUp == 0 || - xAU5MaxDrawUp < profit + xEU5MaxDrawUp = + xEU5MaxDrawUp == 0 || + xEU5MaxDrawUp < profit ? profit - : xAU5MaxDrawUp; + : xEU5MaxDrawUp; } // // Update Collector ... - xAU5Collector.Add(collector); + xEU5Collector.Add(collector); // // Update Reports ... - xAU5Reporter.UpdateMaxDrawUpInReports(xAU5MaxDrawUp); - xAU5Reporter.UpdateMaxDrawDownInReports(xAU5MaxDrawDown); - xAU5Reporter.UpdateMaxSameTimeTradesInReports(signalsCount); + xEU5Reporter.UpdateMaxDrawUpInReports(xEU5MaxDrawUp); + xEU5Reporter.UpdateMaxDrawDownInReports(xEU5MaxDrawDown); + xEU5Reporter.UpdateMaxSameTimeTradesInReports(signalsCount); } // @@ -964,116 +964,116 @@ void XAU5HandleCalculateDrawDownUp() // // Runs When a Signal Successfully Executed ... -void XAU5OnSignal( +void XEU5OnSignal( XSignal &signal, // Specified Signal string &providers[] // Signal Providers ) { // // Issue Propper Alert ... - XAU5IssueSignalExecutionAlert( + XEU5IssueSignalExecutionAlert( signal, providers); // // Add Signal To Supports on Guard ... - xAU5Guard.AddSupport(signal); + xEU5Guard.AddSupport(signal); // // Update Reports ... - xAU5Reporter.AddSignalToReports( + xEU5Reporter.AddSignalToReports( signal, providers); } // // Runs when a Position Got Take Profit ... -void XAU5OnTP( +void XEU5OnTP( XSignal &signal // Specified Signal ) { // // Issue Propper Alert ... - XAU5IssueTPAlert(signal); + XEU5IssueTPAlert(signal); // // Remove Signal From Guard Protector ... - xAU5Guard.Remove(signal.ticket); - xAU5Guard.RemoveSupport(signal.ticket); + xEU5Guard.Remove(signal.ticket); + xEU5Guard.RemoveSupport(signal.ticket); // // Update Reports ... - xAU5Reporter.AddTradeTPInReports(); - XAU5UpdateReports(); + xEU5Reporter.AddTradeTPInReports(); + XEU5UpdateReports(); } // // Runs when a Position Got Stop Loss ... -void XAU5OnSL( +void XEU5OnSL( XSignal &signal // Specified Signal ) { // // Issue Propper Alert ... - XAU5IssueSLAlert(signal); + XEU5IssueSLAlert(signal); // // Remove Signal From Guard Protector ... - xAU5Guard.Remove(signal.ticket); - xAU5Guard.RemoveSupport(signal.ticket); + xEU5Guard.Remove(signal.ticket); + xEU5Guard.RemoveSupport(signal.ticket); // // Update Reports ... - xAU5Reporter.AddTradeSLInReports(); - XAU5UpdateReports(); + xEU5Reporter.AddTradeSLInReports(); + XEU5UpdateReports(); } // // Runs when a Position Risk Free ... -void XAU5OnRF( +void XEU5OnRF( XSignal &signal // Specified Signal ) { // // Issue Propper Alert ... - XAU5IssueRFAlert(signal); + XEU5IssueRFAlert(signal); // // Remove Signal From Guard Protector ... // since RiskFree Signals has SL ... - xAU5Guard.Remove(signal.ticket); - xAU5Guard.RemoveSupport(signal.ticket); + xEU5Guard.Remove(signal.ticket); + xEU5Guard.RemoveSupport(signal.ticket); // // Update Reports ... - xAU5Reporter.AddTradeSLInReports(); - XAU5UpdateReports(); + xEU5Reporter.AddTradeSLInReports(); + XEU5UpdateReports(); } // // Runs when a Position Force Closed ... -void XAU5OnFC( +void XEU5OnFC( XSignal &signal // Specified Signal ) { // // Issue Propper Alert ... - XAU5IssueFCAlert(signal); + XEU5IssueFCAlert(signal); // // Remove Signal From Guard Protector ... - xAU5Guard.Remove(signal.ticket); - xAU5Guard.RemoveSupport(signal.ticket); + xEU5Guard.Remove(signal.ticket); + xEU5Guard.RemoveSupport(signal.ticket); // // Update Reports ... - xAU5Reporter.AddTradeSLInReports(); - XAU5UpdateReports(); + xEU5Reporter.AddTradeSLInReports(); + XEU5UpdateReports(); } // // Runs when a Position Guarded ... -void XAU5OnGuard( +void XEU5OnGuard( XSignal &signal, // Specified Signal ENUM_X_GUARD_REASONS reason, // Reason of Guard Applied string message, // Guard Returned Message @@ -1088,17 +1088,17 @@ void XAU5OnGuard( LogMessage(message); // - xAU5MEnableProvider = false; + xEU5MEnableProvider = false; } // // Issue Propper Alert ... - XAU5IssueGuardAlert(signal, reason, isStopOut); + XEU5IssueGuardAlert(signal, reason, isStopOut); // // Update Reports ... - xAU5Reporter.AddTradeSLInReports(); - XAU5UpdateReports(); + xEU5Reporter.AddTradeSLInReports(); + XEU5UpdateReports(); } // @@ -1119,16 +1119,16 @@ void XAU5OnGuard( // // Calculating Volume for Tradings ... -double XAU5CalculateVolume( +double XEU5CalculateVolume( double forceMultiplier = 0 // some times we get more than one signal at the same time, here we increase volume using this ... ) { // // Check Open Trades ... - int openSignals = xAU5Trader.Count(); + int openSignals = xEU5Trader.Count(); // - double result = xAU5VolumeManager.CalculateVolume( + double result = xEU5VolumeManager.CalculateVolume( openSignals, _Symbol); @@ -1153,20 +1153,20 @@ double XAU5CalculateVolume( // // Update Report Info ... -void XAU5UpdateReports() +void XEU5UpdateReports() { // - double staticVolume = xAU5VolumeManager.GetStaticVolume(); - string staticVolumeCalculationMethod = EnumToString(xAU5StaticVolumeMethod); - double maxAllowedVolume = xAU5VolumeManager.GetMaxAllowedVolume(); - double volumeIncreaseMultiplier = xAU5VolumeManager.GetVolumeMultiplier(); - double balanceGowingToApplyMultiplier = xAU5VolumeManager.GetIncreaseMultiplierBalance(); + double staticVolume = xEU5VolumeManager.GetStaticVolume(); + string staticVolumeCalculationMethod = EnumToString(xEU5StaticVolumeMethod); + double maxAllowedVolume = xEU5VolumeManager.GetMaxAllowedVolume(); + double volumeIncreaseMultiplier = xEU5VolumeManager.GetVolumeMultiplier(); + double balanceGowingToApplyMultiplier = xEU5VolumeManager.GetIncreaseMultiplierBalance(); - double balanceGrowingToIncreaseMaxAllowedVolume = xAU5VolumeManager.GetIncreaseMaxAllowedVolumeBalance(); + double balanceGrowingToIncreaseMaxAllowedVolume = xEU5VolumeManager.GetIncreaseMaxAllowedVolumeBalance(); // // Update Reports Volume Info ... - xAU5Reporter.UpdateReportsVolumeInfo( + xEU5Reporter.UpdateReportsVolumeInfo( staticVolume, staticVolumeCalculationMethod, maxAllowedVolume, @@ -1176,24 +1176,24 @@ void XAU5UpdateReports() // // Calculate Max Allowed Drawdown ... - double minBalanceForTradeBasedOnBalance = xAU5Trader.GetMinBalanceForOpenTrades(); - xAU5Reporter.UpdateMinBalanceForOpenTradesInReports(minBalanceForTradeBasedOnBalance); + double minBalanceForTradeBasedOnBalance = xEU5Trader.GetMinBalanceForOpenTrades(); + xEU5Reporter.UpdateMinBalanceForOpenTradesInReports(minBalanceForTradeBasedOnBalance); } // -// Reset XAU5 Info Buffers ... -void XAU5ResetCollectors() +// Reset XEU5 Info Buffers ... +void XEU5ResetCollectors() { // // Reset Calculations Buffers and Variables ... - xAU5MaxDrawUp = 0; - xAU5MaxDrawDown = 0; + xEU5MaxDrawUp = 0; + xEU5MaxDrawDown = 0; // - xAU5Trader.Reset(); - xAU5Reporter.Reset(); - xAU5Collector.Reset(); - xAU5VolumeManager.ResetForceVolumeMultiplier(); + xEU5Trader.Reset(); + xEU5Reporter.Reset(); + xEU5Collector.Reset(); + xEU5VolumeManager.ResetForceVolumeMultiplier(); } // @@ -1206,7 +1206,7 @@ void XAU5ResetCollectors() // // Send Alert ... -void XAU5IssueAlert(string message) +void XEU5IssueAlert(string message) { // // Validate Args ... @@ -1216,7 +1216,7 @@ void XAU5IssueAlert(string message) } // - if (xAU5EnableAlerts) + if (xEU5EnableAlerts) { SendAlert(message); } @@ -1228,7 +1228,7 @@ void XAU5IssueAlert(string message) // // Send Take Profit Alert on Specific Signal ... -void XAU5IssueTPAlert( +void XEU5IssueTPAlert( XSignal &signal // Specified Signal ) { @@ -1236,15 +1236,15 @@ void XAU5IssueTPAlert( string message = ""; // - message = xAU5Trader.GenerateSignalTPComment(signal); + message = xEU5Trader.GenerateSignalTPComment(signal); // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Stop Loss Alert on Specific Signal ... -void XAU5IssueSLAlert( +void XEU5IssueSLAlert( XSignal &signal // Specified Signal ) { @@ -1252,15 +1252,15 @@ void XAU5IssueSLAlert( string message = ""; // - message = xAU5Trader.GenerateSignalSLComment(signal); + message = xEU5Trader.GenerateSignalSLComment(signal); // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Force Close Alert on Specific Signal ... -void XAU5IssueFCAlert( +void XEU5IssueFCAlert( XSignal &signal // Specified Signal ) { @@ -1268,15 +1268,15 @@ void XAU5IssueFCAlert( string message = ""; // - message = xAU5Trader.GenerateSignalForceCloseComment(signal); + message = xEU5Trader.GenerateSignalForceCloseComment(signal); // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Risk Free Alert on Specific Signal ... -void XAU5IssueRFAlert( +void XEU5IssueRFAlert( XSignal &signal // Specified Signal ) { @@ -1284,15 +1284,15 @@ void XAU5IssueRFAlert( string message = ""; // - message = xAU5Trader.GenerateSignalRFComment(signal, 0); + message = xEU5Trader.GenerateSignalRFComment(signal, 0); // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Guard Alert on Specific Signal ... -void XAU5IssueGuardAlert( +void XEU5IssueGuardAlert( XSignal &signal, // Specified Signal ENUM_X_GUARD_REASONS reason, // Specified Guard Reason bool isStopOut = false // Specified StopOut Fired or not @@ -1302,41 +1302,41 @@ void XAU5IssueGuardAlert( string message = ""; // - message = xAU5Guard.GenerateGuardedSignalComment( + message = xEU5Guard.GenerateGuardedSignalComment( signal, reason); // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Initialization Succeed Alert ... -void XAU5IssueInitializationSucceedAlert() +void XEU5IssueInitializationSucceedAlert() { // - string message = "Initializion of (" + XAU5ProviderName + " Provider" + " _ " + _Symbol + " _ " + EnumToString(_Period) + ") Succeeded ..."; - XAU5IssueAlert(message); + string message = "Initializion of (" + XEU5ProviderName + " Provider" + " _ " + _Symbol + " _ " + EnumToString(_Period) + ") Succeeded ..."; + XEU5IssueAlert(message); } // // Send De Initialization Succeed Alert ... -void XAU5IssueDeinitializationSucceedAlert() +void XEU5IssueDeinitializationSucceedAlert() { // - string message = "De Initializion of (" + XAU5ProviderName + " Provider" + ") Succeeded ..."; - XAU5IssueAlert(message); + string message = "De Initializion of (" + XEU5ProviderName + " Provider" + ") Succeeded ..."; + XEU5IssueAlert(message); } // // Send Signal Successfully Execution Alert ... -void XAU5IssueSignalExecutionAlert( +void XEU5IssueSignalExecutionAlert( XSignal &signal, // Specified Signal string &providers[] // Signal Providers ) { // - string message = xAU5Trader.ToString(signal); + string message = xEU5Trader.ToString(signal); // string providersMsg = ToString(providers); @@ -1346,12 +1346,12 @@ void XAU5IssueSignalExecutionAlert( } // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // // Send Signal Execution Alert ... -void XAU5IssueSignalExecutionError(int error) +void XEU5IssueSignalExecutionError(int error) { // string message = GetSignalExecutionError(error); @@ -1361,7 +1361,7 @@ void XAU5IssueSignalExecutionError(int error) } // - XAU5IssueAlert(message); + XEU5IssueAlert(message); } // diff --git a/Projects/XEU5/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 b/Projects/XEU5/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 index b57e633c..9dcb2cac 100644 --- a/Projects/XEU5/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 +++ b/Projects/XEU5/Providers/x-saherelm.xeu5.provider.indicators.lib.mq5 @@ -58,10 +58,10 @@ input bool xEU5XTSFIAllowShortSignals = true; // Enable Short Signals // // XOBDLH ... -input group "XEU5 XOBDLH Signaller"; -input bool xEU5XOBDLHEnableSignaller = true; // Enable Signaller -input bool xEU5XOBDLHAllowLongSignals = true; // Enable Long Signals -input bool xEU5XOBDLHAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XOBDLH Signaller"; +// input bool xEU5XOBDLHEnableSignaller = true; // Enable Signaller +// input bool xEU5XOBDLHAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XOBDLHAllowShortSignals = true; // Enable Short Signals // // XCHMACC ... @@ -72,17 +72,17 @@ input bool xEU5XCHMACCAllowShortSignals = true; // Enable Short Signals // // XCHMAMX ... -input group "XEU5 XCHMAMX Signaller"; -input bool xEU5XCHMAMXEnableSignaller = true; // Enable Signaller -input bool xEU5XCHMAMXAllowLongSignals = true; // Enable Long Signals -input bool xEU5XCHMAMXAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XCHMAMX Signaller"; +// input bool xEU5XCHMAMXEnableSignaller = true; // Enable Signaller +// input bool xEU5XCHMAMXAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XCHMAMXAllowShortSignals = true; // Enable Short Signals // // XCHMAMN ... -input group "XEU5 XCHMAMN Signaller"; -input bool xEU5XCHMAMNEnableSignaller = true; // Enable Signaller -input bool xEU5XCHMAMNAllowLongSignals = true; // Enable Long Signals -input bool xEU5XCHMAMNAllowShortSignals = true; // Enable Short Signals +// input group "XEU5 XCHMAMN Signaller"; +// input bool xEU5XCHMAMNEnableSignaller = true; // Enable Signaller +// input bool xEU5XCHMAMNAllowLongSignals = true; // Enable Long Signals +// input bool xEU5XCHMAMNAllowShortSignals = true; // Enable Short Signals // // Check in Test Mode or not ... @@ -128,9 +128,9 @@ bool xEU5MXTSFIAllowShortSignals = xEU5XTSFIAllowShortSignals; // // XOBDLH ... -bool xEU5MXOBDLHEnableSignaller = xEU5XOBDLHEnableSignaller; -bool xEU5MXOBDLHAllowLongSignals = xEU5XOBDLHAllowLongSignals; -bool xEU5MXOBDLHAllowShortSignals = xEU5XOBDLHAllowShortSignals; +bool xEU5MXOBDLHEnableSignaller = false; // xEU5XOBDLHEnableSignaller; +bool xEU5MXOBDLHAllowLongSignals = false; // xEU5XOBDLHAllowLongSignals; +bool xEU5MXOBDLHAllowShortSignals = false; // xEU5XOBDLHAllowShortSignals; // // XCHMACC ... @@ -140,15 +140,15 @@ bool xEU5MXCHMACCAllowShortSignals = xEU5XCHMACCAllowShortSignals; // // XCHMAMX ... -bool xEU5MXCHMAMXEnableSignaller = xEU5XCHMAMXEnableSignaller; -bool xEU5MXCHMAMXAllowLongSignals = xEU5XCHMAMXAllowLongSignals; -bool xEU5MXCHMAMXAllowShortSignals = xEU5XCHMAMXAllowShortSignals; +bool xEU5MXCHMAMXEnableSignaller = false; // xEU5XCHMAMXEnableSignaller; +bool xEU5MXCHMAMXAllowLongSignals = false; // xEU5XCHMAMXAllowLongSignals; +bool xEU5MXCHMAMXAllowShortSignals = false; // xEU5XCHMAMXAllowShortSignals; // // XCHMAMN ... -bool xEU5MXCHMAMNEnableSignaller = xEU5XCHMAMNEnableSignaller; -bool xEU5MXCHMAMNAllowLongSignals = xEU5XCHMAMNAllowLongSignals; -bool xEU5MXCHMAMNAllowShortSignals = xEU5XCHMAMNAllowShortSignals; +bool xEU5MXCHMAMNEnableSignaller = false; // xEU5XCHMAMNEnableSignaller; +bool xEU5MXCHMAMNAllowLongSignals = false; // xEU5XCHMAMNAllowLongSignals; +bool xEU5MXCHMAMNAllowShortSignals = false; // xEU5XCHMAMNAllowShortSignals; // XCProvider *xEU5Provider; @@ -436,10 +436,10 @@ bool XEU5InitIndicators() // // XOBDLH ... - bool isXOBDLHEnable = - xEU5XOBDLHEnableSignaller && - (xEU5XOBDLHAllowLongSignals || - xEU5XOBDLHAllowShortSignals); + bool isXOBDLHEnable = false; + // xEU5XOBDLHEnableSignaller && + // (xEU5XOBDLHAllowLongSignals || + // xEU5XOBDLHAllowShortSignals); // // XCHMACC ... @@ -450,17 +450,17 @@ bool XEU5InitIndicators() // // XCHMAMX ... - bool isXCHMAMXEnable = - xEU5XCHMAMXEnableSignaller && - (xEU5XCHMAMXAllowLongSignals || - xEU5XCHMAMXAllowShortSignals); + bool isXCHMAMXEnable = false; + // xEU5XCHMAMXEnableSignaller && + // (xEU5XCHMAMXAllowLongSignals || + // xEU5XCHMAMXAllowShortSignals); // // XCHMAMN ... - bool isXCHMAMNEnable = - xEU5XCHMAMNEnableSignaller && - (xEU5XCHMAMNAllowLongSignals || - xEU5XCHMAMNAllowShortSignals); + bool isXCHMAMNEnable = false; + // xEU5XCHMAMNEnableSignaller && + // (xEU5XCHMAMNAllowLongSignals || + // xEU5XCHMAMNAllowShortSignals); // bool hasSignaller = @@ -1103,12 +1103,12 @@ void XEU5DisableLongSignallers() // // XOBDLH ... - if (xEU5MXOBDLHEnableSignaller) - { - // - xEU5Provider.DisbaleXOBDLHLongs(); - xEU5MXOBDLHAllowLongSignals = false; - } + // if (xEU5MXOBDLHEnableSignaller) + // { + // // + // xEU5Provider.DisbaleXOBDLHLongs(); + // xEU5MXOBDLHAllowLongSignals = false; + // } // // XCHMACC ... @@ -1121,21 +1121,21 @@ void XEU5DisableLongSignallers() // // XCHMAMX ... - if (xEU5MXCHMAMXEnableSignaller) - { - // - xEU5Provider.DisbaleXCHMAMXLongs(); - xEU5MXCHMAMXAllowLongSignals = false; - } + // if (xEU5MXCHMAMXEnableSignaller) + // { + // // + // xEU5Provider.DisbaleXCHMAMXLongs(); + // xEU5MXCHMAMXAllowLongSignals = false; + // } // // XCHMAMN ... - if (xEU5MXCHMAMNEnableSignaller) - { - // - xEU5Provider.DisbaleXCHMAMNLongs(); - xEU5MXCHMAMNAllowLongSignals = false; - } + // if (xEU5MXCHMAMNEnableSignaller) + // { + // // + // xEU5Provider.DisbaleXCHMAMNLongs(); + // xEU5MXCHMAMNAllowLongSignals = false; + // } } // @@ -1213,20 +1213,20 @@ void XEU5EnableLongSignallers() // // XOBDLH ... - if (xEU5MXOBDLHEnableSignaller) - { - // - xEU5MXOBDLHAllowLongSignals = - xEU5XOBDLHAllowLongSignals - ? true - : xEU5MXOBDLHAllowLongSignals; + // if (xEU5MXOBDLHEnableSignaller) + // { + // // + // xEU5MXOBDLHAllowLongSignals = + // xEU5XOBDLHAllowLongSignals + // ? true + // : xEU5MXOBDLHAllowLongSignals; - // - if (xEU5MXOBDLHAllowLongSignals) - { - xEU5Provider.EnableXOBDLHLongs(); - } - } + // // + // if (xEU5MXOBDLHAllowLongSignals) + // { + // xEU5Provider.EnableXOBDLHLongs(); + // } + // } // // XCHMACC ... @@ -1247,37 +1247,37 @@ void XEU5EnableLongSignallers() // // XCHMAMX ... - if (xEU5MXCHMAMXEnableSignaller) - { - // - xEU5MXCHMAMXAllowLongSignals = - xEU5XCHMAMXAllowLongSignals - ? true - : xEU5MXCHMAMXAllowLongSignals; + // if (xEU5MXCHMAMXEnableSignaller) + // { + // // + // xEU5MXCHMAMXAllowLongSignals = + // xEU5XCHMAMXAllowLongSignals + // ? true + // : xEU5MXCHMAMXAllowLongSignals; - // - if (xEU5MXCHMAMXAllowLongSignals) - { - xEU5Provider.EnableXCHMAMXLongs(); - } - } + // // + // if (xEU5MXCHMAMXAllowLongSignals) + // { + // xEU5Provider.EnableXCHMAMXLongs(); + // } + // } // // XCHMAMN ... - if (xEU5MXCHMAMNEnableSignaller) - { - // - xEU5MXCHMAMNAllowLongSignals = - xEU5XCHMAMNAllowLongSignals - ? true - : xEU5MXCHMAMNAllowLongSignals; + // if (xEU5MXCHMAMNEnableSignaller) + // { + // // + // xEU5MXCHMAMNAllowLongSignals = + // xEU5XCHMAMNAllowLongSignals + // ? true + // : xEU5MXCHMAMNAllowLongSignals; - // - if (xEU5MXCHMAMNAllowLongSignals) - { - xEU5Provider.EnableXCHMAMNLongs(); - } - } + // // + // if (xEU5MXCHMAMNAllowLongSignals) + // { + // xEU5Provider.EnableXCHMAMNLongs(); + // } + // } } // @@ -1322,12 +1322,12 @@ void XEU5DisableShortSignallers() // // XOBDLH ... - if (xEU5MXOBDLHEnableSignaller) - { - // - xEU5Provider.DisableXOBDLHShorts(); - xEU5MXOBDLHAllowShortSignals = false; - } + // if (xEU5MXOBDLHEnableSignaller) + // { + // // + // xEU5Provider.DisableXOBDLHShorts(); + // xEU5MXOBDLHAllowShortSignals = false; + // } // // XCHMACC ... @@ -1340,21 +1340,21 @@ void XEU5DisableShortSignallers() // // XCHMAMX ... - if (xEU5MXCHMAMXEnableSignaller) - { - // - xEU5Provider.DisableXCHMAMXShorts(); - xEU5MXCHMAMXAllowShortSignals = false; - } + // if (xEU5MXCHMAMXEnableSignaller) + // { + // // + // xEU5Provider.DisableXCHMAMXShorts(); + // xEU5MXCHMAMXAllowShortSignals = false; + // } // // XCHMAMN ... - if (xEU5MXCHMAMNEnableSignaller) - { - // - xEU5Provider.DisableXCHMAMNShorts(); - xEU5MXCHMAMNAllowShortSignals = false; - } + // if (xEU5MXCHMAMNEnableSignaller) + // { + // // + // xEU5Provider.DisableXCHMAMNShorts(); + // xEU5MXCHMAMNAllowShortSignals = false; + // } } // @@ -1432,20 +1432,20 @@ void XEU5EnableShortSignallers() // // XOBDLH ... - if (xEU5MXOBDLHEnableSignaller) - { - // - xEU5MXOBDLHAllowShortSignals = - xEU5XOBDLHAllowShortSignals - ? true - : xEU5MXOBDLHAllowShortSignals; + // if (xEU5MXOBDLHEnableSignaller) + // { + // // + // xEU5MXOBDLHAllowShortSignals = + // xEU5XOBDLHAllowShortSignals + // ? true + // : xEU5MXOBDLHAllowShortSignals; - // - if (xEU5MXOBDLHAllowShortSignals) - { - xEU5Provider.EnableXOBDLHShorts(); - } - } + // // + // if (xEU5MXOBDLHAllowShortSignals) + // { + // xEU5Provider.EnableXOBDLHShorts(); + // } + // } // // XCHMACC ... @@ -1466,37 +1466,37 @@ void XEU5EnableShortSignallers() // // XCHMAMX ... - if (xEU5MXCHMAMXEnableSignaller) - { - // - xEU5MXCHMAMXAllowShortSignals = - xEU5XCHMAMXAllowShortSignals - ? true - : xEU5MXCHMAMXAllowShortSignals; + // if (xEU5MXCHMAMXEnableSignaller) + // { + // // + // xEU5MXCHMAMXAllowShortSignals = + // xEU5XCHMAMXAllowShortSignals + // ? true + // : xEU5MXCHMAMXAllowShortSignals; - // - if (xEU5MXCHMAMXAllowShortSignals) - { - xEU5Provider.EnableXCHMAMXShorts(); - } - } + // // + // if (xEU5MXCHMAMXAllowShortSignals) + // { + // xEU5Provider.EnableXCHMAMXShorts(); + // } + // } // // XCHMAMN ... - if (xEU5MXCHMAMNEnableSignaller) - { - // - xEU5MXCHMAMNAllowShortSignals = - xEU5XCHMAMNAllowShortSignals - ? true - : xEU5MXCHMAMNAllowShortSignals; + // if (xEU5MXCHMAMNEnableSignaller) + // { + // // + // xEU5MXCHMAMNAllowShortSignals = + // xEU5XCHMAMNAllowShortSignals + // ? true + // : xEU5MXCHMAMNAllowShortSignals; - // - if (xEU5MXCHMAMNAllowShortSignals) - { - xEU5Provider.EnableXCHMAMNShorts(); - } - } + // // + // if (xEU5MXCHMAMNAllowShortSignals) + // { + // xEU5Provider.EnableXCHMAMNShorts(); + // } + // } } // diff --git a/Projects/XEU5/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 b/Projects/XEU5/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 index 6f2be902..d991bf5b 100644 --- a/Projects/XEU5/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 +++ b/Projects/XEU5/Providers/x-saherelm.xeu5.provider.inputs.lib.mq5 @@ -36,15 +36,15 @@ input bool xEU5EnableProvider = true; // Enable Provider input int xEU5NumberOfItemsPerTick = 30; // Number Of items Readed In Each Tick // // Alerts ... -input bool xEU5EnableAlerts = true; // Enable Events Alert -input bool xEU5EnableHourlyAlerts = false; // Send Alert on each new Hour -input bool xEU5EnableDailyAlerts = true; // Send Alert on each new Day -input bool xEU5EnableWeeklyAlerts = true; // Send Alert on each new Week -input bool xEU5EnableMonthlyAlerts = true; // Send Alert on each new Month +input bool xEU5EnableAlerts = true; // Enable Events Alert +input bool xEU5EnableHourlyAlerts = false; // Send Alert on each new Hour +input bool xEU5EnableDailyAlerts = false; // Send Alert on each new Day +input bool xEU5EnableWeeklyAlerts = false; // Send Alert on each new Week +input bool xEU5EnableMonthlyAlerts = false; // Send Alert on each new Month // // Reports ... -input bool xEU5EnableDailyReports = false; // Send Report on each new Day -input bool xEU5EnableWeeklyReports = false; // Send Report on each new Week +input bool xEU5EnableDailyReports = false; // Send Report on each new Day +input bool xEU5EnableWeeklyReports = false; // Send Report on each new Week input bool xEU5EnableMonthlyReports = false; // Send Report on each new Month // @@ -68,11 +68,11 @@ input int xEU5MaxAllowedTrades = 10; input ENUM_X_CROSS_SIGNAL_METHOD xEU5CrossSignalsMethod = X_CROSS_SIGNAL_REGULAR; // Handle Cross Signals Method // // Max Allowed Trade Age ... -input int xEU5MaxAllowedTradeAge = 1800; // Detect Long Time Trades +input int xEU5MaxAllowedTradeAge = 1500; // Detect Long Time Trades input ENUM_X_GUARD_ACTIONS xEU5OldTradesAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // What to do with Old Trades // // Trade Volume Specific Configurations ... -input double xEU5StaticVolumeFactor = 0.0004; // Static Volume baesd on Balance +input double xEU5StaticVolumeFactor = 0.0002; // Static Volume baesd on Balance input ENUM_STATIC_VOLUME_METHODS xEU5StaticVolumeMethod = X_STATIC_VOLUME_BASED_ON_BALANCE; // How to Calculate Static Volume input double xEU5VolumeMultiplier = 0; // Volume Increase Multiplier input double xEU5ApplyVolumeMultiplierFactor = 0; // Apply Volume Multiplier Rate based on Balance @@ -80,14 +80,14 @@ input double xEU5MaxSupportedVolumePerTradeFactor = 0; input double xEU5IncreasedMaxSupportedVolumeRate = 0; // Increase Max Supported Volume based on Balance // // Trade Profits ... -input double xEU5MinRewardInPips = 6; // Minimum Reward Per Trade in Pips +input double xEU5MinRewardInPips = 6; // Minimum Reward Per Trade in Pips input double xEU5RiskFreeStepInPips = 0; // Make Trades Risk Free Steps in Pips -input double xEU5RiskFreeRate = 0; // Volume Multiplier for Risk Free Trades +input double xEU5RiskFreeRate = 0; // Volume Multiplier for Risk Free Trades // // Guard Riskable Money and Profits ... -input double xEU5CriticalDrawDownFactor = 0.30; // Critical Allowed Drawdown Factor based on Balance +input double xEU5CriticalDrawDownFactor = 0.20; // Critical Allowed Drawdown Factor based on Balance input ENUM_X_GUARD_ACTIONS xEU5CriticalGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // Specify Guard Action on Critical Drawdown -input double xEU5MaxAllowedDrawDownFactor = 0.40; // Max Allowed Drawdown Factor based on Balance +input double xEU5MaxAllowedDrawDownFactor = 0.25; // Max Allowed Drawdown Factor based on Balance input ENUM_X_GUARD_ACTIONS xEU5MaxAllowedGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_5; // Specify Guard Action on Max Allowed Drawdown input int xEU5GuardStopoutFiredAfterTouches = 5; // Guard Stopout all Trades if Max Allowed Drawdown touched