/////////////////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 XBTU5 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.xbtu5.provider.inputs.lib.mq5" // // Include Provider Class ... #include "../Classes/x-saherelm.provider.lib.mq5" // // Signallers ... input group "XBTU5 Signallers"; // // XTD ... input group "XBTU5 XTD Signaller"; input bool xBTU5XTDEnableSignaller = true; // Enable Signaller input bool xBTU5XTDAllowLongSignals = true; // Enable Long Signals input bool xBTU5XTDAllowShortSignals = true; // Enable Short Signals // // XTAM ... input group "XBTU5 XTAM Signaller"; input bool xBTU5XTAMEnableSignaller = true; // Enable Signaller input bool xBTU5XTAMAllowLongSignals = true; // Enable Long Signals input bool xBTU5XTAMAllowShortSignals = true; // Enable Short Signals // // XSI ... input group "XBTU5 XSI Signaller"; input bool xBTU5XSIEnableSignaller = true; // Enable Signaller input bool xBTU5XSIAllowLongSignals = true; // Enable Long Signals input bool xBTU5XSIAllowShortSignals = true; // Enable Short Signals // // XSTFI ... input group "XBTU5 XSTFI Signaller"; input bool xBTU5XSTFIEnableSignaller = true; // Enable Signaller input bool xBTU5XSTFIAllowLongSignals = true; // Enable Long Signals input bool xBTU5XSTFIAllowShortSignals = true; // Enable Short Signals // // XOBDLH ... input group "XBTU5 XOBDLH Signaller"; input bool xBTU5XOBDLHEnableSignaller = true; // Enable Signaller input bool xBTU5XOBDLHAllowLongSignals = true; // Enable Long Signals input bool xBTU5XOBDLHAllowShortSignals = true; // Enable Short Signals // // XCHMACC ... input group "XBTU5 XCHMACC Signaller"; input bool xBTU5XCHMACCEnableSignaller = true; // Enable Signaller input bool xBTU5XCHMACCAllowLongSignals = true; // Enable Long Signals input bool xBTU5XCHMACCAllowShortSignals = true; // Enable Short Signals // // XCHMAMX ... input group "XBTU5 XCHMAMX Signaller"; input bool xBTU5XCHMAMXEnableSignaller = true; // Enable Signaller input bool xBTU5XCHMAMXAllowLongSignals = true; // Enable Long Signals input bool xBTU5XCHMAMXAllowShortSignals = true; // Enable Short Signals // // XCHMAMN ... input group "XBTU5 XCHMAMN Signaller"; input bool xBTU5XCHMAMNEnableSignaller = true; // Enable Signaller input bool xBTU5XCHMAMNAllowLongSignals = true; // Enable Long Signals input bool xBTU5XCHMAMNAllowShortSignals = true; // Enable Short Signals // bool xBTU5IsTestMode = true; int xBTU5MaxLengthOfInputs = 0; int xBTU5CalculatedBars = 0; // // Signaller Variables ... // // XTD ... bool xBTU5MXTDEnableSignaller = xBTU5XTDEnableSignaller; bool xBTU5MXTDAllowLongSignals = xBTU5XTDAllowLongSignals; bool xBTU5MXTDAllowShortSignals = xBTU5XTDAllowShortSignals; // // XTAM ... bool xBTU5MXTAMEnableSignaller = xBTU5XTAMEnableSignaller; bool xBTU5MXTAMAllowLongSignals = xBTU5XTAMAllowLongSignals; bool xBTU5MXTAMAllowShortSignals = xBTU5XTAMAllowShortSignals; // // XSI ... bool xBTU5MXSIEnableSignaller = xBTU5XSIEnableSignaller; bool xBTU5MXSIAllowLongSignals = xBTU5XSIAllowLongSignals; bool xBTU5MXSIAllowShortSignals = xBTU5XSIAllowShortSignals; // // XSTFI ... bool xBTU5MXSTFIEnableSignaller = xBTU5XSTFIEnableSignaller; bool xBTU5MXSTFIAllowLongSignals = xBTU5XSTFIAllowLongSignals; bool xBTU5MXSTFIAllowShortSignals = xBTU5XSTFIAllowShortSignals; // // XOBDLH ... bool xBTU5MXOBDLHEnableSignaller = xBTU5XOBDLHEnableSignaller; bool xBTU5MXOBDLHAllowLongSignals = xBTU5XOBDLHAllowLongSignals; bool xBTU5MXOBDLHAllowShortSignals = xBTU5XOBDLHAllowShortSignals; // // XCHMACC ... bool xBTU5MXCHMACCEnableSignaller = xBTU5XCHMACCEnableSignaller; bool xBTU5MXCHMACCAllowLongSignals = xBTU5XCHMACCAllowLongSignals; bool xBTU5MXCHMACCAllowShortSignals = xBTU5XCHMACCAllowShortSignals; // // XCHMAMX ... bool xBTU5MXCHMAMXEnableSignaller = xBTU5XCHMAMXEnableSignaller; bool xBTU5MXCHMAMXAllowLongSignals = xBTU5XCHMAMXAllowLongSignals; bool xBTU5MXCHMAMXAllowShortSignals = xBTU5XCHMAMXAllowShortSignals; // // XCHMAMN ... bool xBTU5MXCHMAMNEnableSignaller = xBTU5XCHMAMNEnableSignaller; bool xBTU5MXCHMAMNAllowLongSignals = xBTU5XCHMAMNAllowLongSignals; bool xBTU5MXCHMAMNAllowShortSignals = xBTU5XCHMAMNAllowShortSignals; // XCPriver *xBTU5Provider; // // Validate Indicators Inputs ... bool XBTU5ValidateIndicatorsInputs() { // 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 XCPriver Class for Use ... xBTU5Provider = new XCPriver( // // Commons ... _Symbol, _Period, // // Signallers ... // // XTD ... xBTU5MXTDEnableSignaller, xBTU5MXTDAllowLongSignals, xBTU5MXTDAllowShortSignals, // // XTAM ... xBTU5MXTAMEnableSignaller, xBTU5MXTAMAllowLongSignals, xBTU5MXTAMAllowShortSignals, // // XSI ... xBTU5MXSIEnableSignaller, xBTU5MXSIAllowLongSignals, xBTU5MXSIAllowShortSignals, // // XSTFI ... xBTU5MXSTFIEnableSignaller, xBTU5MXSTFIAllowLongSignals, xBTU5MXSTFIAllowShortSignals, // // XOBDLH ... xBTU5MXOBDLHEnableSignaller, xBTU5MXOBDLHAllowLongSignals, xBTU5MXOBDLHAllowShortSignals, // // XCHMACC ... xBTU5MXCHMACCEnableSignaller, xBTU5MXCHMACCAllowLongSignals, xBTU5MXCHMACCAllowShortSignals, // // XCHMAMX ... xBTU5MXCHMAMXEnableSignaller, xBTU5MXCHMAMXAllowLongSignals, xBTU5MXCHMAMXAllowShortSignals, // // XCHMAMN ... xBTU5MXCHMAMNEnableSignaller, xBTU5MXCHMAMNAllowLongSignals, xBTU5MXCHMAMNAllowShortSignals // ); // result = true; // return result; } // // Init Indicators ... bool XBTU5InitIndicators() { // bool result = false; // // Make it Enable when we need to Log Market Conditions ... // xBTU5IsTestMode = false; // IsRunningOnTestMode(); // // Check and Calculate Max Length in Inputs ... // // // XTM ... xBTU5MaxLengthOfInputs = MathMax( xTMMaPeriod, xBTU5NumberOfItemsPerTick); // // XAMA ... xBTU5MaxLengthOfInputs = MathMax( xAMALength, xBTU5NumberOfItemsPerTick); xBTU5MaxLengthOfInputs = MathMax( xAMAFastEMA, xBTU5NumberOfItemsPerTick); xBTU5MaxLengthOfInputs = MathMax( xAMASlowEMA, xBTU5NumberOfItemsPerTick); // // XLH ... xBTU5MaxLengthOfInputs = MathMax( xLHLength, xBTU5NumberOfItemsPerTick); // // XTD ... xBTU5MaxLengthOfInputs = MathMax( xTDLength, xBTU5MaxLengthOfInputs); // // XFI ... xBTU5MaxLengthOfInputs = MathMax( xFILength, xBTU5MaxLengthOfInputs); // // XRSI ... xBTU5MaxLengthOfInputs = MathMax( xRSILength, xBTU5MaxLengthOfInputs); // // XOBD ... xBTU5MaxLengthOfInputs = MathMax( xOBDLength, xBTU5MaxLengthOfInputs); // // XCHLH ... xBTU5MaxLengthOfInputs = MathMax( xCHLHLcLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHLHMcLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHLHScLength, xBTU5MaxLengthOfInputs); // // XCHMA ... xBTU5MaxLengthOfInputs = MathMax( xCHMAScFastLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHMAScSlowLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHMAMcFastLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHMAMcSlowLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHMALcFastLength, xBTU5MaxLengthOfInputs); xBTU5MaxLengthOfInputs = MathMax( xCHMALcSlowLength, xBTU5MaxLengthOfInputs); // // Validate Indicators Inputs before Initialization ... result = XBTU5ValidateIndicatorsInputs(); if (!result) { return result; } // // Validate Signallers ... // // XTD ... bool isXTDEnable = xBTU5XTDEnableSignaller && (xBTU5XTDAllowLongSignals || xBTU5XTDAllowShortSignals); // // XTAM ... bool isXTAMEnable = xBTU5XTAMEnableSignaller && (xBTU5XTAMAllowLongSignals || xBTU5XTAMAllowShortSignals); // // XSI ... bool isXSIEnable = xBTU5XSIEnableSignaller && (xBTU5XSIAllowLongSignals || xBTU5XSIAllowShortSignals); // // XSTFI ... bool isXSTFIEnable = xBTU5XSTFIEnableSignaller && (xBTU5XSTFIAllowLongSignals || xBTU5XSTFIAllowShortSignals); // // XOBDLH ... bool isXOBDLHEnable = xBTU5XOBDLHEnableSignaller && (xBTU5XOBDLHAllowLongSignals || xBTU5XOBDLHAllowShortSignals); // // XCHMACC ... bool isXCHMACCEnable = xBTU5XCHMACCEnableSignaller && (xBTU5XCHMACCAllowLongSignals || xBTU5XCHMACCAllowShortSignals); // // XCHMAMX ... bool isXCHMAMXEnable = xBTU5XCHMAMXEnableSignaller && (xBTU5XCHMAMXAllowLongSignals || xBTU5XCHMAMXAllowShortSignals); // // XCHMAMN ... bool isXCHMAMNEnable = xBTU5XCHMAMNEnableSignaller && (xBTU5XCHMAMNAllowLongSignals || xBTU5XCHMAMNAllowShortSignals); // bool hasSignaller = // isXTDEnable || isXTAMEnable || isXSIEnable || isXSTFIEnable || isXOBDLHEnable || isXCHMACCEnable || isXCHMAMXEnable || isXCHMAMNEnable // ; result = hasSignaller; if (!result) { // LogMessage("XBTU5 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 XBTU5ReleaseIndicators() { // // Release Handlers ... XTMReleaseHandlers(); XAMAReleaseHandlers(); XLHReleaseHandlers(); XTDReleaseHandlers(); XFIReleaseHandlers(); XTSReleaseHandlers(); XRSIReleaseHandlers(); XOBDReleaseHandlers(); XCHMAReleaseHandlers(); XCHLHReleaseHandlers(); } // // Handle Reading Buffers ... void XBTU5HandleReadingBuffers() { // // Reading Calculated Bars for a Simple Handler ... xBTU5CalculatedBars = BarsCalculated(xTMHandler); // // Read Indicators Buffers ... XTMReadBuffers(xBTU5NumberOfItemsPerTick); XAMAReadBuffers(xBTU5NumberOfItemsPerTick); XLHReadBuffers(xBTU5NumberOfItemsPerTick); XTDReadBuffers(xBTU5NumberOfItemsPerTick); XFIReadBuffers(xBTU5NumberOfItemsPerTick); XTSReadBuffers(xBTU5NumberOfItemsPerTick); XRSIReadBuffers(xBTU5NumberOfItemsPerTick); XOBDReadBuffers(xBTU5NumberOfItemsPerTick); XCHMAReadBuffers(xBTU5NumberOfItemsPerTick); XCHLHReadBuffers(xBTU5NumberOfItemsPerTick); // xBTU5Provider.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 XBTU5CanOpenLongTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XBTU5HasLongSignal(info); // result = // hasSignal // ; // if (result) { xBTU5Provider.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 XBTU5CanCloseLongTrade() { // 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 XBTU5CanOpenShortTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XBTU5HasShortSignal(info); // result = // hasSignal // ; // if (result) { xBTU5Provider.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 XBTU5CanCloseShortTrade() { // bool result = false; // return result; } // // // END Combination Functions ... // // // // // START Combination Signaling ... // // // // Check Market Conditions by Combination of Power of All tools for LONGs ... bool XBTU5HasLongSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XBTU5XTDHasLongSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XBTU5XTAMHasLongSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XBTU5XSIHasLongSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XSTFI ... bool isXSTFIHasSignal = XBTU5XSTFIHasLongSignal(); if (isXSTFIHasSignal) { // Add( EnumToString(XSTFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XBTU5XOBDLHHasLongSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XBTU5XCHMACCHasLongSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XBTU5XCHMAMNHasLongSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XBTU5XCHMAMXHasLongSignal(); if (isXCHMAMXHasSignal) { // Add( EnumToString(XCHMAMX), info.signallers); } // result = // isXTDHasSignal // || // isXTAMHasSignal // || // isXSIHasSignal // || // isXSTFIHasSignal // || // isXOBDLHHasSignal // || // isXCHMACCHasSignal // || // isXCHMAMNHasSignal // || // isXCHMAMXHasSignal // ; // if (result) { // // Only Log Signals Time Market Conditions if is in Testing Mode ... if (xBTU5IsTestMode) { // XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); string message = xBTU5Provider.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 XBTU5HasShortSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XBTU5XTDHasShortSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XBTU5XTAMHasShortSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XBTU5XSIHasShortSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XSTFI ... bool isXSTFIHasSignal = XBTU5XSTFIHasShortSignal(); if (isXSTFIHasSignal) { // Add( EnumToString(XSTFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XBTU5XOBDLHHasShortSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XBTU5XCHMACCHasShortSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XBTU5XCHMAMNHasShortSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XBTU5XCHMAMXHasShortSignal(); if (isXCHMAMXHasSignal) { // Add( EnumToString(XCHMAMX), info.signallers); } // result = // isXTDHasSignal // || // isXTAMHasSignal // || // isXSIHasSignal // || // isXSTFIHasSignal // || // isXOBDLHHasSignal // || // isXCHMACCHasSignal // || // isXCHMAMNHasSignal // || // isXCHMAMXHasSignal // ; // if (result) { // // Only Log Signals Time Market Conditions if is in Testing Mode ... if (xBTU5IsTestMode) { // XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); string message = xBTU5Provider.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 XBTU5DisableLongSignallers() { // // XTD ... if (xBTU5MXTDEnableSignaller) { // xBTU5Provider.DisbaleXTDLongs(); xBTU5MXTDAllowLongSignals = false; } // // XTAM ... if (xBTU5MXTAMEnableSignaller) { // xBTU5Provider.DisbaleXTAMLongs(); xBTU5MXTAMAllowLongSignals = false; } // // XSI ... if (xBTU5MXSIEnableSignaller) { // xBTU5Provider.DisbaleXSILongs(); xBTU5MXSIAllowLongSignals = false; } // // XSTFI ... if (xBTU5MXSTFIEnableSignaller) { // xBTU5Provider.DisbaleXSTFILongs(); xBTU5MXSTFIAllowLongSignals = false; } // // XOBDLH ... if (xBTU5MXOBDLHEnableSignaller) { // xBTU5Provider.DisbaleXOBDLHLongs(); xBTU5MXOBDLHAllowLongSignals = false; } // // XCHMACC ... if (xBTU5MXCHMACCEnableSignaller) { // xBTU5Provider.DisbaleXCHMACCLongs(); xBTU5MXCHMACCAllowLongSignals = false; } // // XCHMAMX ... if (xBTU5MXCHMAMXEnableSignaller) { // xBTU5Provider.DisbaleXCHMAMXLongs(); xBTU5MXCHMAMXAllowLongSignals = false; } // // XCHMAMN ... if (xBTU5MXCHMAMNEnableSignaller) { // xBTU5Provider.DisbaleXCHMAMNLongs(); xBTU5MXCHMAMNAllowLongSignals = false; } } // // Enable All Signallers Longs ... // Only if they are Configured as Enable at Settings ... void XBTU5EnableLongSignallers() { // // XTD ... if (xBTU5MXTDEnableSignaller) { // xBTU5MXTDAllowLongSignals = xBTU5XTDAllowLongSignals ? true : xBTU5MXTDAllowLongSignals; // if (xBTU5MXTDAllowLongSignals) { xBTU5Provider.EnableXTDLongs(); } } // // XTAM ... if (xBTU5MXTAMEnableSignaller) { // xBTU5MXTAMAllowLongSignals = xBTU5XTAMAllowLongSignals ? true : xBTU5MXTAMAllowLongSignals; // if (xBTU5MXTAMAllowLongSignals) { xBTU5Provider.EnableXTAMLongs(); } } // // XSI ... if (xBTU5MXSIEnableSignaller) { // xBTU5MXSIAllowLongSignals = xBTU5XSIAllowLongSignals ? true : xBTU5MXSIAllowLongSignals; // if (xBTU5MXSIAllowLongSignals) { xBTU5Provider.EnableXSILongs(); } } // // XSTFI ... if (xBTU5MXSTFIEnableSignaller) { // xBTU5MXSTFIAllowLongSignals = xBTU5XSTFIAllowLongSignals ? true : xBTU5MXSTFIAllowLongSignals; // if (xBTU5MXSTFIAllowLongSignals) { xBTU5Provider.EnableXSTFILongs(); } } // // XOBDLH ... if (xBTU5MXOBDLHEnableSignaller) { // xBTU5MXOBDLHAllowLongSignals = xBTU5XOBDLHAllowLongSignals ? true : xBTU5MXOBDLHAllowLongSignals; // if (xBTU5MXOBDLHAllowLongSignals) { xBTU5Provider.EnableXOBDLHLongs(); } } // // XCHMACC ... if (xBTU5MXCHMACCEnableSignaller) { // xBTU5MXCHMACCAllowLongSignals = xBTU5XCHMACCAllowLongSignals ? true : xBTU5MXCHMACCAllowLongSignals; // if (xBTU5MXCHMACCAllowLongSignals) { xBTU5Provider.EnableXCHMACCLongs(); } } // // XCHMAMX ... if (xBTU5MXCHMAMXEnableSignaller) { // xBTU5MXCHMAMXAllowLongSignals = xBTU5XCHMAMXAllowLongSignals ? true : xBTU5MXCHMAMXAllowLongSignals; // if (xBTU5MXCHMAMXAllowLongSignals) { xBTU5Provider.EnableXCHMAMXLongs(); } } // // XCHMAMN ... if (xBTU5MXCHMAMNEnableSignaller) { // xBTU5MXCHMAMNAllowLongSignals = xBTU5XCHMAMNAllowLongSignals ? true : xBTU5MXCHMAMNAllowLongSignals; // if (xBTU5MXCHMAMNAllowLongSignals) { xBTU5Provider.EnableXCHMAMNLongs(); } } } // // Disable All Signallers Shorts ... void XBTU5DisableShortSignallers() { // // XTD ... if (xBTU5MXTDEnableSignaller) { // xBTU5Provider.DisableXTDShorts(); xBTU5MXTDAllowShortSignals = false; } // // XTAM ... if (xBTU5MXTAMEnableSignaller) { // xBTU5Provider.DisableXTAMShorts(); xBTU5MXTAMAllowShortSignals = false; } // // XSI ... if (xBTU5MXSIEnableSignaller) { // xBTU5Provider.DisableXSIShorts(); xBTU5MXSIAllowShortSignals = false; } // // XSTFI ... if (xBTU5MXSTFIEnableSignaller) { // xBTU5Provider.DisableXSTFIShorts(); xBTU5MXSTFIAllowShortSignals = false; } // // XOBDLH ... if (xBTU5MXOBDLHEnableSignaller) { // xBTU5Provider.DisableXOBDLHShorts(); xBTU5MXOBDLHAllowShortSignals = false; } // // XCHMACC ... if (xBTU5MXCHMACCEnableSignaller) { // xBTU5Provider.DisableXCHMACCShorts(); xBTU5MXCHMACCAllowShortSignals = false; } // // XCHMAMX ... if (xBTU5MXCHMAMXEnableSignaller) { // xBTU5Provider.DisableXCHMAMXShorts(); xBTU5MXCHMAMXAllowShortSignals = false; } // // XCHMAMN ... if (xBTU5MXCHMAMNEnableSignaller) { // xBTU5Provider.DisableXCHMAMNShorts(); xBTU5MXCHMAMNAllowShortSignals = false; } } // // Enable All Signallers Shorts ... // Only if they are Configured as Enable at Settings ... void XBTU5EnableShortSignallers() { // // XTD ... if (xBTU5MXTDEnableSignaller) { // xBTU5MXTDAllowShortSignals = xBTU5XTDAllowShortSignals ? true : xBTU5MXTDAllowShortSignals; // if (xBTU5MXTDAllowShortSignals) { xBTU5Provider.EnableXTDShorts(); } } // // XTAM ... if (xBTU5MXTAMEnableSignaller) { // xBTU5MXTAMAllowShortSignals = xBTU5XTAMAllowShortSignals ? true : xBTU5MXTAMAllowShortSignals; // if (xBTU5MXTAMAllowShortSignals) { xBTU5Provider.EnableXTAMShorts(); } } // // XSI ... if (xBTU5MXSIEnableSignaller) { // xBTU5MXSIAllowShortSignals = xBTU5XSIAllowShortSignals ? true : xBTU5MXSIAllowShortSignals; // if (xBTU5MXSIAllowShortSignals) { xBTU5Provider.EnableXSIShorts(); } } // // XSTFI ... if (xBTU5MXSTFIEnableSignaller) { // xBTU5MXSTFIAllowShortSignals = xBTU5XSTFIAllowShortSignals ? true : xBTU5MXSTFIAllowShortSignals; // if (xBTU5MXSTFIAllowShortSignals) { xBTU5Provider.EnableXSTFIShorts(); } } // // XOBDLH ... if (xBTU5MXOBDLHEnableSignaller) { // xBTU5MXOBDLHAllowShortSignals = xBTU5XOBDLHAllowShortSignals ? true : xBTU5MXOBDLHAllowShortSignals; // if (xBTU5MXOBDLHAllowShortSignals) { xBTU5Provider.EnableXOBDLHShorts(); } } // // XCHMACC ... if (xBTU5MXCHMACCEnableSignaller) { // xBTU5MXCHMACCAllowShortSignals = xBTU5XCHMACCAllowShortSignals ? true : xBTU5MXCHMACCAllowShortSignals; // if (xBTU5MXCHMACCAllowShortSignals) { xBTU5Provider.EnableXCHMACCShorts(); } } // // XCHMAMX ... if (xBTU5MXCHMAMXEnableSignaller) { // xBTU5MXCHMAMXAllowShortSignals = xBTU5XCHMAMXAllowShortSignals ? true : xBTU5MXCHMAMXAllowShortSignals; // if (xBTU5MXCHMAMXAllowShortSignals) { xBTU5Provider.EnableXCHMAMXShorts(); } } // // XCHMAMN ... if (xBTU5MXCHMAMNEnableSignaller) { // xBTU5MXCHMAMNAllowShortSignals = xBTU5XCHMAMNAllowShortSignals ? true : xBTU5MXCHMAMNAllowShortSignals; // if (xBTU5MXCHMAMNAllowShortSignals) { xBTU5Provider.EnableXCHMAMNShorts(); } } } // // XTD Long Signal Checking ... bool XBTU5XTDHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXTDEnableSignaller || !xBTU5MXTDAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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 XBTU5XTDHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXTDEnableSignaller || !xBTU5MXTDAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XTAM Long Signal Checking ... bool XBTU5XTAMHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXTAMEnableSignaller || !xBTU5MXTAMAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XTAM Short Signal Checking ... bool XBTU5XTAMHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXTAMEnableSignaller || !xBTU5MXTAMAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XSI Long Signal Checking ... bool XBTU5XSIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXSIEnableSignaller || !xBTU5MXSIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XSI Short Signal Checking ... bool XBTU5XSIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXSIEnableSignaller || !xBTU5MXSIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XSTFI Long Signal Checking ... bool XBTU5XSTFIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXSTFIEnableSignaller || !xBTU5MXSTFIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.XSTFIHasLongConditions() // && // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XSTFI Short Signal Checking ... bool XBTU5XSTFIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXSTFIEnableSignaller || !xBTU5MXSTFIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.XSTFIHasShortConditions() // && // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XOBDLH Long Signal Checking ... bool XBTU5XOBDLHHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXOBDLHEnableSignaller || !xBTU5MXOBDLHAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // XMarketConditions xMConditions2 = xBTU5Provider.GenerateMarketConditions(2); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XOBDLH Short Signal Checking ... bool XBTU5XOBDLHHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXOBDLHEnableSignaller || !xBTU5MXOBDLHAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMACC Long Signal Checking ... bool XBTU5XCHMACCHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMACCEnableSignaller || !xBTU5MXCHMACCAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMACC Short Signal Checking ... bool XBTU5XCHMACCHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMACCEnableSignaller || !xBTU5MXCHMACCAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMAMN Long Signal Checking ... bool XBTU5XCHMAMNHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMAMNEnableSignaller || !xBTU5MXCHMAMNAllowLongSignals) { 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 = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMAMN Short Signal Checking ... bool XBTU5XCHMAMNHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMAMNEnableSignaller || !xBTU5MXCHMAMNAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMAMX Long Signal Checking ... bool XBTU5XCHMAMXHasLongSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMAMXEnableSignaller || !xBTU5MXCHMAMXAllowLongSignals) { 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 = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // XCHMAMX Short Signal Checking ... bool XBTU5XCHMAMXHasShortSignal() { // bool result = false; // // Validate Args ... if (!xBTU5MXCHMAMXEnableSignaller || !xBTU5MXCHMAMXAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xBTU5Provider.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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // false // ) // ) // || // // 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 ... // // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // false // ) // ) // || // // 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; } // // END Signal Providers ... //