/////////////////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 XEU5 Signal Provider Indicators Library // ---------------------------------------------------------------- // // 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 Provider Inputs ... #include "x-saherelm.xeu5.provider.inputs.lib.mq5" // // Include Provider Class ... #include "../Classes/x-saherelm.provider.lib.mq5" // // Signallers ... input group "XEU5 Signallers"; // // XTD ... 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 "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 "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 "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 "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 "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 "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 // // Check in Test Mode or not ... bool xEU5IsTestMode = false; // // Detect max Input Length of Indicators ... int xEU5MaxLengthOfInputs = 0; // // Detect Calculated Bars ... int xEU5CalculatedBars = 0; // // Check prevent Double Signalling on Same Candle ... bool waitUntilNextCandle = false; // // Signaller Variables ... // // XTD ... bool xEU5MXTDEnableSignaller = xEU5XTDEnableSignaller; bool xEU5MXTDAllowLongSignals = xEU5XTDAllowLongSignals; bool xEU5MXTDAllowShortSignals = xEU5XTDAllowShortSignals; // // XTAM ... bool xEU5MXTAMEnableSignaller = xEU5XTAMEnableSignaller; bool xEU5MXTAMAllowLongSignals = xEU5XTAMAllowLongSignals; bool xEU5MXTAMAllowShortSignals = xEU5XTAMAllowShortSignals; // // XSI ... bool xEU5MXSIEnableSignaller = xEU5XSIEnableSignaller; bool xEU5MXSIAllowLongSignals = xEU5XSIAllowLongSignals; bool xEU5MXSIAllowShortSignals = xEU5XSIAllowShortSignals; // // XTSFI ... bool xEU5MXTSFIEnableSignaller = xEU5XTSFIEnableSignaller; bool xEU5MXTSFIAllowLongSignals = xEU5XTSFIAllowLongSignals; bool xEU5MXTSFIAllowShortSignals = xEU5XTSFIAllowShortSignals; // // XOBDLH ... bool xEU5MXOBDLHEnableSignaller = xEU5XOBDLHEnableSignaller; bool xEU5MXOBDLHAllowLongSignals = xEU5XOBDLHAllowLongSignals; bool xEU5MXOBDLHAllowShortSignals = xEU5XOBDLHAllowShortSignals; // // XCHMACC ... bool xEU5MXCHMACCEnableSignaller = xEU5XCHMACCEnableSignaller; bool xEU5MXCHMACCAllowLongSignals = xEU5XCHMACCAllowLongSignals; bool xEU5MXCHMACCAllowShortSignals = xEU5XCHMACCAllowShortSignals; // // XCHMAMX ... bool xEU5MXCHMAMXEnableSignaller = xEU5XCHMAMXEnableSignaller; bool xEU5MXCHMAMXAllowLongSignals = xEU5XCHMAMXAllowLongSignals; bool xEU5MXCHMAMXAllowShortSignals = xEU5XCHMAMXAllowShortSignals; // // XCHMAMN ... bool xEU5MXCHMAMNEnableSignaller = xEU5XCHMAMNEnableSignaller; bool xEU5MXCHMAMNAllowLongSignals = xEU5XCHMAMNAllowLongSignals; bool xEU5MXCHMAMNAllowShortSignals = xEU5XCHMAMNAllowShortSignals; // XCProvider *xEU5Provider; // // Validate Indicators Inputs ... bool XEU5ValidateIndicatorsInputs() { // bool result = false; // // XTM ... result = XTMValidateInputs(); if (!result) { return result; } // // XAMA ... result = XAMAValidateInputs(); if (!result) { return result; } // // XTD ... result = XTDValidateInputs(); if (!result) { return result; } // // XFI ... result = XFIValidateInputs(); if (!result) { return result; } // // XTS ... result = XTSValidateInputs(); if (!result) { return result; } // // XOBD ... result = XOBDValidateInputs(); if (!result) { return result; } // // XLH ... result = XLHValidateInputs(); if (!result) { return result; } // // XRSI ... result = XRSIValidateInputs(); if (!result) { return result; } // // XCHLH ... result = XCHLHValidateInputs(); if (!result) { return result; } // // XCHMA ... result = XCHMAValidateInputs(); if (!result) { return result; } // // Make an Instance Of XCProvider Class for Use ... xEU5Provider = new XCProvider( // // Commons ... _Symbol, _Period, // // Signallers ... // // XTD ... xEU5MXTDEnableSignaller, xEU5MXTDAllowLongSignals, xEU5MXTDAllowShortSignals, // // XTAM ... xEU5MXTAMEnableSignaller, xEU5MXTAMAllowLongSignals, xEU5MXTAMAllowShortSignals, // // XSI ... xEU5MXSIEnableSignaller, xEU5MXSIAllowLongSignals, xEU5MXSIAllowShortSignals, // // XTSFI ... xEU5MXTSFIEnableSignaller, xEU5MXTSFIAllowLongSignals, xEU5MXTSFIAllowShortSignals, // // XOBDLH ... xEU5MXOBDLHEnableSignaller, xEU5MXOBDLHAllowLongSignals, xEU5MXOBDLHAllowShortSignals, // // XCHMACC ... xEU5MXCHMACCEnableSignaller, xEU5MXCHMACCAllowLongSignals, xEU5MXCHMACCAllowShortSignals, // // XCHMAMX ... xEU5MXCHMAMXEnableSignaller, xEU5MXCHMAMXAllowLongSignals, xEU5MXCHMAMXAllowShortSignals, // // XCHMAMN ... xEU5MXCHMAMNEnableSignaller, xEU5MXCHMAMNAllowLongSignals, xEU5MXCHMAMNAllowShortSignals // ); // result = true; // return result; } // // Init Indicators ... bool XEU5InitIndicators() { // bool result = false; // // Make it Enable when we need to Log Market Conditions ... xEU5IsTestMode = IsRunningOnTestMode(); // // Check and Calculate Max Length in Inputs ... // // // XTM ... xEU5MaxLengthOfInputs = MathMax( xTMMaPeriod, xEU5NumberOfItemsPerTick); // // XAMA ... xEU5MaxLengthOfInputs = MathMax( xAMALength, xEU5NumberOfItemsPerTick); xEU5MaxLengthOfInputs = MathMax( xAMAFastEMA, xEU5NumberOfItemsPerTick); xEU5MaxLengthOfInputs = MathMax( xAMASlowEMA, xEU5NumberOfItemsPerTick); // // XLH ... xEU5MaxLengthOfInputs = MathMax( xLHLength, xEU5NumberOfItemsPerTick); // // XTD ... xEU5MaxLengthOfInputs = MathMax( xTDLength, xEU5MaxLengthOfInputs); // // XFI ... xEU5MaxLengthOfInputs = MathMax( xFILength, xEU5MaxLengthOfInputs); // // XRSI ... xEU5MaxLengthOfInputs = MathMax( xRSILength, xEU5MaxLengthOfInputs); // // XOBD ... xEU5MaxLengthOfInputs = MathMax( xOBDLength, xEU5MaxLengthOfInputs); // // XCHLH ... xEU5MaxLengthOfInputs = MathMax( xCHLHLcLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHLHMcLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHLHScLength, xEU5MaxLengthOfInputs); // // XCHMA ... xEU5MaxLengthOfInputs = MathMax( xCHMAScFastLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHMAScSlowLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHMAMcFastLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHMAMcSlowLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHMALcFastLength, xEU5MaxLengthOfInputs); xEU5MaxLengthOfInputs = MathMax( xCHMALcSlowLength, xEU5MaxLengthOfInputs); // // Validate Indicators Inputs before Initialization ... result = XEU5ValidateIndicatorsInputs(); if (!result) { return result; } // // Validate Signallers ... // // XTD ... bool isXTDEnable = xEU5XTDEnableSignaller && (xEU5XTDAllowLongSignals || xEU5XTDAllowShortSignals); // // XTAM ... bool isXTAMEnable = xEU5XTAMEnableSignaller && (xEU5XTAMAllowLongSignals || xEU5XTAMAllowShortSignals); // // XSI ... bool isXSIEnable = xEU5XSIEnableSignaller && (xEU5XSIAllowLongSignals || xEU5XSIAllowShortSignals); // // XTSFI ... bool isXTSFIEnable = xEU5XTSFIEnableSignaller && (xEU5XTSFIAllowLongSignals || xEU5XTSFIAllowShortSignals); // // XOBDLH ... bool isXOBDLHEnable = xEU5XOBDLHEnableSignaller && (xEU5XOBDLHAllowLongSignals || xEU5XOBDLHAllowShortSignals); // // XCHMACC ... bool isXCHMACCEnable = xEU5XCHMACCEnableSignaller && (xEU5XCHMACCAllowLongSignals || xEU5XCHMACCAllowShortSignals); // // XCHMAMX ... bool isXCHMAMXEnable = xEU5XCHMAMXEnableSignaller && (xEU5XCHMAMXAllowLongSignals || xEU5XCHMAMXAllowShortSignals); // // XCHMAMN ... bool isXCHMAMNEnable = xEU5XCHMAMNEnableSignaller && (xEU5XCHMAMNAllowLongSignals || xEU5XCHMAMNAllowShortSignals); // bool hasSignaller = // isXTDEnable || isXTAMEnable || isXSIEnable || isXTSFIEnable || isXOBDLHEnable || isXCHMACCEnable || isXCHMAMXEnable || isXCHMAMNEnable // ; result = hasSignaller; if (!result) { // LogMessage("XEU5 doesn't enable any Signaller ..."); // return result; } // // Initialize Indicator/Oscillator Handlers ... ResetLastError(); // // XTM Init ... result = XTMInitHandlers(); if (!result) { return result; } // // XAMA Init ... result = XAMAInitHandlers(); if (!result) { return result; } // // XLH Init ... result = XLHInitHandlers(); if (!result) { return result; } // // XTD Init ... result = XTDInitHandlers(); if (!result) { return result; } // // XFI Init ... result = XFIInitHandlers(); if (!result) { return result; } // // XTS Init ... result = XTSInitHandlers(); if (!result) { return result; } // // XRSI Init ... result = XRSIInitHandlers(); if (!result) { return result; } // // XOBD Init ... result = XOBDInitHandlers(); if (!result) { return result; } // // XCLH Init ... result = XCHLHInitHandlers(); if (!result) { return result; } // // XCHMA Init ... result = XCHMAInitHandlers(); if (!result) { return result; } // result = true; // return result; } // // Release Indicators ... void XEU5ReleaseIndicators() { // // Release Handlers ... XTMReleaseHandlers(); XAMAReleaseHandlers(); XLHReleaseHandlers(); XTDReleaseHandlers(); XFIReleaseHandlers(); XTSReleaseHandlers(); XRSIReleaseHandlers(); XOBDReleaseHandlers(); XCHMAReleaseHandlers(); XCHLHReleaseHandlers(); } // // Handle Reading Buffers ... void XEU5HandleReadingBuffers() { // // Reading Calculated Bars for a Simple Handler ... xEU5CalculatedBars = BarsCalculated(xTMHandler); // // Read Indicators Buffers ... XTMReadBuffers(xEU5NumberOfItemsPerTick); XAMAReadBuffers(xEU5NumberOfItemsPerTick); XLHReadBuffers(xEU5NumberOfItemsPerTick); XTDReadBuffers(xEU5NumberOfItemsPerTick); XFIReadBuffers(xEU5NumberOfItemsPerTick); XTSReadBuffers(xEU5NumberOfItemsPerTick); XRSIReadBuffers(xEU5NumberOfItemsPerTick); XOBDReadBuffers(xEU5NumberOfItemsPerTick); XCHMAReadBuffers(xEU5NumberOfItemsPerTick); XCHLHReadBuffers(xEU5NumberOfItemsPerTick); // xEU5Provider.ReadConditions(); } // // // START Combination Functions ... // // // // Can Open Long Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Long Signals ... bool XEU5CanOpenLongTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XEU5HasLongSignal(info); // result = // hasSignal // ; // if (result) { xEU5Provider.ClearConditions(); } // return result; } // // Can Close Long Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Long Signals ... bool XEU5CanCloseLongTrade() { // bool result = false; // return result; } // // Can Open Short Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Short Signals ... bool XEU5CanOpenShortTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XEU5HasShortSignal(info); // result = // hasSignal // ; // if (result) { xEU5Provider.ClearConditions(); } // return result; } // // Can Close Short Trade ... // this is a Function will Check all market Conditions and get all // Strategy requirement Verifications for Short Signals ... bool XEU5CanCloseShortTrade() { // bool result = false; // return result; } // // // END Combination Functions ... // // // // // START Combination Signaling ... // // // // Check Market Conditions by Combination of Power of All tools for LONGs ... bool XEU5HasLongSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XEU5XTDHasLongSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XEU5XTAMHasLongSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XEU5XSIHasLongSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XEU5XTSFIHasLongSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XEU5XOBDLHHasLongSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XEU5XCHMACCHasLongSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XEU5XCHMAMNHasLongSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XEU5XCHMAMXHasLongSignal(); if (isXCHMAMXHasSignal) { // Add( EnumToString(XCHMAMX), info.signallers); } // result = // isXTDHasSignal // || // isXTAMHasSignal // || // isXSIHasSignal // || // isXTSFIHasSignal // || // isXOBDLHHasSignal // || // isXCHMACCHasSignal // || // isXCHMAMNHasSignal // || // isXCHMAMXHasSignal // ; // if (result) { // // Only Log Signals Time Market Conditions if is in Testing Mode ... if (xEU5IsTestMode || xEU5EnableSignalAlerts) { // XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); string message = xEU5Provider.GenerateConditionsString(mConditions); // LogMessage( "Long Signal Provided by: \n" + info.signallers[ArraySize(info.signallers) - 1] + "\n" + "Pusher: " + (string)ArraySize(info.signallers) + "\n" + "Market Conditions: " + message); } } // return result; } // // Check Market Conditions by Combination of Power of All tools for SHORTs ... bool XEU5HasShortSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XEU5XTDHasShortSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XEU5XTAMHasShortSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XEU5XSIHasShortSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XEU5XTSFIHasShortSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XEU5XOBDLHHasShortSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XEU5XCHMACCHasShortSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XEU5XCHMAMNHasShortSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XEU5XCHMAMXHasShortSignal(); if (isXCHMAMXHasSignal) { // Add( EnumToString(XCHMAMX), info.signallers); } // result = // isXTDHasSignal // || // isXTAMHasSignal // || // isXSIHasSignal // || // isXTSFIHasSignal // || // isXOBDLHHasSignal // || // isXCHMACCHasSignal // || // isXCHMAMNHasSignal // || // isXCHMAMXHasSignal // ; // if (result) { // // Only Log Signals Time Market Conditions if is in Testing Mode ... if (xEU5IsTestMode || xEU5EnableSignalAlerts) { // XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); string message = xEU5Provider.GenerateConditionsString(mConditions); // LogMessage( "Short Signal Provided by: \n" + info.signallers[ArraySize(info.signallers) - 1] + "\n" + "Pusher: " + (string)ArraySize(info.signallers) + "\n" + "Market Conditions: " + message); } } // return result; } // // // END Combination Signaling ... // // // // START Signal Providers ... // // // Disbale All Signallers Longs ... void XEU5DisableLongSignallers() { // // XTD ... if (xEU5MXTDEnableSignaller) { // xEU5Provider.DisbaleXTDLongs(); xEU5MXTDAllowLongSignals = false; } // // XTAM ... if (xEU5MXTAMEnableSignaller) { // xEU5Provider.DisbaleXTAMLongs(); xEU5MXTAMAllowLongSignals = false; } // // XSI ... if (xEU5MXSIEnableSignaller) { // xEU5Provider.DisbaleXSILongs(); xEU5MXSIAllowLongSignals = false; } // // XTSFI ... if (xEU5MXTSFIEnableSignaller) { // xEU5Provider.DisbaleXTSFILongs(); xEU5MXTSFIAllowLongSignals = false; } // // XOBDLH ... if (xEU5MXOBDLHEnableSignaller) { // xEU5Provider.DisbaleXOBDLHLongs(); xEU5MXOBDLHAllowLongSignals = false; } // // XCHMACC ... if (xEU5MXCHMACCEnableSignaller) { // xEU5Provider.DisbaleXCHMACCLongs(); xEU5MXCHMACCAllowLongSignals = false; } // // XCHMAMX ... if (xEU5MXCHMAMXEnableSignaller) { // xEU5Provider.DisbaleXCHMAMXLongs(); xEU5MXCHMAMXAllowLongSignals = false; } // // XCHMAMN ... if (xEU5MXCHMAMNEnableSignaller) { // xEU5Provider.DisbaleXCHMAMNLongs(); xEU5MXCHMAMNAllowLongSignals = false; } } // // Enable All Signallers Longs ... // Only if they are Configured as Enable at Settings ... void XEU5EnableLongSignallers() { // // XTD ... if (xEU5MXTDEnableSignaller) { // xEU5MXTDAllowLongSignals = xEU5XTDAllowLongSignals ? true : xEU5MXTDAllowLongSignals; // if (xEU5MXTDAllowLongSignals) { xEU5Provider.EnableXTDLongs(); } } // // XTAM ... if (xEU5MXTAMEnableSignaller) { // xEU5MXTAMAllowLongSignals = xEU5XTAMAllowLongSignals ? true : xEU5MXTAMAllowLongSignals; // if (xEU5MXTAMAllowLongSignals) { xEU5Provider.EnableXTAMLongs(); } } // // XSI ... if (xEU5MXSIEnableSignaller) { // xEU5MXSIAllowLongSignals = xEU5XSIAllowLongSignals ? true : xEU5MXSIAllowLongSignals; // if (xEU5MXSIAllowLongSignals) { xEU5Provider.EnableXSILongs(); } } // // XTSFI ... if (xEU5MXTSFIEnableSignaller) { // xEU5MXTSFIAllowLongSignals = xEU5XTSFIAllowLongSignals ? true : xEU5MXTSFIAllowLongSignals; // if (xEU5MXTSFIAllowLongSignals) { xEU5Provider.EnableXTSFILongs(); } } // // XOBDLH ... if (xEU5MXOBDLHEnableSignaller) { // xEU5MXOBDLHAllowLongSignals = xEU5XOBDLHAllowLongSignals ? true : xEU5MXOBDLHAllowLongSignals; // if (xEU5MXOBDLHAllowLongSignals) { xEU5Provider.EnableXOBDLHLongs(); } } // // XCHMACC ... if (xEU5MXCHMACCEnableSignaller) { // xEU5MXCHMACCAllowLongSignals = xEU5XCHMACCAllowLongSignals ? true : xEU5MXCHMACCAllowLongSignals; // if (xEU5MXCHMACCAllowLongSignals) { xEU5Provider.EnableXCHMACCLongs(); } } // // XCHMAMX ... if (xEU5MXCHMAMXEnableSignaller) { // xEU5MXCHMAMXAllowLongSignals = xEU5XCHMAMXAllowLongSignals ? true : xEU5MXCHMAMXAllowLongSignals; // if (xEU5MXCHMAMXAllowLongSignals) { xEU5Provider.EnableXCHMAMXLongs(); } } // // XCHMAMN ... if (xEU5MXCHMAMNEnableSignaller) { // xEU5MXCHMAMNAllowLongSignals = xEU5XCHMAMNAllowLongSignals ? true : xEU5MXCHMAMNAllowLongSignals; // if (xEU5MXCHMAMNAllowLongSignals) { xEU5Provider.EnableXCHMAMNLongs(); } } } // // Disable All Signallers Shorts ... void XEU5DisableShortSignallers() { // // XTD ... if (xEU5MXTDEnableSignaller) { // xEU5Provider.DisableXTDShorts(); xEU5MXTDAllowShortSignals = false; } // // XTAM ... if (xEU5MXTAMEnableSignaller) { // xEU5Provider.DisableXTAMShorts(); xEU5MXTAMAllowShortSignals = false; } // // XSI ... if (xEU5MXSIEnableSignaller) { // xEU5Provider.DisableXSIShorts(); xEU5MXSIAllowShortSignals = false; } // // XTSFI ... if (xEU5MXTSFIEnableSignaller) { // xEU5Provider.DisableXTSFIShorts(); xEU5MXTSFIAllowShortSignals = false; } // // XOBDLH ... if (xEU5MXOBDLHEnableSignaller) { // xEU5Provider.DisableXOBDLHShorts(); xEU5MXOBDLHAllowShortSignals = false; } // // XCHMACC ... if (xEU5MXCHMACCEnableSignaller) { // xEU5Provider.DisableXCHMACCShorts(); xEU5MXCHMACCAllowShortSignals = false; } // // XCHMAMX ... if (xEU5MXCHMAMXEnableSignaller) { // xEU5Provider.DisableXCHMAMXShorts(); xEU5MXCHMAMXAllowShortSignals = false; } // // XCHMAMN ... if (xEU5MXCHMAMNEnableSignaller) { // xEU5Provider.DisableXCHMAMNShorts(); xEU5MXCHMAMNAllowShortSignals = false; } } // // Enable All Signallers Shorts ... // Only if they are Configured as Enable at Settings ... void XEU5EnableShortSignallers() { // // XTD ... if (xEU5MXTDEnableSignaller) { // xEU5MXTDAllowShortSignals = xEU5XTDAllowShortSignals ? true : xEU5MXTDAllowShortSignals; // if (xEU5MXTDAllowShortSignals) { xEU5Provider.EnableXTDShorts(); } } // // XTAM ... if (xEU5MXTAMEnableSignaller) { // xEU5MXTAMAllowShortSignals = xEU5XTAMAllowShortSignals ? true : xEU5MXTAMAllowShortSignals; // if (xEU5MXTAMAllowShortSignals) { xEU5Provider.EnableXTAMShorts(); } } // // XSI ... if (xEU5MXSIEnableSignaller) { // xEU5MXSIAllowShortSignals = xEU5XSIAllowShortSignals ? true : xEU5MXSIAllowShortSignals; // if (xEU5MXSIAllowShortSignals) { xEU5Provider.EnableXSIShorts(); } } // // XTSFI ... if (xEU5MXTSFIEnableSignaller) { // xEU5MXTSFIAllowShortSignals = xEU5XTSFIAllowShortSignals ? true : xEU5MXTSFIAllowShortSignals; // if (xEU5MXTSFIAllowShortSignals) { xEU5Provider.EnableXTSFIShorts(); } } // // XOBDLH ... if (xEU5MXOBDLHEnableSignaller) { // xEU5MXOBDLHAllowShortSignals = xEU5XOBDLHAllowShortSignals ? true : xEU5MXOBDLHAllowShortSignals; // if (xEU5MXOBDLHAllowShortSignals) { xEU5Provider.EnableXOBDLHShorts(); } } // // XCHMACC ... if (xEU5MXCHMACCEnableSignaller) { // xEU5MXCHMACCAllowShortSignals = xEU5XCHMACCAllowShortSignals ? true : xEU5MXCHMACCAllowShortSignals; // if (xEU5MXCHMACCAllowShortSignals) { xEU5Provider.EnableXCHMACCShorts(); } } // // XCHMAMX ... if (xEU5MXCHMAMXEnableSignaller) { // xEU5MXCHMAMXAllowShortSignals = xEU5XCHMAMXAllowShortSignals ? true : xEU5MXCHMAMXAllowShortSignals; // if (xEU5MXCHMAMXAllowShortSignals) { xEU5Provider.EnableXCHMAMXShorts(); } } // // XCHMAMN ... if (xEU5MXCHMAMNEnableSignaller) { // xEU5MXCHMAMNAllowShortSignals = xEU5XCHMAMNAllowShortSignals ? true : xEU5MXCHMAMNAllowShortSignals; // if (xEU5MXCHMAMNAllowShortSignals) { xEU5Provider.EnableXCHMAMNShorts(); } } } // // // // // XTD Long Signal Checking ... bool XEU5XTDHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXTDEnableSignaller || !xEU5MXTDAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XTDHasLongConditions() // && // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTSCurrentMin && mConditions.isXTDSignalCrossedOverBear && (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.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXTSCurrentMax) // || // (mConditions.isXCHMALCVale && mConditions.isXTSCurrentUnderNearest) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural) // || // (mConditions.isXFICrossedOverZero && mConditions.isXTDSignalCrossedOverBear) // ) // ) // || // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (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) // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ( (mConditions.isXCHMAMCVale && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // ( // mConditions.isXAMANeutural // || // (mConditions.isXLHLLDecreased && mConditions.isXCHLHMCLCLLSame && mConditions.isXAMAStartBullish) // ) // ) // ) // || // // ((mConditions.isXTSCurrentMax && mConditions.isXLHHHDecreased) && ( // (mConditions.isXTDBearishVale && mConditions.isXCHLHMCLCLLSame && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) // || // (mConditions.isXCHMALCVale && mConditions.isXTDSignalCrossedOverBear && (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.isXTDBullOverBear && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame) // || // (mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (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) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMALCVale && mConditions.isXTSCurrentMin && mConditions.isXTDBullOverBear) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTDBullOverBear && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural) // || // (mConditions.isXCHMASCTrendsUp && mConditions.isXTMStartBearish && mConditions.isXAMAStartBearish) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // mConditions.isXCHMASCTrendsUp // || // (mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverNearest) // ) // ) // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMALCTrendsDown && (mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow)) && ( // (mConditions.isXTMNeutural && mConditions.isXTDBullOverBear && (mConditions.isXAMANeutural || mConditions.isXTSCurrentOverFarest)) // ) // ) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMABullish && mConditions.isXTDBullOverBear && mConditions.isXCHLHSCMCHHSame && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXCHMALCVale && mConditions.isXCHMALCTrendsUp && (mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow)) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXCHMALCVale && mConditions.isXCHMASCTrendsUp) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTDBullOverBear && mConditions.isXCHLHSCMCHHSame && mConditions.isXLHHighAttachedHH) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTDBullOverBear && ( // (mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTMEndBullish && mConditions.isXAMAEndBullish && mConditions.isXLHHighAttachedHH) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // mConditions.isXCHMAMCTrendsUp // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXFIOverZero && mConditions.isXTDBullOverBear) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XTAM Long Signal Checking ... bool XEU5XTAMHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXTAMEnableSignaller || !xEU5MXTAMAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XTAMHasLongConditions() // && // // 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.isXCHMAMCVale && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // (mConditions.isXTMStartBullish && mConditions.isXAMAStartBullish && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderFarest) // ) // ) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTSCurrentMax && mConditions.isXLHLLIncreased && mConditions.isXCHLHMCLCHHSame) // ) // ) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentMax) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHLHSCMCLLSame) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMAMCVale && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural) // ) // ) // || // (mConditions.isXCHMASCPeak && (mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || ((mConditions.isXCHMAMCVale && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && (mConditions.isXCHMALCVale && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow))) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (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.isXTMNeutural && mConditions.isXAMABearish && mConditions.isXTMEndBearish && mConditions.isXTSCurrentUnderFarest) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHLHSCMCLLSame && (mConditions.isXTSCurrentUnderFarest || mConditions.isXTSCurrentUnderMediest)) // || // (mConditions.isXCHLHMCLCHHSame && (mConditions.isXTSCurrentUnderNearest || mConditions.isXTSCurrentCrossedUnderNearest)) // || // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXTSAllSame && mConditions.isXCHMASCVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXCHLHSCMCLLSame && mConditions.isXCHLHMCLCHHSame) // ) // ) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ( (mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHLHSCMCLLSame && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderMediest && mConditions.isXTDBullCrossedUnderBear) // ) // ) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (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)) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) && ( // (mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentMax && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXTSCurrentMax && mConditions.isXTMStartBullish && mConditions.isXCHLHSCMCHHSame && mConditions.isXAMAStartBullish && mConditions.isXLHHighAttachedHH) // ) // ) // || // ((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)) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((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)) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XTAM Short Signal Checking ... bool XEU5XTAMHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXTAMEnableSignaller || !xEU5MXTAMAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XTAMHasShortConditions() // && // // 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.isXFIOverZero && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTSCurrentOverFarest) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ((mConditions.isXTMNeutural || mConditions.isXTMEndBullish) && mConditions.isXAMABullish && mConditions.isXFIOverZero && mConditions.isXTDBullOverBear) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHMASCTrendsUp && mConditions.isXTSCurrentOverNearest) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHMASCTrendsUp) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // || // (mConditions.isXFIOverZero && mConditions.isXCHMASCPeak && mConditions.isXTSCurrentOverFarest) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ( // mConditions.isXCHMAMCTrendsUp // || // (mConditions.isXTMNeutural && mConditions.isXCHMALCVale && mConditions.isXAMANeutural) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXCHMALCVale && mConditions.isXCHMALCTrendsUp && (mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow)) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXFIOverZero && mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentOverMediest) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTSCurrentMin && mConditions.isXCHMALCTrendsUp && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // || // ((mConditions.isXAMAVale && mConditions.isXCHMASCVale && mConditions.isXTSCurrentMin) && ( // mConditions.isXRSICrossedUnderShortExit // || // mConditions.isXTDBullishVale // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMALCVale && mConditions.isXTSCurrentMin && mConditions.isXCHLHSCMCLLSame && mConditions.isXLHLowAttachedLL) && ( // 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.isXCHMASCTrendsUp && mConditions.isXLHLowAttachedLL) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // ( // 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) // ) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // ( // mConditions.isXRSICrossedUnderShortExit // || // ((mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTDSignalVale && mConditions.isXTSCurrentMin && mConditions.isXTDBullishVale) && ( // (mConditions.isXTSAllSame && mConditions.isXLHHHDecreased && mConditions.isXCHLHSCMCLLSame) // || // (mConditions.isXLHLowAttachedLL && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXTMStartBullish && mConditions.isXAMAStartBullish) && ( // (mConditions.isXCHMASCPeak && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXCHLHMCLCHHSame && mConditions.isXCHLHMCLCLLSame) // ) // ) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear && mConditions.isXTSCurrentOverFarest) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTDBullOverBear) && ( // (mConditions.isXCHMASCTrendsUp && mConditions.isXTDSignalOverBear) // || // (mConditions.isXFIOverZero && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMBullish && mConditions.isXAMABullish && (mConditions.isXTDBullOverBear || mConditions.isXTSCurrentOverFarest)) // || // (mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame && (mConditions.isXTSCurrentOverFarest || mConditions.isXTSCurrentOverMediest)) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXLHLLDecreased && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTSCurrentMin && mConditions.isXCHMAMCTrendsUp && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((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) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXTSCurrentMin && mConditions.isXTDSignalUnderBear && mConditions.isXFICrossedUnderZero && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest && mConditions.isXTDBullCrossedUnderBear) // ) // ) // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XSI Long Signal Checking ... bool XEU5XSIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXSIEnableSignaller || !xEU5MXSIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XSIHasLongConditions() // && // // 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.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXCHMASCVale && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTSCurrentUnderNearest) // ) // ) // ) // ) // || // // 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.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) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (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.isXAMAEndBearish && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderMediest) // || // ((mConditions.isXTMVale && mConditions.isXAMAVale) // && // (mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale) // && // (mConditions.isXCHLHSCMCLLSame && mConditions.isXCHLHMCLCHHSame)) // ) // ) // || // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale) // || // (mConditions.isXTMVale && mConditions.isXTMNeutural && mConditions.isXCHLHMCLCLLSame && mConditions.isXAMAStartBullish && mConditions.isXTSCurrentUnderFarest) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (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) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXCHLHSCMCLLSame) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale) // || // (mConditions.isXCHMASCVale && mConditions.isXCHLHSCMCLLSame) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XSI Short Signal Checking ... bool XEU5XSIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXSIEnableSignaller || !xEU5MXSIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XSIHasShortConditions() // && // // 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) && // ( // false // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ((mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) && ( // (mConditions.isXTMNeutural && mConditions.isXLHHHIncreased && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXLHHHIncreased && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (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.isXLHHHIncreased && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // || // ((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) // )) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHMASCPeak && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak) // || // (mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXCHLHMCLCHHSame && mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentOverNearest) // || // (((mConditions.isXTMBullish || mConditions.isXTMStartBullish) && (mConditions.isXAMABullish || mConditions.isXAMAStartBullish)) && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // || // (mConditions.isXCHMASCPeak && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXLHHHIncreased && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHLHMCLCLLSame) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ((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.isXCHLHSameHHs && mConditions.isXLHHHIncreased && mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((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.isXCHMASCPeak && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale) && ( // ((mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) && ( // (mConditions.isXTMBullish && mConditions.isXCHLHSCMCHHSame) // ) // ) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XTSFI Long Signal Checking ... bool XEU5XTSFIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXTSFIEnableSignaller || !xEU5MXTSFIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XTSFIHasLongConditions() // && // // 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.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXAMANeutural && mConditions.isXAMAEndBearish && 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) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale) // ) // ) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && (mConditions.isXAMANeutural || mConditions.isXAMAEndBullish) && mConditions.isXCHLHSameHHs && mConditions.isXLHLLIncreased && mConditions.isXLHHighAttachedHH) // ) // ) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTDBearishVale && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXTDSignalUnderBear && mConditions.isXFICrossedUnderZero && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (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)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMASCOverMax && mConditions.isXCHMASCOverMin && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCVale && ( // mConditions.isXCHMALCVale // || // (mConditions.isXCHLHMCLCHHSame && mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // (mConditions.isXCHLHMCLCHHSame && mConditions.isXCHLHMCLCLLSame && mConditions.isXAMAStartBullish) // || // (mConditions.isXLHLLDecreased && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (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.isXCHMALCVale // || // (mConditions.isXTMNeutural && mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMASCPeak && (mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow)) // || // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMABullish && mConditions.isXTDBullOverBear && mConditions.isXTDSignalUnderBear) // || // (mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMASCPeak && (mConditions.isXAMANeutural || mConditions.isXAMAEndBullish)) // ) // ) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural) // || // (mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentUnderMediest) // || // (mConditions.isXCHMALCVale && (mConditions.isXAMANeutural || mConditions.isXAMAEndBullish) && mConditions.isXTMStartBearish) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // ((mConditions.isXCHLHSCMCHHSame && mConditions.isXTSCurrentUnderMediest) && ( // mConditions.isXCHMALCVale // || // (mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentCrossedUnderMediest) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMASCPeak && (mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow)) // || // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // || // ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXTMNeutural && mConditions.isXCHMALCVale && mConditions.isXAMAStartBullish && mConditions.isXFICrossedOverZero && mConditions.isXTDBullCrossedOverBear && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCVale && mConditions.isXTMNeutural && mConditions.isXAMANeutural) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMAMCPeak && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCVale && mConditions.isXTDBearishVale && mConditions.isXCHLHSCMCHHSame) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XTSFI Short Signal Checking ... bool XEU5XTSFIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXTSFIEnableSignaller || !xEU5MXTSFIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XTSFIHasShortConditions() // && // // 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.isXCHMALCVale && mConditions.isXCHLHMCLCLLSame) && ( // mConditions.isXCHMASCTrendsDown // || // (mConditions.isXTMNeutural && mConditions.isXTMEndBearish && mConditions.isXTSCurrentOverMediest) // ) // ) // || // (((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.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)) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ((mConditions.isXAMANeutural && mConditions.isXFIOverZero && mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverMediest) && ( // mConditions.isXTMNeutural // || // (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.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.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) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTSCurrentOverMediest && ( // ((mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHLHSCMCLLSame && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderFarest) && ( // mConditions.isXTSCurrentUnderNearest // || // (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) // ) // ) // ) // ) // ) // ) // || // (((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.isXCHMAMCVale && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXCHMALCPeak && mConditions.isXLHHHDecreased && mConditions.isXCHLHSCMCLLSame) // || // ((mConditions.isXTMNeutural && mConditions.isXAMAStartBearish) && ( // (mConditions.isXCHLHSameLLs && mConditions.isXTDBullOverBear) // || // (mConditions.isXAMAVale && mConditions.isXCHLHMCLCLLSame) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCVale && mConditions.isXCHMALCPeak && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXLHHHDecreased) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTDBullOverBear && mConditions.isXCHLHMCLCLLSame) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((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) // ) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXCHMASCVale && mConditions.isXCHLHSCMCLLSame && mConditions.isXCHLHMCLCHHSame && mConditions.isXTSCurrentOverMediest) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (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) // ) // ) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHLHSCMCLLSame && mConditions.isXCHMASCUnderMax && mConditions.isXCHMASCUnderMin && mConditions.isXTSCurrentOverMediest) && ( // mConditions.isXCHMAMCTrendsDown // || // (mConditions.isXTMBearish && mConditions.isXAMABearish) // ) // ) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXCHMASCTrendsUp && mConditions.isXTMStartBearish && mConditions.isXTDBullOverBear && mConditions.isXAMAStartBearish && mConditions.isXTSCurrentOverMediest) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // ((mConditions.isXCHMAMCVale && mConditions.isXCHLHSCMCLLSame && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXAMAVale && mConditions.isXTMBullish) // || // (mConditions.isXAMAVale && (mConditions.isXTMNeutural || mConditions.isXTMEndBearish)) // || // (mConditions.isXCHMALCPeak && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXTMNeutural && mConditions.isXCHMALCVale && mConditions.isXAMANeutural && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXCHLHMCLCLLSame && mConditions.isXLHPriceCrossedOverSignal) // || // (mConditions.isXTDBullUnderBear && mConditions.isXCHMAMCTrendsDown && mConditions.isXTDSignalUnderBear) // ) // ) // || // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentOverMediest) // || // ((mConditions.isXTMBullish && mConditions.isXFIOverZero && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXAMANeutural && mConditions.isXTDBullOverBear) // || // (mConditions.isXAMABullish && mConditions.isXTDBullCrossedOverBear) // ) // ) // || // (mConditions.isXTSCurrentOverMediest && ( // (mConditions.isXTMNeutural && mConditions.isXCHMALCVale && mConditions.isXAMANeutural && mConditions.isXLHLLIncreased && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHMASCTrendsUp) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXCHMAMCTrendsUp && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXCHLHMCLCHHSame && mConditions.isXTSCurrentOverMediest) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXTSCurrentOverMediest && ( // (mConditions.isXFIOverZero && mConditions.isXCHMALCPeak) // || // (mConditions.isXCHMAMCVale && mConditions.isXCHLHSCMCLLSame) // || // (mConditions.isXCHMALCPeak && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXLHHHDecreased) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // ((mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) && ( // ((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.isXTSCurrentUnderFarest && mConditions.isXTDBullCrossedUnderBear) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (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.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.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) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverMediest) && ( // (mConditions.isXAMANeutural && mConditions.isXCHLHSCMCHHSame && mConditions.isXTMStartBearish) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXCHLHSameLLs) // ) // ) // || // (mConditions.isXCHMASCTrendsUp && (mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow)) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XOBDLH Long Signal Checking ... bool XEU5XOBDLHHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXOBDLHEnableSignaller || !xEU5MXOBDLHAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // XMarketConditions xMConditions2 = xEU5Provider.GenerateMarketConditions(2); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XOBDLHHasLongConditions() // && // // 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) && // ( // false // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXCHMALCVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale && mConditions.isXCHLHSCMCLLSame) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((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.isXCHLHSameLLs) && ( // (mConditions.isXCHMALCVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXLHHHDecreased) // ) // ) // || // (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.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) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XOBDLH Short Signal Checking ... bool XEU5XOBDLHHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXOBDLHEnableSignaller || !xEU5MXOBDLHAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XOBDLHHasShortConditions() // && // // 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.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.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) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXFIOverZero && mConditions.isXCHLHMCLCLLSame && mConditions.isXCHLHSCMCHHSame && mConditions.isXTDBullOverBear) && ( // (mConditions.isXTSCurrentMax && mConditions.isXTMStartBullish && mConditions.isXAMAStartBullish && mConditions.isXTDSignalOverBear) // || // (mConditions.isXTMNeutural && mConditions.isXAMABullish && mConditions.isXTMEndBullish && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXTMNeutural && mConditions.isXAMABullish && mConditions.isXTMEndBullish) // || // (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.isXCHMASCPeak && mConditions.isXCHMAMCPeak && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXCHMASCPeak && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // || // (((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) && ( // ((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.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) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) && ( // (mConditions.isXCHMASCPeak && mConditions.isXCHMASCTrendsUp && mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMStartBullish && mConditions.isXTDBullOverBear && mConditions.isXAMAStartBullish && mConditions.isXTDSignalOverBear) // ) // ) // || // (((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) && ( // (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.isXFIOverZero && mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentMax && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMACC Long Signal Checking ... bool XEU5XCHMACCHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXCHMACCEnableSignaller || !xEU5MXCHMACCAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMACCHasLongConditions() // && // // 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.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (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.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.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHMAMCTrendsDown && ( // (mConditions.isXTSCurrentMax && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalUnderBear) // ) // ) // || // (mConditions.isXTDBullOverBear && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderFarest) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHMAMCTrendsDown && ( // (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.isXAMABearish && (mConditions.isXTMNeutural || mConditions.isXTMBearish)) && mConditions.isXTSCurrentUnderMediest && (mConditions.isXTDBullCrossedUnderBear || (mConditions.isXTDBullUnderBear && mConditions.isXFICrossedUnderZero))) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentOverFarest && mConditions.isXLHPriceCrossedUnderSignal) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((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) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow) && ( // (mConditions.isXTMEndBullish && mConditions.isXAMAEndBullish) // || // (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)) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (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.isXCHLHSCMCHHSame && mConditions.isXLHHighAttachedHH) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMALCPeak && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) && ( // (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.isXAMABullish && mConditions.isXCHLHSCMCHHSame && mConditions.isXLHHighAttachedHH) && ( // (mConditions.isXTMNeutural && mConditions.isXTMEndBullish && mConditions.isXTDSignalUnderBear) // || // ((mConditions.isXTMBullish && mConditions.isXTSCurrentMax) && ( // (mConditions.isXTDBullOverBear && mConditions.isXTDSignalUnderBear) // || // (mConditions.isXTDBullCrossedOverBear && mConditions.isXLHPriceCrossedOverSignal) // ) // ) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // ( (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) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXCHMAMCTrendsDown && ( // (mConditions.isXCHMALCPeak && mConditions.isXTMNeutural && mConditions.isXTMEndBullish && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // ) // ) // || // (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) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (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.isXTMBullish && mConditions.isXAMABullish && (mConditions.isXTSCurrentMin || mConditions.isXTSCurrentMax)) && ( // (mConditions.isXCHMALCPeak && mConditions.isXCHLHSameHHs && mConditions.isXTDSignalUnderBear) // || // (mConditions.isXLHLLIncreased && mConditions.isXCHLHSCMCHHSame && mConditions.isXTDBullUnderBear && mConditions.isXLHHighAttachedHH && mConditions.isXTDSignalUnderBear) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMACC Short Signal Checking ... bool XEU5XCHMACCHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXCHMACCEnableSignaller || !xEU5MXCHMACCAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMACCHasShortConditions() // && // // 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.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) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCVale && ( // ((mConditions.isXTMEndBearish || mConditions.isXTMNeutural) && (mConditions.isXAMABearish || mConditions.isXAMANeutural) && mConditions.isXFIOverZero && mConditions.isXTDBullOverBear && mConditions.isXFICrossedOverZero && mConditions.isXTSCurrentOverFarest) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXAMANeutural && mConditions.isXTMStartBearish && mConditions.isXCHMAMCTrendsDown && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXCHMALCVale && ( // ((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) // ) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTSCurrentMin && mConditions.isXTDBullOverBear && mConditions.isXAMAStartBearish && mConditions.isXTDSignalUnderBear) // || // ((mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) && ( // (mConditions.isXTSCurrentMax && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXTSCurrentMin && mConditions.isXCHMASCUnderMin) // ) // ) // || // ((mConditions.isXTMStartBearish && mConditions.isXTDBullOverBear && mConditions.isXAMAStartBearish) && ( // (mConditions.isXTSCurrentMin && 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.isXFICrossedUnderZero && mConditions.isXTDBullCrossedUnderBear) // || // (mConditions.isXCHMALCTrendsUp && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // || // (mConditions.isXTDBullOverBear && mConditions.isXCHLHMCLCLLSame && mConditions.isXFICrossedUnderZero && mConditions.isXLHPriceCrossedUnderSignal) // ) // ) // ) // ) // || // ((mConditions.isXCHMAMCTrendsDown && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && ( // (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.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.isXCHMALCVale && mConditions.isXCHMALCTrendsUp) // || // ((mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXCHMASCVale) // || // ((mConditions.isXCHLHSameLLs && mConditions.isXLHHHIncreased && mConditions.isXLHLowAttachedLL) && ( // mConditions.isXCHMAMCTrendsDown // || // mConditions.isXCHMASCCrossedUnderMin // ) // ) // ) // ) // ) // ) // || // ((mConditions.isXCHMALCVale && mConditions.isXTDBullCrossedUnderBear) && ( // (mConditions.isXCHLHSCMCLLSame && mConditions.isXLHLowAttachedLL) // || // (mConditions.isXCHLHMCLCHHSame && mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMAMCVale && mConditions.isXTSCurrentMin && mConditions.isXCHLHSCMCLLSame && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // || // ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // ((mConditions.isXAMABearish && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) && ( // (mConditions.isXTMEndBearish && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXTMNeutural && mConditions.isXTSCurrentMin && mConditions.isXCHLHSCMCLLSame && mConditions.isXCHMAMCTrendsDown && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest) // ) // ) // || // ((mConditions.isXTMBearish && mConditions.isXAMABearish) && ( // (mConditions.isXCHMALCVale && mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverNearest) // || // (mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMALCVale && (mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow)) && ( // ((mConditions.isXTMNeutural && mConditions.isXAMANeutural) && ( // (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) // ) // ) // || // (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.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.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) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXFIOverZero && mConditions.isXTSCurrentMax && mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverFarest) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMALCVale && mConditions.isXTSCurrentMin) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale) // || // (mConditions.isXTMBearish && 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) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMN Long Signal Checking ... bool XEU5XCHMAMNHasLongSignal() { // bool result = false; // // Validate Args ... 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 = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMAMNHasLongConditions() // && // // 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.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown) && ( // ( // (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) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCTrendsDown && mConditions.isXCHMALCTrendsDown) && ( // (((mConditions.isXTMVale || mConditions.isXTMNeutural) && mConditions.isXTMEndBearish) && (mConditions.isXAMANeutural || mConditions.isXAMAEndBearish) && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCTrendsDown && mConditions.isXCHMALCTrendsDown) && ( // (mConditions.isXCHMAMCVale && mConditions.isXLHLLDecreased && mConditions.isXCHLHMCLCHHSame) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTDBullUnderBear && 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) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // || // ((mConditions.isXCHMAMCVale && mConditions.isXCHMAMCTrendsUp && (mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow)) && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCTrendsDown && mConditions.isXCHMALCTrendsDown) && ( // (mConditions.isXCHMAMCVale && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHLHSCMCLLSame && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear) // ) // ) // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown) && ( // ((mConditions.isXCHMASCPeak && mConditions.isXCHMALCVale) && ( // mConditions.isXCHMAMCVale // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXLHHHDecreased && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // || // (mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXCHLHMCLCLLSame) // ) // ) // || // ((mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) && ( // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTDSignalUnderBear && mConditions.isXTSCurrentUnderNearest) // || // (mConditions.isXCHMALCVale && ( // mConditions.isXCHMASCTrendsDown // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentMax && mConditions.isXTDBearishVale) // || // (mConditions.isXAMANeutural && mConditions.isXTSCurrentMax && mConditions.isXTDBearishVale && mConditions.isXTMStartBullish && mConditions.isXTDSignalUnderBear) // ) // ) // ) // ) // || // (mConditions.isXCHMALCTrendsDown && ( // (mConditions.isXTMBullish && mConditions.isXAMABullish && (mConditions.isXCHLHMCLCHHSame || mConditions.isXCHLHMCLCLLSame) && mConditions.isXTSCurrentUnderNearest) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown) && ( // 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.isXCHLHSCMCLLSame && mConditions.isXTDSignalUnderBear) // || // mConditions.isXCHMASCTrendsDown // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // // 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) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMN Short Signal Checking ... bool XEU5XCHMAMNHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXCHMAMNEnableSignaller || !xEU5MXCHMAMNAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMAMNHasShortConditions() // && // // 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.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTSAllSame && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXTDBullOverBear && mConditions.isXTDSignalOverBear) // ) // ) // ) // ) // || // // 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.isXTMBearish || mConditions.isXTMNeutural) && mConditions.isXAMANeutural && mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXLHLLIncreased && mConditions.isXTSCurrentOverNearest) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverFarest) && ( // (mConditions.isXFIOverZero && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXAMANeutural && mConditions.isXAMAEndBullish && mConditions.isXTMStartBearish) // || // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXTSCurrentMax && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMALCVale && mConditions.isXTDBullOverBear && mConditions.isXTDSignalUnderBear && mConditions.isXFICrossedUnderZero && mConditions.isXTSCurrentOverFarest) // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // mConditions.isXRSICrossedUnderShortExit // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXTSCurrentOverFarest && (mConditions.isXCHMASCFastOverSlow || mConditions.isXCHMASCFastCrossedOverSlow)) && ( // (mConditions.isXTMNeutural && mConditions.isXAMAStartBearish) // || // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMASCVale && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow))) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXAMANeutural && mConditions.isXTMEndBearish && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMX Long Signal Checking ... bool XEU5XCHMAMXHasLongSignal() { // bool result = false; // // Validate Args ... 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 = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMAMXHasLongConditions() // && // // 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) && // ( // false // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXCHMALCPeak && ( // (mConditions.isXCHMALCTrendsDown && ( // ( // mConditions.isXCHMASCPeak // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHLHSameHHs && mConditions.isXLHHighAttachedHH && mConditions.isXTDSignalUnderBear) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // 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 ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && (mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow)) && ( // (mConditions.isXLHHHDecreased && mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear && mConditions.isXLHPriceCrossedOverSignal) // || // (mConditions.isXTMNeutural && mConditions.isXAMANeutural) // || // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // (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) // ) // ) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // (mConditions.isXCHMASCTrendsDown && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMALCTrendsDown) // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMX Short Signal Checking ... bool XEU5XCHMAMXHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEU5MXCHMAMXEnableSignaller || !xEU5MXCHMAMXAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEU5Provider.XCHMAMXHasShortConditions() // && // // 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.isXTMNeutural && mConditions.isXCHMASCVale && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak && mConditions.isXAMANeutural && mConditions.isXTSCurrentMin) // || // (((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) && ( // (mConditions.isXAMAStartBearish && mConditions.isXTSCurrentOverFarest) // || // (mConditions.isXCHMASCVale && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak) // || // (mConditions.isXTSCurrentMin && mConditions.isXCHLHSCMCHHSame && mConditions.isXAMAStartBearish) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMBearish && mConditions.isXLHHHIncreased && mConditions.isXTDBullOverBear && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHMAMCTrendsUp && mConditions.isXAMAStartBearish && mConditions.isXTSCurrentOverFarest) // ) // ) // ) // ) // || // // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentMin && mConditions.isXTMStartBearish && mConditions.isXAMAStartBearish && mConditions.isXLHLowAttachedLL) // ) // ) // ) // ) // || // // 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 ... // // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && (mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow)) && ( // ((mConditions.isXCHMAMCPeak && mConditions.isXCHMALCPeak) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale) // || // (mConditions.isXTMStartBearish && mConditions.isXAMAStartBearish && mConditions.isXTSCurrentOverFarest) // ) // ) // || // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMALCPeak && mConditions.isXTSCurrentMin && mConditions.isXCHMAMCTrendsDown) // ) // ) // || // ((mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow) && ( // (mConditions.isXTMBearish && mConditions.isXCHMAMCPeak && mConditions.isXAMAStartBearish && mConditions.isXTSCurrentOverFarest) // ) // ) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXTSCurrentMin && mConditions.isXLHHHDecreased && mConditions.isXTMStartBearish && mConditions.isXCHMALCTrendsUp && mConditions.isXAMAStartBearish) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // mConditions.isXCHMALCPeak // || // (mConditions.isXTSAllSame && mConditions.isXAMAEndBullish && mConditions.isXTMStartBearish && mConditions.isXTDBullOverBear && mConditions.isXLHLowAttachedLL) // ) // ) // || // (((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) // ) // ) // ) // ) // ) // ) // || // // PriceUnderSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((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))) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is Over Signal ... ( // ((mConditions.isXLHPriceOverSignal || mConditions.isXLHPriceCrossedOverSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXTMBearish && mConditions.isXAMABearish && mConditions.isXCHMAMCPeak && mConditions.isXTSCurrentMin && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsUp && (mConditions.isXCHMAMCFastOverSlow || mConditions.isXCHMAMCFastCrossedOverSlow)) // || // ((mConditions.isXCHMALCFastOverSlow || mConditions.isXCHMALCFastCrossedOverSlow) && ( // (mConditions.isXCHMASCVale && mConditions.isXTSCurrentMin && mConditions.isXTMStartBearish && mConditions.isXAMAStartBearish) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // ((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) // ) // ) // ) // ) // || // // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // ((mConditions.isXCHMASCTrendsUp && (mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow)) && ( // (mConditions.isXFIUnderZero && (mConditions.isXTMBearish || mConditions.isXTMStartBearish) && (mConditions.isXAMABearish || mConditions.isXAMAStartBearish) && (mConditions.isXTDBullUnderBear && mConditions.isXTDSignalUnderBear)) // ) // ) // ) // ) // || // // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // || // // 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 ... // // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // ) // ) // ) // ) // ; // return result; } // // END Signal Providers ... //