/////////////////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 XEMPTY5 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.xempty5.provider.inputs.lib.mq5" // // Include Provider Class ... #include "../Classes/x-saherelm.provider.lib.mq5" // // Signallers ... input group "XEMPTY5 Signallers"; // // XTD ... input group "XEMPTY5 XTD Signaller"; input bool xEMPTY5XTDEnableSignaller = true; // Enable Signaller input bool xEMPTY5XTDAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XTDAllowShortSignals = true; // Enable Short Signals // // XTAM ... input group "XEMPTY5 XTAM Signaller"; input bool xEMPTY5XTAMEnableSignaller = true; // Enable Signaller input bool xEMPTY5XTAMAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XTAMAllowShortSignals = true; // Enable Short Signals // // XSI ... input group "XEMPTY5 XSI Signaller"; input bool xEMPTY5XSIEnableSignaller = true; // Enable Signaller input bool xEMPTY5XSIAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XSIAllowShortSignals = true; // Enable Short Signals // // XTSFI ... input group "XEMPTY5 XTSFI Signaller"; input bool xEMPTY5XTSFIEnableSignaller = true; // Enable Signaller input bool xEMPTY5XTSFIAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XTSFIAllowShortSignals = true; // Enable Short Signals // // XOBDLH ... input group "XEMPTY5 XOBDLH Signaller"; input bool xEMPTY5XOBDLHEnableSignaller = true; // Enable Signaller input bool xEMPTY5XOBDLHAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XOBDLHAllowShortSignals = true; // Enable Short Signals // // XCHMACC ... input group "XEMPTY5 XCHMACC Signaller"; input bool xEMPTY5XCHMACCEnableSignaller = true; // Enable Signaller input bool xEMPTY5XCHMACCAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XCHMACCAllowShortSignals = true; // Enable Short Signals // // XCHMAMX ... input group "XEMPTY5 XCHMAMX Signaller"; input bool xEMPTY5XCHMAMXEnableSignaller = true; // Enable Signaller input bool xEMPTY5XCHMAMXAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XCHMAMXAllowShortSignals = true; // Enable Short Signals // // XCHMAMN ... input group "XEMPTY5 XCHMAMN Signaller"; input bool xEMPTY5XCHMAMNEnableSignaller = true; // Enable Signaller input bool xEMPTY5XCHMAMNAllowLongSignals = true; // Enable Long Signals input bool xEMPTY5XCHMAMNAllowShortSignals = true; // Enable Short Signals // // Check in Test Mode or not ... bool xEMPTY5IsTestMode = false; // // Detect max Input Length of Indicators ... int xEMPTY5MaxLengthOfInputs = 0; // // Detect Calculated Bars ... int xEMPTY5CalculatedBars = 0; // // Check prevent Double Signalling on Same Candle ... bool xEMPTY5WaitUntilNextCandle = false; // // Signaller Variables ... // // XTD ... bool xEMPTY5MXTDEnableSignaller = xEMPTY5XTDEnableSignaller; bool xEMPTY5MXTDAllowLongSignals = xEMPTY5XTDAllowLongSignals; bool xEMPTY5MXTDAllowShortSignals = xEMPTY5XTDAllowShortSignals; // // XTAM ... bool xEMPTY5MXTAMEnableSignaller = xEMPTY5XTAMEnableSignaller; bool xEMPTY5MXTAMAllowLongSignals = xEMPTY5XTAMAllowLongSignals; bool xEMPTY5MXTAMAllowShortSignals = xEMPTY5XTAMAllowShortSignals; // // XSI ... bool xEMPTY5MXSIEnableSignaller = xEMPTY5XSIEnableSignaller; bool xEMPTY5MXSIAllowLongSignals = xEMPTY5XSIAllowLongSignals; bool xEMPTY5MXSIAllowShortSignals = xEMPTY5XSIAllowShortSignals; // // XTSFI ... bool xEMPTY5MXTSFIEnableSignaller = xEMPTY5XTSFIEnableSignaller; bool xEMPTY5MXTSFIAllowLongSignals = xEMPTY5XTSFIAllowLongSignals; bool xEMPTY5MXTSFIAllowShortSignals = xEMPTY5XTSFIAllowShortSignals; // // XOBDLH ... bool xEMPTY5MXOBDLHEnableSignaller = xEMPTY5XOBDLHEnableSignaller; bool xEMPTY5MXOBDLHAllowLongSignals = xEMPTY5XOBDLHAllowLongSignals; bool xEMPTY5MXOBDLHAllowShortSignals = xEMPTY5XOBDLHAllowShortSignals; // // XCHMACC ... bool xEMPTY5MXCHMACCEnableSignaller = xEMPTY5XCHMACCEnableSignaller; bool xEMPTY5MXCHMACCAllowLongSignals = xEMPTY5XCHMACCAllowLongSignals; bool xEMPTY5MXCHMACCAllowShortSignals = xEMPTY5XCHMACCAllowShortSignals; // // XCHMAMX ... bool xEMPTY5MXCHMAMXEnableSignaller = xEMPTY5XCHMAMXEnableSignaller; bool xEMPTY5MXCHMAMXAllowLongSignals = xEMPTY5XCHMAMXAllowLongSignals; bool xEMPTY5MXCHMAMXAllowShortSignals = xEMPTY5XCHMAMXAllowShortSignals; // // XCHMAMN ... bool xEMPTY5MXCHMAMNEnableSignaller = xEMPTY5XCHMAMNEnableSignaller; bool xEMPTY5MXCHMAMNAllowLongSignals = xEMPTY5XCHMAMNAllowLongSignals; bool xEMPTY5MXCHMAMNAllowShortSignals = xEMPTY5XCHMAMNAllowShortSignals; // XCPriver *xEMPTY5Provider; // // Validate Indicators Inputs ... bool XEMPTY5ValidateIndicatorsInputs() { // 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 ... xEMPTY5Provider = new XCPriver( // // Commons ... _Symbol, _Period, // // Signallers ... // // XTD ... xEMPTY5MXTDEnableSignaller, xEMPTY5MXTDAllowLongSignals, xEMPTY5MXTDAllowShortSignals, // // XTAM ... xEMPTY5MXTAMEnableSignaller, xEMPTY5MXTAMAllowLongSignals, xEMPTY5MXTAMAllowShortSignals, // // XSI ... xEMPTY5MXSIEnableSignaller, xEMPTY5MXSIAllowLongSignals, xEMPTY5MXSIAllowShortSignals, // // XTSFI ... xEMPTY5MXTSFIEnableSignaller, xEMPTY5MXTSFIAllowLongSignals, xEMPTY5MXTSFIAllowShortSignals, // // XOBDLH ... xEMPTY5MXOBDLHEnableSignaller, xEMPTY5MXOBDLHAllowLongSignals, xEMPTY5MXOBDLHAllowShortSignals, // // XCHMACC ... xEMPTY5MXCHMACCEnableSignaller, xEMPTY5MXCHMACCAllowLongSignals, xEMPTY5MXCHMACCAllowShortSignals, // // XCHMAMX ... xEMPTY5MXCHMAMXEnableSignaller, xEMPTY5MXCHMAMXAllowLongSignals, xEMPTY5MXCHMAMXAllowShortSignals, // // XCHMAMN ... xEMPTY5MXCHMAMNEnableSignaller, xEMPTY5MXCHMAMNAllowLongSignals, xEMPTY5MXCHMAMNAllowShortSignals // ); // result = true; // return result; } // // Init Indicators ... bool XEMPTY5InitIndicators() { // bool result = false; // // Make it Enable when we need to Log Market Conditions ... xEMPTY5IsTestMode = IsRunningOnTestMode(); // // Check and Calculate Max Length in Inputs ... // // // XTM ... xEMPTY5MaxLengthOfInputs = MathMax( xTMMaPeriod, xEMPTY5NumberOfItemsPerTick); // // XAMA ... xEMPTY5MaxLengthOfInputs = MathMax( xAMALength, xEMPTY5NumberOfItemsPerTick); xEMPTY5MaxLengthOfInputs = MathMax( xAMAFastEMA, xEMPTY5NumberOfItemsPerTick); xEMPTY5MaxLengthOfInputs = MathMax( xAMASlowEMA, xEMPTY5NumberOfItemsPerTick); // // XLH ... xEMPTY5MaxLengthOfInputs = MathMax( xLHLength, xEMPTY5NumberOfItemsPerTick); // // XTD ... xEMPTY5MaxLengthOfInputs = MathMax( xTDLength, xEMPTY5MaxLengthOfInputs); // // XFI ... xEMPTY5MaxLengthOfInputs = MathMax( xFILength, xEMPTY5MaxLengthOfInputs); // // XRSI ... xEMPTY5MaxLengthOfInputs = MathMax( xRSILength, xEMPTY5MaxLengthOfInputs); // // XOBD ... xEMPTY5MaxLengthOfInputs = MathMax( xOBDLength, xEMPTY5MaxLengthOfInputs); // // XCHLH ... xEMPTY5MaxLengthOfInputs = MathMax( xCHLHLcLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHLHMcLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHLHScLength, xEMPTY5MaxLengthOfInputs); // // XCHMA ... xEMPTY5MaxLengthOfInputs = MathMax( xCHMAScFastLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHMAScSlowLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHMAMcFastLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHMAMcSlowLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHMALcFastLength, xEMPTY5MaxLengthOfInputs); xEMPTY5MaxLengthOfInputs = MathMax( xCHMALcSlowLength, xEMPTY5MaxLengthOfInputs); // // Validate Indicators Inputs before Initialization ... result = XEMPTY5ValidateIndicatorsInputs(); if (!result) { return result; } // // Validate Signallers ... // // XTD ... bool isXTDEnable = xEMPTY5XTDEnableSignaller && (xEMPTY5XTDAllowLongSignals || xEMPTY5XTDAllowShortSignals); // // XTAM ... bool isXTAMEnable = xEMPTY5XTAMEnableSignaller && (xEMPTY5XTAMAllowLongSignals || xEMPTY5XTAMAllowShortSignals); // // XSI ... bool isXSIEnable = xEMPTY5XSIEnableSignaller && (xEMPTY5XSIAllowLongSignals || xEMPTY5XSIAllowShortSignals); // // XTSFI ... bool isXTSFIEnable = xEMPTY5XTSFIEnableSignaller && (xEMPTY5XTSFIAllowLongSignals || xEMPTY5XTSFIAllowShortSignals); // // XOBDLH ... bool isXOBDLHEnable = xEMPTY5XOBDLHEnableSignaller && (xEMPTY5XOBDLHAllowLongSignals || xEMPTY5XOBDLHAllowShortSignals); // // XCHMACC ... bool isXCHMACCEnable = xEMPTY5XCHMACCEnableSignaller && (xEMPTY5XCHMACCAllowLongSignals || xEMPTY5XCHMACCAllowShortSignals); // // XCHMAMX ... bool isXCHMAMXEnable = xEMPTY5XCHMAMXEnableSignaller && (xEMPTY5XCHMAMXAllowLongSignals || xEMPTY5XCHMAMXAllowShortSignals); // // XCHMAMN ... bool isXCHMAMNEnable = xEMPTY5XCHMAMNEnableSignaller && (xEMPTY5XCHMAMNAllowLongSignals || xEMPTY5XCHMAMNAllowShortSignals); // bool hasSignaller = // isXTDEnable || isXTAMEnable || isXSIEnable || isXTSFIEnable || isXOBDLHEnable || isXCHMACCEnable || isXCHMAMXEnable || isXCHMAMNEnable // ; result = hasSignaller; if (!result) { // LogMessage("XEMPTY5 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 XEMPTY5ReleaseIndicators() { // // Release Handlers ... XTMReleaseHandlers(); XAMAReleaseHandlers(); XLHReleaseHandlers(); XTDReleaseHandlers(); XFIReleaseHandlers(); XTSReleaseHandlers(); XRSIReleaseHandlers(); XOBDReleaseHandlers(); XCHMAReleaseHandlers(); XCHLHReleaseHandlers(); } // // Handle Reading Buffers ... void XEMPTY5HandleReadingBuffers() { // // Reading Calculated Bars for a Simple Handler ... xEMPTY5CalculatedBars = BarsCalculated(xTMHandler); // // Read Indicators Buffers ... XTMReadBuffers(xEMPTY5NumberOfItemsPerTick); XAMAReadBuffers(xEMPTY5NumberOfItemsPerTick); XLHReadBuffers(xEMPTY5NumberOfItemsPerTick); XTDReadBuffers(xEMPTY5NumberOfItemsPerTick); XFIReadBuffers(xEMPTY5NumberOfItemsPerTick); XTSReadBuffers(xEMPTY5NumberOfItemsPerTick); XRSIReadBuffers(xEMPTY5NumberOfItemsPerTick); XOBDReadBuffers(xEMPTY5NumberOfItemsPerTick); XCHMAReadBuffers(xEMPTY5NumberOfItemsPerTick); XCHLHReadBuffers(xEMPTY5NumberOfItemsPerTick); // xEMPTY5Provider.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 XEMPTY5CanOpenLongTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XEMPTY5HasLongSignal(info); // result = // hasSignal // ; // if (result) { xEMPTY5Provider.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 XEMPTY5CanCloseLongTrade() { // 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 XEMPTY5CanOpenShortTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XEMPTY5HasShortSignal(info); // result = // hasSignal // ; // if (result) { xEMPTY5Provider.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 XEMPTY5CanCloseShortTrade() { // bool result = false; // return result; } // // // END Combination Functions ... // // // // // START Combination Signaling ... // // // // Check Market Conditions by Combination of Power of All tools for LONGs ... bool XEMPTY5HasLongSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XEMPTY5XTDHasLongSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XEMPTY5XTAMHasLongSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XEMPTY5XSIHasLongSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XEMPTY5XTSFIHasLongSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XEMPTY5XOBDLHHasLongSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XEMPTY5XCHMACCHasLongSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XEMPTY5XCHMAMNHasLongSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XEMPTY5XCHMAMXHasLongSignal(); 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 (xEMPTY5IsTestMode || xEMPTY5EnableSignalAlerts) { // XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); string message = xEMPTY5Provider.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 XEMPTY5HasShortSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XEMPTY5XTDHasShortSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XEMPTY5XTAMHasShortSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XEMPTY5XSIHasShortSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XEMPTY5XTSFIHasShortSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XEMPTY5XOBDLHHasShortSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XEMPTY5XCHMACCHasShortSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XEMPTY5XCHMAMNHasShortSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XEMPTY5XCHMAMXHasShortSignal(); 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 (xEMPTY5IsTestMode || xEMPTY5EnableSignalAlerts) { // XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); string message = xEMPTY5Provider.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 XEMPTY5DisableLongSignallers() { // // XTD ... if (xEMPTY5MXTDEnableSignaller) { // xEMPTY5Provider.DisbaleXTDLongs(); xEMPTY5MXTDAllowLongSignals = false; } // // XTAM ... if (xEMPTY5MXTAMEnableSignaller) { // xEMPTY5Provider.DisbaleXTAMLongs(); xEMPTY5MXTAMAllowLongSignals = false; } // // XSI ... if (xEMPTY5MXSIEnableSignaller) { // xEMPTY5Provider.DisbaleXSILongs(); xEMPTY5MXSIAllowLongSignals = false; } // // XTSFI ... if (xEMPTY5MXTSFIEnableSignaller) { // xEMPTY5Provider.DisbaleXTSFILongs(); xEMPTY5MXTSFIAllowLongSignals = false; } // // XOBDLH ... if (xEMPTY5MXOBDLHEnableSignaller) { // xEMPTY5Provider.DisbaleXOBDLHLongs(); xEMPTY5MXOBDLHAllowLongSignals = false; } // // XCHMACC ... if (xEMPTY5MXCHMACCEnableSignaller) { // xEMPTY5Provider.DisbaleXCHMACCLongs(); xEMPTY5MXCHMACCAllowLongSignals = false; } // // XCHMAMX ... if (xEMPTY5MXCHMAMXEnableSignaller) { // xEMPTY5Provider.DisbaleXCHMAMXLongs(); xEMPTY5MXCHMAMXAllowLongSignals = false; } // // XCHMAMN ... if (xEMPTY5MXCHMAMNEnableSignaller) { // xEMPTY5Provider.DisbaleXCHMAMNLongs(); xEMPTY5MXCHMAMNAllowLongSignals = false; } } // // Enable All Signallers Longs ... // Only if they are Configured as Enable at Settings ... void XEMPTY5EnableLongSignallers() { // // XTD ... if (xEMPTY5MXTDEnableSignaller) { // xEMPTY5MXTDAllowLongSignals = xEMPTY5XTDAllowLongSignals ? true : xEMPTY5MXTDAllowLongSignals; // if (xEMPTY5MXTDAllowLongSignals) { xEMPTY5Provider.EnableXTDLongs(); } } // // XTAM ... if (xEMPTY5MXTAMEnableSignaller) { // xEMPTY5MXTAMAllowLongSignals = xEMPTY5XTAMAllowLongSignals ? true : xEMPTY5MXTAMAllowLongSignals; // if (xEMPTY5MXTAMAllowLongSignals) { xEMPTY5Provider.EnableXTAMLongs(); } } // // XSI ... if (xEMPTY5MXSIEnableSignaller) { // xEMPTY5MXSIAllowLongSignals = xEMPTY5XSIAllowLongSignals ? true : xEMPTY5MXSIAllowLongSignals; // if (xEMPTY5MXSIAllowLongSignals) { xEMPTY5Provider.EnableXSILongs(); } } // // XTSFI ... if (xEMPTY5MXTSFIEnableSignaller) { // xEMPTY5MXTSFIAllowLongSignals = xEMPTY5XTSFIAllowLongSignals ? true : xEMPTY5MXTSFIAllowLongSignals; // if (xEMPTY5MXTSFIAllowLongSignals) { xEMPTY5Provider.EnableXTSFILongs(); } } // // XOBDLH ... if (xEMPTY5MXOBDLHEnableSignaller) { // xEMPTY5MXOBDLHAllowLongSignals = xEMPTY5XOBDLHAllowLongSignals ? true : xEMPTY5MXOBDLHAllowLongSignals; // if (xEMPTY5MXOBDLHAllowLongSignals) { xEMPTY5Provider.EnableXOBDLHLongs(); } } // // XCHMACC ... if (xEMPTY5MXCHMACCEnableSignaller) { // xEMPTY5MXCHMACCAllowLongSignals = xEMPTY5XCHMACCAllowLongSignals ? true : xEMPTY5MXCHMACCAllowLongSignals; // if (xEMPTY5MXCHMACCAllowLongSignals) { xEMPTY5Provider.EnableXCHMACCLongs(); } } // // XCHMAMX ... if (xEMPTY5MXCHMAMXEnableSignaller) { // xEMPTY5MXCHMAMXAllowLongSignals = xEMPTY5XCHMAMXAllowLongSignals ? true : xEMPTY5MXCHMAMXAllowLongSignals; // if (xEMPTY5MXCHMAMXAllowLongSignals) { xEMPTY5Provider.EnableXCHMAMXLongs(); } } // // XCHMAMN ... if (xEMPTY5MXCHMAMNEnableSignaller) { // xEMPTY5MXCHMAMNAllowLongSignals = xEMPTY5XCHMAMNAllowLongSignals ? true : xEMPTY5MXCHMAMNAllowLongSignals; // if (xEMPTY5MXCHMAMNAllowLongSignals) { xEMPTY5Provider.EnableXCHMAMNLongs(); } } } // // Disable All Signallers Shorts ... void XEMPTY5DisableShortSignallers() { // // XTD ... if (xEMPTY5MXTDEnableSignaller) { // xEMPTY5Provider.DisableXTDShorts(); xEMPTY5MXTDAllowShortSignals = false; } // // XTAM ... if (xEMPTY5MXTAMEnableSignaller) { // xEMPTY5Provider.DisableXTAMShorts(); xEMPTY5MXTAMAllowShortSignals = false; } // // XSI ... if (xEMPTY5MXSIEnableSignaller) { // xEMPTY5Provider.DisableXSIShorts(); xEMPTY5MXSIAllowShortSignals = false; } // // XTSFI ... if (xEMPTY5MXTSFIEnableSignaller) { // xEMPTY5Provider.DisableXTSFIShorts(); xEMPTY5MXTSFIAllowShortSignals = false; } // // XOBDLH ... if (xEMPTY5MXOBDLHEnableSignaller) { // xEMPTY5Provider.DisableXOBDLHShorts(); xEMPTY5MXOBDLHAllowShortSignals = false; } // // XCHMACC ... if (xEMPTY5MXCHMACCEnableSignaller) { // xEMPTY5Provider.DisableXCHMACCShorts(); xEMPTY5MXCHMACCAllowShortSignals = false; } // // XCHMAMX ... if (xEMPTY5MXCHMAMXEnableSignaller) { // xEMPTY5Provider.DisableXCHMAMXShorts(); xEMPTY5MXCHMAMXAllowShortSignals = false; } // // XCHMAMN ... if (xEMPTY5MXCHMAMNEnableSignaller) { // xEMPTY5Provider.DisableXCHMAMNShorts(); xEMPTY5MXCHMAMNAllowShortSignals = false; } } // // Enable All Signallers Shorts ... // Only if they are Configured as Enable at Settings ... void XEMPTY5EnableShortSignallers() { // // XTD ... if (xEMPTY5MXTDEnableSignaller) { // xEMPTY5MXTDAllowShortSignals = xEMPTY5XTDAllowShortSignals ? true : xEMPTY5MXTDAllowShortSignals; // if (xEMPTY5MXTDAllowShortSignals) { xEMPTY5Provider.EnableXTDShorts(); } } // // XTAM ... if (xEMPTY5MXTAMEnableSignaller) { // xEMPTY5MXTAMAllowShortSignals = xEMPTY5XTAMAllowShortSignals ? true : xEMPTY5MXTAMAllowShortSignals; // if (xEMPTY5MXTAMAllowShortSignals) { xEMPTY5Provider.EnableXTAMShorts(); } } // // XSI ... if (xEMPTY5MXSIEnableSignaller) { // xEMPTY5MXSIAllowShortSignals = xEMPTY5XSIAllowShortSignals ? true : xEMPTY5MXSIAllowShortSignals; // if (xEMPTY5MXSIAllowShortSignals) { xEMPTY5Provider.EnableXSIShorts(); } } // // XTSFI ... if (xEMPTY5MXTSFIEnableSignaller) { // xEMPTY5MXTSFIAllowShortSignals = xEMPTY5XTSFIAllowShortSignals ? true : xEMPTY5MXTSFIAllowShortSignals; // if (xEMPTY5MXTSFIAllowShortSignals) { xEMPTY5Provider.EnableXTSFIShorts(); } } // // XOBDLH ... if (xEMPTY5MXOBDLHEnableSignaller) { // xEMPTY5MXOBDLHAllowShortSignals = xEMPTY5XOBDLHAllowShortSignals ? true : xEMPTY5MXOBDLHAllowShortSignals; // if (xEMPTY5MXOBDLHAllowShortSignals) { xEMPTY5Provider.EnableXOBDLHShorts(); } } // // XCHMACC ... if (xEMPTY5MXCHMACCEnableSignaller) { // xEMPTY5MXCHMACCAllowShortSignals = xEMPTY5XCHMACCAllowShortSignals ? true : xEMPTY5MXCHMACCAllowShortSignals; // if (xEMPTY5MXCHMACCAllowShortSignals) { xEMPTY5Provider.EnableXCHMACCShorts(); } } // // XCHMAMX ... if (xEMPTY5MXCHMAMXEnableSignaller) { // xEMPTY5MXCHMAMXAllowShortSignals = xEMPTY5XCHMAMXAllowShortSignals ? true : xEMPTY5MXCHMAMXAllowShortSignals; // if (xEMPTY5MXCHMAMXAllowShortSignals) { xEMPTY5Provider.EnableXCHMAMXShorts(); } } // // XCHMAMN ... if (xEMPTY5MXCHMAMNEnableSignaller) { // xEMPTY5MXCHMAMNAllowShortSignals = xEMPTY5XCHMAMNAllowShortSignals ? true : xEMPTY5MXCHMAMNAllowShortSignals; // if (xEMPTY5MXCHMAMNAllowShortSignals) { xEMPTY5Provider.EnableXCHMAMNShorts(); } } } // // // // // XTD Long Signal Checking ... bool XEMPTY5XTDHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTDEnableSignaller || !xEMPTY5MXTDAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XTD Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XTD Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Long ... // 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 ... // // XTD Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Long ... // 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 ... // // XTD Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XTD Short Signal Checking ... bool XEMPTY5XTDHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTDEnableSignaller || !xEMPTY5MXTDAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.XTDHasShortConditions() // && // // Exceptions: // there some commonly Exceptions which makes our choice incorrect, // here we are combined knownly Exceptions ... !( // // for Exception we used XLH Conditions as follow ... // // Check Conditions if Price In Signal Range ... (mConditions.isXLHPriceInSignalRange && // ( // // Next Step is to Check LL and HH Same Style ... // // XTD Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XTD Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Short ... // 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 ... // // XTD Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Short ... // 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 ... // // XTD Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTD Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XTAM Long Signal Checking ... bool XEMPTY5XTAMHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTAMEnableSignaller || !xEMPTY5MXTAMAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XTAM Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Long ... // 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 ... // // XTAM Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Long ... // 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 ... // // XTAM Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Long ... // 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 ... // // XTAM Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XTAM Short Signal Checking ... bool XEMPTY5XTAMHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTAMEnableSignaller || !xEMPTY5MXTAMAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XTAM Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XTAM Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Short ... // 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 ... // // XTAM Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Short ... // 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 ... // // XTAM Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTAM Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XSI Long Signal Checking ... bool XEMPTY5XSIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXSIEnableSignaller || !xEMPTY5MXSIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XSI Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Long ... // 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 ... // // XSI Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Long ... // 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 ... // // XSI Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Long ... // 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 ... // // XSI Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XSI Short Signal Checking ... bool XEMPTY5XSIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXSIEnableSignaller || !xEMPTY5MXSIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XSI Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XSI Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Short ... // 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 ... // // XSI Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Short ... // 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 ... // // XSI Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XSI Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XTSFI Long Signal Checking ... bool XEMPTY5XTSFIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTSFIEnableSignaller || !xEMPTY5MXTSFIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XTSFI Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Long ... // 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 ... // // XTSFI Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Long ... // 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 ... // // XTSFI Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Long ... // 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 ... // // XTSFI Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XTSFI Short Signal Checking ... bool XEMPTY5XTSFIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXTSFIEnableSignaller || !xEMPTY5MXTSFIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XTSFI Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XTSFI Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Short ... // 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 ... // // XTSFI Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Short ... // 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 ... // // XTSFI Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XTSFI Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XOBDLH Long Signal Checking ... bool XEMPTY5XOBDLHHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXOBDLHEnableSignaller || !xEMPTY5MXOBDLHAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XOBDLH Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // 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 ... // // XOBDLH Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // 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 ... // // XOBDLH Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // 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 ... // // XOBDLH Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XOBDLH Short Signal Checking ... bool XEMPTY5XOBDLHHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXOBDLHEnableSignaller || !xEMPTY5MXOBDLHAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XOBDLH Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XOBDLH Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // 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 ... // // XOBDLH Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // 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 ... // // XOBDLH Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XOBDLH Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMACC Long Signal Checking ... bool XEMPTY5XCHMACCHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMACCEnableSignaller || !xEMPTY5MXCHMACCAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMACC Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // 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 ... // // XCHMACC Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // 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 ... // // XCHMACC Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // 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 ... // // XCHMACC Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMACC Short Signal Checking ... bool XEMPTY5XCHMACCHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMACCEnableSignaller || !xEMPTY5MXCHMACCAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMACC Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XCHMACC Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // 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 ... // // XCHMACC Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // 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 ... // // XCHMACC Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMACC Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMN Long Signal Checking ... bool XEMPTY5XCHMAMNHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMAMNEnableSignaller || !xEMPTY5MXCHMAMNAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMAMN Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // 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 ... // // XCHMAMN Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // 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 ... // // XCHMAMN Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // 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 ... // // XCHMAMN Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMN Short Signal Checking ... bool XEMPTY5XCHMAMNHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMAMNEnableSignaller || !xEMPTY5MXCHMAMNAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMAMN Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XCHMAMN Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // 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 ... // // XCHMAMN Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // 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 ... // // XCHMAMN Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMN Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMX Long Signal Checking ... bool XEMPTY5XCHMAMXHasLongSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMAMXEnableSignaller || !xEMPTY5MXCHMAMXAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMAMX Long ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // 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 ... // // XCHMAMX Long ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // 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 ... // // XCHMAMX Long ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // 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 ... // // XCHMAMX Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Long ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // XCHMAMX Short Signal Checking ... bool XEMPTY5XCHMAMXHasShortSignal() { // bool result = false; // // Validate Args ... if (!xEMPTY5MXCHMAMXEnableSignaller || !xEMPTY5MXCHMAMXAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xEMPTY5Provider.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 ... // // XCHMAMX Short ... // PriceInSignalRange ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceInSignalRange ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // || // // Check Conditions if Price is Under Signal ... ( // ((mConditions.isXLHPriceUnderSignal || mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XCHMAMX Short ... // PriceUnderSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceUnderSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // 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 ... // // XCHMAMX Short ... // PriceOverSignal ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // 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 ... // // XCHMAMX Short ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceFree ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceFree ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // || // // XCHMAMX Short ... // PriceFree ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( false) // ) // ) // ) // ) // ) // ; // return result; } // // END Signal Providers ... //