/////////////////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 XUSCHF5 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.xuschf5.provider.inputs.lib.mq5" // // Include Provider Class ... #include "../Classes/x-saherelm.provider.lib.mq5" // // Signallers ... input group "XUSCHF5 Signallers"; // // XTD ... input group "XUSCHF5 XTD Signaller"; input bool xUSCHF5XTDEnableSignaller = true; // Enable Signaller input bool xUSCHF5XTDAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XTDAllowShortSignals = true; // Enable Short Signals // // XTAM ... input group "XUSCHF5 XTAM Signaller"; input bool xUSCHF5XTAMEnableSignaller = true; // Enable Signaller input bool xUSCHF5XTAMAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XTAMAllowShortSignals = true; // Enable Short Signals // // XSI ... input group "XUSCHF5 XSI Signaller"; input bool xUSCHF5XSIEnableSignaller = true; // Enable Signaller input bool xUSCHF5XSIAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XSIAllowShortSignals = true; // Enable Short Signals // // XTSFI ... input group "XUSCHF5 XTSFI Signaller"; input bool xUSCHF5XTSFIEnableSignaller = true; // Enable Signaller input bool xUSCHF5XTSFIAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XTSFIAllowShortSignals = true; // Enable Short Signals // // XOBDLH ... input group "XUSCHF5 XOBDLH Signaller"; input bool xUSCHF5XOBDLHEnableSignaller = true; // Enable Signaller input bool xUSCHF5XOBDLHAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XOBDLHAllowShortSignals = true; // Enable Short Signals // // XCHMACC ... input group "XUSCHF5 XCHMACC Signaller"; input bool xUSCHF5XCHMACCEnableSignaller = true; // Enable Signaller input bool xUSCHF5XCHMACCAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XCHMACCAllowShortSignals = true; // Enable Short Signals // // XCHMAMX ... input group "XUSCHF5 XCHMAMX Signaller"; input bool xUSCHF5XCHMAMXEnableSignaller = true; // Enable Signaller input bool xUSCHF5XCHMAMXAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XCHMAMXAllowShortSignals = true; // Enable Short Signals // // XCHMAMN ... input group "XUSCHF5 XCHMAMN Signaller"; input bool xUSCHF5XCHMAMNEnableSignaller = true; // Enable Signaller input bool xUSCHF5XCHMAMNAllowLongSignals = true; // Enable Long Signals input bool xUSCHF5XCHMAMNAllowShortSignals = true; // Enable Short Signals // // Check in Test Mode or not ... bool xUSCHF5IsTestMode = false; // // Detect max Input Length of Indicators ... int xUSCHF5MaxLengthOfInputs = 0; // // Detect Calculated Bars ... int xUSCHF5CalculatedBars = 0; // // Check prevent Double Signalling on Same Candle ... bool xUSCHF5WaitUntilNextCandle = false; // // Signaller Variables ... // // XTD ... bool xUSCHF5MXTDEnableSignaller = xUSCHF5XTDEnableSignaller; bool xUSCHF5MXTDAllowLongSignals = xUSCHF5XTDAllowLongSignals; bool xUSCHF5MXTDAllowShortSignals = xUSCHF5XTDAllowShortSignals; // // XTAM ... bool xUSCHF5MXTAMEnableSignaller = xUSCHF5XTAMEnableSignaller; bool xUSCHF5MXTAMAllowLongSignals = xUSCHF5XTAMAllowLongSignals; bool xUSCHF5MXTAMAllowShortSignals = xUSCHF5XTAMAllowShortSignals; // // XSI ... bool xUSCHF5MXSIEnableSignaller = xUSCHF5XSIEnableSignaller; bool xUSCHF5MXSIAllowLongSignals = xUSCHF5XSIAllowLongSignals; bool xUSCHF5MXSIAllowShortSignals = xUSCHF5XSIAllowShortSignals; // // XTSFI ... bool xUSCHF5MXTSFIEnableSignaller = xUSCHF5XTSFIEnableSignaller; bool xUSCHF5MXTSFIAllowLongSignals = xUSCHF5XTSFIAllowLongSignals; bool xUSCHF5MXTSFIAllowShortSignals = xUSCHF5XTSFIAllowShortSignals; // // XOBDLH ... bool xUSCHF5MXOBDLHEnableSignaller = xUSCHF5XOBDLHEnableSignaller; bool xUSCHF5MXOBDLHAllowLongSignals = xUSCHF5XOBDLHAllowLongSignals; bool xUSCHF5MXOBDLHAllowShortSignals = xUSCHF5XOBDLHAllowShortSignals; // // XCHMACC ... bool xUSCHF5MXCHMACCEnableSignaller = xUSCHF5XCHMACCEnableSignaller; bool xUSCHF5MXCHMACCAllowLongSignals = xUSCHF5XCHMACCAllowLongSignals; bool xUSCHF5MXCHMACCAllowShortSignals = xUSCHF5XCHMACCAllowShortSignals; // // XCHMAMX ... bool xUSCHF5MXCHMAMXEnableSignaller = xUSCHF5XCHMAMXEnableSignaller; bool xUSCHF5MXCHMAMXAllowLongSignals = xUSCHF5XCHMAMXAllowLongSignals; bool xUSCHF5MXCHMAMXAllowShortSignals = xUSCHF5XCHMAMXAllowShortSignals; // // XCHMAMN ... bool xUSCHF5MXCHMAMNEnableSignaller = xUSCHF5XCHMAMNEnableSignaller; bool xUSCHF5MXCHMAMNAllowLongSignals = xUSCHF5XCHMAMNAllowLongSignals; bool xUSCHF5MXCHMAMNAllowShortSignals = xUSCHF5XCHMAMNAllowShortSignals; // XCPriver *xUSCHF5Provider; // // Validate Indicators Inputs ... bool XUSCHF5ValidateIndicatorsInputs() { // 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 ... xUSCHF5Provider = new XCPriver( // // Commons ... _Symbol, _Period, // // Signallers ... // // XTD ... xUSCHF5MXTDEnableSignaller, xUSCHF5MXTDAllowLongSignals, xUSCHF5MXTDAllowShortSignals, // // XTAM ... xUSCHF5MXTAMEnableSignaller, xUSCHF5MXTAMAllowLongSignals, xUSCHF5MXTAMAllowShortSignals, // // XSI ... xUSCHF5MXSIEnableSignaller, xUSCHF5MXSIAllowLongSignals, xUSCHF5MXSIAllowShortSignals, // // XTSFI ... xUSCHF5MXTSFIEnableSignaller, xUSCHF5MXTSFIAllowLongSignals, xUSCHF5MXTSFIAllowShortSignals, // // XOBDLH ... xUSCHF5MXOBDLHEnableSignaller, xUSCHF5MXOBDLHAllowLongSignals, xUSCHF5MXOBDLHAllowShortSignals, // // XCHMACC ... xUSCHF5MXCHMACCEnableSignaller, xUSCHF5MXCHMACCAllowLongSignals, xUSCHF5MXCHMACCAllowShortSignals, // // XCHMAMX ... xUSCHF5MXCHMAMXEnableSignaller, xUSCHF5MXCHMAMXAllowLongSignals, xUSCHF5MXCHMAMXAllowShortSignals, // // XCHMAMN ... xUSCHF5MXCHMAMNEnableSignaller, xUSCHF5MXCHMAMNAllowLongSignals, xUSCHF5MXCHMAMNAllowShortSignals // ); // result = true; // return result; } // // Init Indicators ... bool XUSCHF5InitIndicators() { // bool result = false; // // Make it Enable when we need to Log Market Conditions ... xUSCHF5IsTestMode = IsRunningOnTestMode(); // // Check and Calculate Max Length in Inputs ... // // // XTM ... xUSCHF5MaxLengthOfInputs = MathMax( xTMMaPeriod, xUSCHF5NumberOfItemsPerTick); // // XAMA ... xUSCHF5MaxLengthOfInputs = MathMax( xAMALength, xUSCHF5NumberOfItemsPerTick); xUSCHF5MaxLengthOfInputs = MathMax( xAMAFastEMA, xUSCHF5NumberOfItemsPerTick); xUSCHF5MaxLengthOfInputs = MathMax( xAMASlowEMA, xUSCHF5NumberOfItemsPerTick); // // XLH ... xUSCHF5MaxLengthOfInputs = MathMax( xLHLength, xUSCHF5NumberOfItemsPerTick); // // XTD ... xUSCHF5MaxLengthOfInputs = MathMax( xTDLength, xUSCHF5MaxLengthOfInputs); // // XFI ... xUSCHF5MaxLengthOfInputs = MathMax( xFILength, xUSCHF5MaxLengthOfInputs); // // XRSI ... xUSCHF5MaxLengthOfInputs = MathMax( xRSILength, xUSCHF5MaxLengthOfInputs); // // XOBD ... xUSCHF5MaxLengthOfInputs = MathMax( xOBDLength, xUSCHF5MaxLengthOfInputs); // // XCHLH ... xUSCHF5MaxLengthOfInputs = MathMax( xCHLHLcLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHLHMcLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHLHScLength, xUSCHF5MaxLengthOfInputs); // // XCHMA ... xUSCHF5MaxLengthOfInputs = MathMax( xCHMAScFastLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHMAScSlowLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHMAMcFastLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHMAMcSlowLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHMALcFastLength, xUSCHF5MaxLengthOfInputs); xUSCHF5MaxLengthOfInputs = MathMax( xCHMALcSlowLength, xUSCHF5MaxLengthOfInputs); // // Validate Indicators Inputs before Initialization ... result = XUSCHF5ValidateIndicatorsInputs(); if (!result) { return result; } // // Validate Signallers ... // // XTD ... bool isXTDEnable = xUSCHF5XTDEnableSignaller && (xUSCHF5XTDAllowLongSignals || xUSCHF5XTDAllowShortSignals); // // XTAM ... bool isXTAMEnable = xUSCHF5XTAMEnableSignaller && (xUSCHF5XTAMAllowLongSignals || xUSCHF5XTAMAllowShortSignals); // // XSI ... bool isXSIEnable = xUSCHF5XSIEnableSignaller && (xUSCHF5XSIAllowLongSignals || xUSCHF5XSIAllowShortSignals); // // XTSFI ... bool isXTSFIEnable = xUSCHF5XTSFIEnableSignaller && (xUSCHF5XTSFIAllowLongSignals || xUSCHF5XTSFIAllowShortSignals); // // XOBDLH ... bool isXOBDLHEnable = xUSCHF5XOBDLHEnableSignaller && (xUSCHF5XOBDLHAllowLongSignals || xUSCHF5XOBDLHAllowShortSignals); // // XCHMACC ... bool isXCHMACCEnable = xUSCHF5XCHMACCEnableSignaller && (xUSCHF5XCHMACCAllowLongSignals || xUSCHF5XCHMACCAllowShortSignals); // // XCHMAMX ... bool isXCHMAMXEnable = xUSCHF5XCHMAMXEnableSignaller && (xUSCHF5XCHMAMXAllowLongSignals || xUSCHF5XCHMAMXAllowShortSignals); // // XCHMAMN ... bool isXCHMAMNEnable = xUSCHF5XCHMAMNEnableSignaller && (xUSCHF5XCHMAMNAllowLongSignals || xUSCHF5XCHMAMNAllowShortSignals); // bool hasSignaller = // isXTDEnable || isXTAMEnable || isXSIEnable || isXTSFIEnable || isXOBDLHEnable || isXCHMACCEnable || isXCHMAMXEnable || isXCHMAMNEnable // ; result = hasSignaller; if (!result) { // LogMessage("XUSCHF5 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 XUSCHF5ReleaseIndicators() { // // Release Handlers ... XTMReleaseHandlers(); XAMAReleaseHandlers(); XLHReleaseHandlers(); XTDReleaseHandlers(); XFIReleaseHandlers(); XTSReleaseHandlers(); XRSIReleaseHandlers(); XOBDReleaseHandlers(); XCHMAReleaseHandlers(); XCHLHReleaseHandlers(); } // // Handle Reading Buffers ... void XUSCHF5HandleReadingBuffers() { // // Reading Calculated Bars for a Simple Handler ... xUSCHF5CalculatedBars = BarsCalculated(xTMHandler); // // Read Indicators Buffers ... XTMReadBuffers(xUSCHF5NumberOfItemsPerTick); XAMAReadBuffers(xUSCHF5NumberOfItemsPerTick); XLHReadBuffers(xUSCHF5NumberOfItemsPerTick); XTDReadBuffers(xUSCHF5NumberOfItemsPerTick); XFIReadBuffers(xUSCHF5NumberOfItemsPerTick); XTSReadBuffers(xUSCHF5NumberOfItemsPerTick); XRSIReadBuffers(xUSCHF5NumberOfItemsPerTick); XOBDReadBuffers(xUSCHF5NumberOfItemsPerTick); XCHMAReadBuffers(xUSCHF5NumberOfItemsPerTick); XCHLHReadBuffers(xUSCHF5NumberOfItemsPerTick); // xUSCHF5Provider.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 XUSCHF5CanOpenLongTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XUSCHF5HasLongSignal(info); // result = // hasSignal // ; // if (result) { xUSCHF5Provider.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 XUSCHF5CanCloseLongTrade() { // 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 XUSCHF5CanOpenShortTrade( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // info.tp = 0; info.sl = 0; ArrayResize( info.signallers, 0); // bool hasSignal = XUSCHF5HasShortSignal(info); // result = // hasSignal // ; // if (result) { xUSCHF5Provider.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 XUSCHF5CanCloseShortTrade() { // bool result = false; // return result; } // // // END Combination Functions ... // // // // // START Combination Signaling ... // // // // Check Market Conditions by Combination of Power of All tools for LONGs ... bool XUSCHF5HasLongSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XUSCHF5XTDHasLongSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XUSCHF5XTAMHasLongSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XUSCHF5XSIHasLongSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XUSCHF5XTSFIHasLongSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XUSCHF5XOBDLHHasLongSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XUSCHF5XCHMACCHasLongSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XUSCHF5XCHMAMNHasLongSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XUSCHF5XCHMAMXHasLongSignal(); 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 (xUSCHF5IsTestMode || xUSCHF5EnableSignalAlerts) { // XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); string message = xUSCHF5Provider.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 XUSCHF5HasShortSignal( XProvidedSignal &info // Retrieve Signal Additional Info on this Object ) { // bool result = false; // // XTD ... bool isXTDHasSignal = XUSCHF5XTDHasShortSignal(); if (isXTDHasSignal) { // Add( EnumToString(XTD), info.signallers); } // // XTAM ... bool isXTAMHasSignal = XUSCHF5XTAMHasShortSignal(); if (isXTAMHasSignal) { // Add( EnumToString(XTAM), info.signallers); } // // XSI ... bool isXSIHasSignal = XUSCHF5XSIHasShortSignal(); if (isXSIHasSignal) { // Add( EnumToString(XSI), info.signallers); } // // XTSFI ... bool isXTSFIHasSignal = XUSCHF5XTSFIHasShortSignal(); if (isXTSFIHasSignal) { // Add( EnumToString(XTSFI), info.signallers); } // // XOBD XLH ... bool isXOBDLHHasSignal = XUSCHF5XOBDLHHasShortSignal(); if (isXOBDLHHasSignal) { // Add( EnumToString(XOBDLH), info.signallers); } // // XCHMA Cycles Cross ... bool isXCHMACCHasSignal = XUSCHF5XCHMACCHasShortSignal(); if (isXCHMACCHasSignal) { // Add( EnumToString(XCHMACC), info.signallers); } // // XCHMA Cycles Min ... bool isXCHMAMNHasSignal = XUSCHF5XCHMAMNHasShortSignal(); if (isXCHMAMNHasSignal) { // Add( EnumToString(XCHMAMN), info.signallers); } // // XCHMA Cycles Max bool isXCHMAMXHasSignal = XUSCHF5XCHMAMXHasShortSignal(); 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 (xUSCHF5IsTestMode || xUSCHF5EnableSignalAlerts) { // XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); string message = xUSCHF5Provider.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 XUSCHF5DisableLongSignallers() { // // XTD ... if (xUSCHF5MXTDEnableSignaller) { // xUSCHF5Provider.DisbaleXTDLongs(); xUSCHF5MXTDAllowLongSignals = false; } // // XTAM ... if (xUSCHF5MXTAMEnableSignaller) { // xUSCHF5Provider.DisbaleXTAMLongs(); xUSCHF5MXTAMAllowLongSignals = false; } // // XSI ... if (xUSCHF5MXSIEnableSignaller) { // xUSCHF5Provider.DisbaleXSILongs(); xUSCHF5MXSIAllowLongSignals = false; } // // XTSFI ... if (xUSCHF5MXTSFIEnableSignaller) { // xUSCHF5Provider.DisbaleXTSFILongs(); xUSCHF5MXTSFIAllowLongSignals = false; } // // XOBDLH ... if (xUSCHF5MXOBDLHEnableSignaller) { // xUSCHF5Provider.DisbaleXOBDLHLongs(); xUSCHF5MXOBDLHAllowLongSignals = false; } // // XCHMACC ... if (xUSCHF5MXCHMACCEnableSignaller) { // xUSCHF5Provider.DisbaleXCHMACCLongs(); xUSCHF5MXCHMACCAllowLongSignals = false; } // // XCHMAMX ... if (xUSCHF5MXCHMAMXEnableSignaller) { // xUSCHF5Provider.DisbaleXCHMAMXLongs(); xUSCHF5MXCHMAMXAllowLongSignals = false; } // // XCHMAMN ... if (xUSCHF5MXCHMAMNEnableSignaller) { // xUSCHF5Provider.DisbaleXCHMAMNLongs(); xUSCHF5MXCHMAMNAllowLongSignals = false; } } // // Enable All Signallers Longs ... // Only if they are Configured as Enable at Settings ... void XUSCHF5EnableLongSignallers() { // // XTD ... if (xUSCHF5MXTDEnableSignaller) { // xUSCHF5MXTDAllowLongSignals = xUSCHF5XTDAllowLongSignals ? true : xUSCHF5MXTDAllowLongSignals; // if (xUSCHF5MXTDAllowLongSignals) { xUSCHF5Provider.EnableXTDLongs(); } } // // XTAM ... if (xUSCHF5MXTAMEnableSignaller) { // xUSCHF5MXTAMAllowLongSignals = xUSCHF5XTAMAllowLongSignals ? true : xUSCHF5MXTAMAllowLongSignals; // if (xUSCHF5MXTAMAllowLongSignals) { xUSCHF5Provider.EnableXTAMLongs(); } } // // XSI ... if (xUSCHF5MXSIEnableSignaller) { // xUSCHF5MXSIAllowLongSignals = xUSCHF5XSIAllowLongSignals ? true : xUSCHF5MXSIAllowLongSignals; // if (xUSCHF5MXSIAllowLongSignals) { xUSCHF5Provider.EnableXSILongs(); } } // // XTSFI ... if (xUSCHF5MXTSFIEnableSignaller) { // xUSCHF5MXTSFIAllowLongSignals = xUSCHF5XTSFIAllowLongSignals ? true : xUSCHF5MXTSFIAllowLongSignals; // if (xUSCHF5MXTSFIAllowLongSignals) { xUSCHF5Provider.EnableXTSFILongs(); } } // // XOBDLH ... if (xUSCHF5MXOBDLHEnableSignaller) { // xUSCHF5MXOBDLHAllowLongSignals = xUSCHF5XOBDLHAllowLongSignals ? true : xUSCHF5MXOBDLHAllowLongSignals; // if (xUSCHF5MXOBDLHAllowLongSignals) { xUSCHF5Provider.EnableXOBDLHLongs(); } } // // XCHMACC ... if (xUSCHF5MXCHMACCEnableSignaller) { // xUSCHF5MXCHMACCAllowLongSignals = xUSCHF5XCHMACCAllowLongSignals ? true : xUSCHF5MXCHMACCAllowLongSignals; // if (xUSCHF5MXCHMACCAllowLongSignals) { xUSCHF5Provider.EnableXCHMACCLongs(); } } // // XCHMAMX ... if (xUSCHF5MXCHMAMXEnableSignaller) { // xUSCHF5MXCHMAMXAllowLongSignals = xUSCHF5XCHMAMXAllowLongSignals ? true : xUSCHF5MXCHMAMXAllowLongSignals; // if (xUSCHF5MXCHMAMXAllowLongSignals) { xUSCHF5Provider.EnableXCHMAMXLongs(); } } // // XCHMAMN ... if (xUSCHF5MXCHMAMNEnableSignaller) { // xUSCHF5MXCHMAMNAllowLongSignals = xUSCHF5XCHMAMNAllowLongSignals ? true : xUSCHF5MXCHMAMNAllowLongSignals; // if (xUSCHF5MXCHMAMNAllowLongSignals) { xUSCHF5Provider.EnableXCHMAMNLongs(); } } } // // Disable All Signallers Shorts ... void XUSCHF5DisableShortSignallers() { // // XTD ... if (xUSCHF5MXTDEnableSignaller) { // xUSCHF5Provider.DisableXTDShorts(); xUSCHF5MXTDAllowShortSignals = false; } // // XTAM ... if (xUSCHF5MXTAMEnableSignaller) { // xUSCHF5Provider.DisableXTAMShorts(); xUSCHF5MXTAMAllowShortSignals = false; } // // XSI ... if (xUSCHF5MXSIEnableSignaller) { // xUSCHF5Provider.DisableXSIShorts(); xUSCHF5MXSIAllowShortSignals = false; } // // XTSFI ... if (xUSCHF5MXTSFIEnableSignaller) { // xUSCHF5Provider.DisableXTSFIShorts(); xUSCHF5MXTSFIAllowShortSignals = false; } // // XOBDLH ... if (xUSCHF5MXOBDLHEnableSignaller) { // xUSCHF5Provider.DisableXOBDLHShorts(); xUSCHF5MXOBDLHAllowShortSignals = false; } // // XCHMACC ... if (xUSCHF5MXCHMACCEnableSignaller) { // xUSCHF5Provider.DisableXCHMACCShorts(); xUSCHF5MXCHMACCAllowShortSignals = false; } // // XCHMAMX ... if (xUSCHF5MXCHMAMXEnableSignaller) { // xUSCHF5Provider.DisableXCHMAMXShorts(); xUSCHF5MXCHMAMXAllowShortSignals = false; } // // XCHMAMN ... if (xUSCHF5MXCHMAMNEnableSignaller) { // xUSCHF5Provider.DisableXCHMAMNShorts(); xUSCHF5MXCHMAMNAllowShortSignals = false; } } // // Enable All Signallers Shorts ... // Only if they are Configured as Enable at Settings ... void XUSCHF5EnableShortSignallers() { // // XTD ... if (xUSCHF5MXTDEnableSignaller) { // xUSCHF5MXTDAllowShortSignals = xUSCHF5XTDAllowShortSignals ? true : xUSCHF5MXTDAllowShortSignals; // if (xUSCHF5MXTDAllowShortSignals) { xUSCHF5Provider.EnableXTDShorts(); } } // // XTAM ... if (xUSCHF5MXTAMEnableSignaller) { // xUSCHF5MXTAMAllowShortSignals = xUSCHF5XTAMAllowShortSignals ? true : xUSCHF5MXTAMAllowShortSignals; // if (xUSCHF5MXTAMAllowShortSignals) { xUSCHF5Provider.EnableXTAMShorts(); } } // // XSI ... if (xUSCHF5MXSIEnableSignaller) { // xUSCHF5MXSIAllowShortSignals = xUSCHF5XSIAllowShortSignals ? true : xUSCHF5MXSIAllowShortSignals; // if (xUSCHF5MXSIAllowShortSignals) { xUSCHF5Provider.EnableXSIShorts(); } } // // XTSFI ... if (xUSCHF5MXTSFIEnableSignaller) { // xUSCHF5MXTSFIAllowShortSignals = xUSCHF5XTSFIAllowShortSignals ? true : xUSCHF5MXTSFIAllowShortSignals; // if (xUSCHF5MXTSFIAllowShortSignals) { xUSCHF5Provider.EnableXTSFIShorts(); } } // // XOBDLH ... if (xUSCHF5MXOBDLHEnableSignaller) { // xUSCHF5MXOBDLHAllowShortSignals = xUSCHF5XOBDLHAllowShortSignals ? true : xUSCHF5MXOBDLHAllowShortSignals; // if (xUSCHF5MXOBDLHAllowShortSignals) { xUSCHF5Provider.EnableXOBDLHShorts(); } } // // XCHMACC ... if (xUSCHF5MXCHMACCEnableSignaller) { // xUSCHF5MXCHMACCAllowShortSignals = xUSCHF5XCHMACCAllowShortSignals ? true : xUSCHF5MXCHMACCAllowShortSignals; // if (xUSCHF5MXCHMACCAllowShortSignals) { xUSCHF5Provider.EnableXCHMACCShorts(); } } // // XCHMAMX ... if (xUSCHF5MXCHMAMXEnableSignaller) { // xUSCHF5MXCHMAMXAllowShortSignals = xUSCHF5XCHMAMXAllowShortSignals ? true : xUSCHF5MXCHMAMXAllowShortSignals; // if (xUSCHF5MXCHMAMXAllowShortSignals) { xUSCHF5Provider.EnableXCHMAMXShorts(); } } // // XCHMAMN ... if (xUSCHF5MXCHMAMNEnableSignaller) { // xUSCHF5MXCHMAMNAllowShortSignals = xUSCHF5XCHMAMNAllowShortSignals ? true : xUSCHF5MXCHMAMNAllowShortSignals; // if (xUSCHF5MXCHMAMNAllowShortSignals) { xUSCHF5Provider.EnableXCHMAMNShorts(); } } } // // // // // XTD Long Signal Checking ... bool XUSCHF5XTDHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTDEnableSignaller || !xUSCHF5MXTDAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCTrendsUp && ( // mConditions.isXCHMAMCVale // || // (mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown) // || // (mConditions.isXCHLHMCLCHHSame && mConditions.isXCHLHMCLCLLSame && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) // ) // ) // ) // ) // || // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // ((mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear) && ( // (mConditions.isXCHMALCVale && mConditions.isXTDBearishVale && mConditions.isXLHLLIncreased) // || // (mConditions.isXCHMALCPeak && mConditions.isXCHMASCCrossedOverMax && mConditions.isXTSCurrentCrossedOverMediest) // || // (mConditions.isXCHMALCVale && mConditions.isXLHLLIncreased && mConditions.isXTSCurrentCrossedOverFarest && mConditions.isXTSCurrentCrossedOverNearest) // || // (mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest && mConditions.isXCHMASCCrossedOverMin && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // ) // ) // || // ((mConditions.isXTMNeutural && mConditions.isXAMANeutural) && ( // ((mConditions.isXTMEndBullish && mConditions.isXAMAEndBullish) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXTDBearishVale && mConditions.isXTSCurrentUnderFarest && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedUnderFarest) // ) // ) // || // ((mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear) && ( // (mConditions.isXTMEndBullish && mConditions.isXAMAEndBullish) // || // (mConditions.isXCHMALCVale && mConditions.isXLHLLIncreased && mConditions.isXTSCurrentCrossedOverFarest) // || // (mConditions.isXCHMALCVale && mConditions.isXCHLHSCMCHHSame && mConditions.isXTSCurrentCrossedOverFarest && mConditions.isXTSCurrentCrossedOverNearest && mConditions.isXTSCurrentCrossedOverMediest) // ) // ) // ) // ) // ) // ) // ) // ) // || // // XTD Long ... // PriceInSignalRange ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCVale && mConditions.isXCHMAMCTrendsUp) // || // ((mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown && mConditions.isXCHMALCFastOverSlow) && ( // (mConditions.isXTSCurrentMax && mConditions.isXTMStartBullish && mConditions.isXAMAStartBullish && !mConditions.isXCHMAMCTrendsUp && !mConditions.isXCHMAMCTrendsDown && mConditions.isXTDSignalCrossedOverBear) // || // (mConditions.isXCHMAMCVale && mConditions.isXTMEndBullish && mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverFarest && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXLHLLDecreased && mConditions.isXCHLHMCLCLLSame && mConditions.isXCHMASCUnderMin && mConditions.isXTDSignalCrossedOverBear) // ) // ) // ) // ) // || // // XTD Long ... // PriceInSignalRange ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHLHMCLCHHSame && mConditions.isXTSCurrentUnderFarest && mConditions.isXCHMASCCrossedOverMin) // ) // ) // ) // ) // || // // 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) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCTrendsUp && ( // mConditions.isXCHMAMCVale // || // (mConditions.isXTSAllSame && mConditions.isXTMNeutural && mConditions.isXAMANeutural && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalCrossedOverBear) // ) // ) // || // (mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown && mConditions.isXCHMALCFastOverSlow) // || // (mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXTDBearishVale && mConditions.isXTSCurrentUnderFarest && mConditions.isXTSCurrentUnderMediest && mConditions.isXTDSignalCrossedOverBear) // || // (mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXTDBearishVale && mConditions.isXCHMASCUnderMin && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedUnderNearest && mConditions.isXTSCurrentCrossedUnderMediest) // ) // ) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // (mConditions.isXCHMALCPeak && mConditions.isXCHLHMCLCHHSame && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMAMCFastOverSlow && mConditions.isXTSCurrentUnderMediest) // ) // ) // ) // ) // || // // XTD Long ... // PriceUnderSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMAMCVale && mConditions.isXCHMAMCTrendsUp) // || // (mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXCHMAMCVale && mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXCHMASCUnderMin && mConditions.isXTDSignalCrossedOverBear) // ) // ) // ) // ) // || // // 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) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // (mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown && mConditions.isXCHMALCFastOverSlow) // || // (mConditions.isXTSCurrentMax && mConditions.isXTDBearishVale && mConditions.isXAMAStartBullish && mConditions.isXTDSignalCrossedOverBear && mConditions.isXLHPriceCrossedOverSignal) // ) // ) // || // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // mConditions.isXRSICrossedOverLongExit // || // ((mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXTDSignalCrossedOverBear) && ( // mConditions.isXTSCurrentUnderMediest // || // (mConditions.isXTSCurrentMax && (mConditions.isXAMANeutural || mConditions.isXAMAEndBullish)) // ) // ) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // ((mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear) && ( // mConditions.isXTSCurrentCrossedOverNearest // || // (mConditions.isXCHMAMCPeak && mConditions.isXLHLLIncreased) // || // (mConditions.isXTDBearishVale && mConditions.isXTDBullOverBear && mConditions.isXCHMASCCrossedOverMin) // ) // ) // || // (mConditions.isXTDSignalCrossedOverBear && ( // (mConditions.isXCHMAMCPeak && ( // (mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentUnderNearest) // || // (mConditions.isXTSCurrentMax && ( // (mConditions.isXCHLHSameHHs && mConditions.isXCHMASCOverMax && mConditions.isXTSCurrentOverFarest) // || // (!mConditions.isXCHMASCTrendsUp && !mConditions.isXCHMASCTrendsDown && mConditions.isXCHMASCFastOverSlow) // || // (mConditions.isXCHMASCOverMin && mConditions.isXCHMASCUnderMax && mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXCHLHMCLCHHSame && ( // mConditions.isXTDBearishVale // || // mConditions.isXCHLHMCLCLLSame // ) // ) // ) // ) // ) // ) // || // ((mConditions.isXTSCurrentMax && mConditions.isXCHMASCOverMax && mConditions.isXTSCurrentOverMediest && mConditions.isXTSCurrentOverFarest) && ( // mConditions.isXTSCurrentOverNearest // || // (mConditions.isXCHMASCCrossedOverMax && mConditions.isXLHPriceCrossedOverSignal) // ) // ) // || // (mConditions.isXTSCurrentMax && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest && mConditions.isXLHPriceCrossedOverSignal) // || // ((mConditions.isXTSCurrentUnderNearest || mConditions.isXTSCurrentCrossedUnderNearest) && (mConditions.isXTSCurrentUnderMediest || mConditions.isXTSCurrentCrossedUnderMediest)) // ) // ) // ) // ) // || // ((mConditions.isXTMNeutural && mConditions.isXTMEndBullish) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest && mConditions.isXTSCurrentUnderNearest && mConditions.isXTDSignalCrossedOverBear) // ) // ) // || // ((mConditions.isXTMNeutural && mConditions.isXAMABullish) && ( // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentUnderNearest && mConditions.isXTDSignalCrossedOverBear) // ) // ) // ) // ) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // ((mConditions.isXTSCurrentMax && mConditions.isXCHLHMCLCHHSame && mConditions.isXTDSignalCrossedOverBear) && ( // (mConditions.isXLHLLDecreased && mConditions.isXCHMAMCTrendsDown && mConditions.isXCHMAMCFastOverSlow && mConditions.isXLHPriceCrossedOverSignal) // || // (mConditions.isXCHMALCPeak && mConditions.isXTDBearishVale && mConditions.isXCHMASCOverMax && mConditions.isXCHMASCCrossedOverMax && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // ) // ) // ) // ) // || // // XTD Long ... // PriceOverSignal ... // Check If LL Same In Length ... ((mConditions.isXLHLLSameInLength && !mConditions.isXLHHHSameInLength) && // ( // // Check if MC Fast Under Slow ... ((mConditions.isXCHMAMCFastUnderSlow || mConditions.isXCHMAMCFastCrossedUnderSlow) && ( // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // (mConditions.isXTSCurrentMax && ( // (mConditions.isXCHLHSameHHs && mConditions.isXCHLHMCLCLLSame && mConditions.isXCHMASCCrossedOverMax && mConditions.isXTDSignalCrossedOverBear) // || // (mConditions.isXCHLHSCMCHHSame && ( // (mConditions.isXCHLHMCLCLLSame && mConditions.isXLHHighAttachedHH && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // ) // ) // || // ((mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) && ( // (mConditions.isXLHHighAttachedHH && mConditions.isXTDSignalCrossedOverBear) // || // (mConditions.isXLHLLIncreased && mConditions.isXCHLHSCMCHHSame) // ) // ) // ) // ) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMAMCTrendsDown) // ) // ) // || // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // mConditions.isXRSICrossedOverLongExit // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // ((mConditions.isXCHMAMCPeak && mConditions.isXLHHighAttachedHH) && ( // ((mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear) && ( // mConditions.isXCHLHSCMCHHSame // || // (mConditions.isXTDBullOverBear && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest && mConditions.isXCHMASCCrossedOverMax && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // || // (mConditions.isXCHMALCVale && mConditions.isXCHLHSameHHs && mConditions.isXTDBearishVale && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) // ) // ) // || // (mConditions.isXLHLLIncreased && mConditions.isXCHLHSCMCHHSame && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) // || // (mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXTDBullOverBear && mConditions.isXCHLHSCMCHHSame && mConditions.isXTDSignalCrossedOverBear) // ) // ) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish && mConditions.isXTSCurrentMax && mConditions.isXCHLHSCMCHHSame && mConditions.isXTDSignalCrossedOverBear) && ( // (mConditions.isXLHHighAttachedHH && mConditions.isXCHMALCTrendsDown && mConditions.isXCHMASCCrossedOverMax) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMASCOverMax && mConditions.isXCHMAMCTrendsUp && mConditions.isXCHMAMCFastOverSlow) // || // (mConditions.isXCHMASCOverMax && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest) // ) // ) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXCHLHSameHHs && mConditions.isXTSCurrentMax && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverFarest && mConditions.isXTSCurrentCrossedOverNearest && mConditions.isXTSCurrentCrossedOverMediest) // ) // ) // ) // ) // || // // XTD Long ... // PriceOverSignal ... // Check If HH is Same In Length ... ((mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // mConditions.isXRSICrossedOverLongExit // || // (mConditions.isXCHMALCPeak && mConditions.isXCHMALCTrendsDown) // || // (mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentUnderMediest && mConditions.isXTSCurrentCrossedUnderNearest && mConditions.isXTSCurrentCrossedUnderMediest) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXCHLHMCLCHHSame && mConditions.isXTSCurrentUnderFarest && mConditions.isXTDSignalCrossedOverBear && mConditions.isXLHPriceCrossedOverSignal) // || // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // (mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXLHLLIncreased && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverNearest) // || // ((mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXTDSignalCrossedOverBear) && ( // mConditions.isXTSCurrentUnderMediest // || // (mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) // || // (mConditions.isXTSCurrentMax && ( // (mConditions.isXTDBearishVale && mConditions.isXTSCurrentCrossedOverNearest) // || // (mConditions.isXLHLLIncreased && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // || // (mConditions.isXTDBullOverBear && mConditions.isXCHMAMCTrendsUp && mConditions.isXCHMALCTrendsDown && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // || // (mConditions.isXCHMAMCPeak && mConditions.isXTSCurrentMax && mConditions.isXLHHHDecreased && mConditions.isXTMStartBullish && mConditions.isXAMAStartBullish && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverFarest && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // || // (mConditions.isXTMBullish && mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXAMANeutural && mConditions.isXTSCurrentMax && mConditions.isXCHLHMCLCHHSame && mConditions.isXCHMASCCrossedOverMin && mConditions.isXTDSignalCrossedOverBear && mConditions.isXLHPriceCrossedOverSignal && mConditions.isXTSCurrentCrossedOverNearest) // ) // ) // ) // ) // || // // XTD Long ... // PriceOverSignal ... // Not Same LL or HH in Lenght ... ((!mConditions.isXLHHHSameInLength && !mConditions.isXLHLLSameInLength) && // ( // // Check LC Fast Under Slow ... ((mConditions.isXCHMALCFastUnderSlow || mConditions.isXCHMALCFastCrossedUnderSlow) && ( // ((mConditions.isXTMBullish && mConditions.isXAMABullish) && ( // ((mConditions.isXCHLHSCMCHHSame && mConditions.isXTDSignalCrossedOverBear) && ( // (mConditions.isXLHLLIncreased && mConditions.isXTSCurrentUnderNearest && mConditions.isXTSCurrentCrossedUnderNearest) // || // (mConditions.isXCHMAMCPeak && mConditions.isXCHMALCVale && mConditions.isXTSCurrentMax && mConditions.isXTSCurrentOverFarest && mConditions.isXTSCurrentOverNearest && mConditions.isXTSCurrentOverMediest) // ) // ) // ) // ) // ) // ) // ) // ) // ) // ) // ) // || // // Check Conditions if Price is not has clear state ... ( // ((!mConditions.isXLHPriceOverSignal && !mConditions.isXLHPriceUnderSignal && !mConditions.isXLHPriceInSignalRange && !mConditions.isXLHPriceCrossedOverSignal && !mConditions.isXLHPriceCrossedUnderSignal) && ( // // Next Step is to Check LL and HH Same Style ... // // XTD Long ... // PriceFree ... // Check if Both LL and HH Same In Length ... ((mConditions.isXLHLLSameInLength && mConditions.isXLHHHSameInLength) && // ( // (mConditions.isXCHMALCPeak && mConditions.isXTSCurrentMax && mConditions.isXCHMALCTrendsDown && mConditions.isXCHMASCCrossedOverMax && mConditions.isXTDSignalCrossedOverBear && mConditions.isXTSCurrentCrossedOverMediest) // ) // ) // || // // 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 XUSCHF5XTDHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTDEnableSignaller || !xUSCHF5MXTDAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XTAMHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTAMEnableSignaller || !xUSCHF5MXTAMAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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) && // ( // // Check if SC Fast Under Slow ... ((mConditions.isXCHMASCFastUnderSlow || mConditions.isXCHMASCFastCrossedUnderSlow) && ( // (mConditions.isXTMVale && mConditions.isXAMAVale && mConditions.isXTDSignalVale && mConditions.isXTDBullishVale) // ) // ) // ) // ) // || // // 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 XUSCHF5XTAMHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTAMEnableSignaller || !xUSCHF5MXTAMAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XSIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXSIEnableSignaller || !xUSCHF5MXSIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XSIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXSIEnableSignaller || !xUSCHF5MXSIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XTSFIHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTSFIEnableSignaller || !xUSCHF5MXTSFIAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XTSFIHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXTSFIEnableSignaller || !xUSCHF5MXTSFIAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XOBDLHHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXOBDLHEnableSignaller || !xUSCHF5MXOBDLHAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XOBDLHHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXOBDLHEnableSignaller || !xUSCHF5MXOBDLHAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMACCHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMACCEnableSignaller || !xUSCHF5MXCHMACCAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMACCHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMACCEnableSignaller || !xUSCHF5MXCHMACCAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMAMNHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMAMNEnableSignaller || !xUSCHF5MXCHMAMNAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMAMNHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMAMNEnableSignaller || !xUSCHF5MXCHMAMNAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMAMXHasLongSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMAMXEnableSignaller || !xUSCHF5MXCHMAMXAllowLongSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 XUSCHF5XCHMAMXHasShortSignal() { // bool result = false; // // Validate Args ... if (!xUSCHF5MXCHMAMXEnableSignaller || !xUSCHF5MXCHMAMXAllowShortSignals) { return result; } // // Retrieve Market Condition ... XMarketConditions mConditions = xUSCHF5Provider.GetLastMarketCondition(); // // Start Analysing Market based On Conditions ... result = // // Base Condition: xUSCHF5Provider.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 ... //