Files
MQL5Data/Projects/XBTU5/Providers/x-saherelm.xbtu5.provider.indicators.lib.mq5
T
2024-01-25 04:11:24 +03:30

6706 lines
185 KiB
Plaintext

///////////////////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 XBTU5 Signal Provider Indicators Library
// ----------------------------------------------------------------
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
// Include Provider Inputs ...
#include "x-saherelm.xbtu5.provider.inputs.lib.mq5"
//
// Include Provider Class ...
#include "../Classes/x-saherelm.provider.lib.mq5"
//
// Signallers ...
input group "XBTU5 Signallers";
//
// XTD ...
input group "XBTU5 XTD Signaller";
input bool xBTU5XTDEnableSignaller = true; // Enable Signaller
input bool xBTU5XTDAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XTDAllowShortSignals = true; // Enable Short Signals
//
// XTAM ...
input group "XBTU5 XTAM Signaller";
input bool xBTU5XTAMEnableSignaller = true; // Enable Signaller
input bool xBTU5XTAMAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XTAMAllowShortSignals = true; // Enable Short Signals
//
// XSI ...
input group "XBTU5 XSI Signaller";
input bool xBTU5XSIEnableSignaller = true; // Enable Signaller
input bool xBTU5XSIAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XSIAllowShortSignals = true; // Enable Short Signals
//
// XSTFI ...
input group "XBTU5 XSTFI Signaller";
input bool xBTU5XSTFIEnableSignaller = true; // Enable Signaller
input bool xBTU5XSTFIAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XSTFIAllowShortSignals = true; // Enable Short Signals
//
// XOBDLH ...
input group "XBTU5 XOBDLH Signaller";
input bool xBTU5XOBDLHEnableSignaller = true; // Enable Signaller
input bool xBTU5XOBDLHAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XOBDLHAllowShortSignals = true; // Enable Short Signals
//
// XCHMACC ...
input group "XBTU5 XCHMACC Signaller";
input bool xBTU5XCHMACCEnableSignaller = true; // Enable Signaller
input bool xBTU5XCHMACCAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XCHMACCAllowShortSignals = true; // Enable Short Signals
//
// XCHMAMX ...
input group "XBTU5 XCHMAMX Signaller";
input bool xBTU5XCHMAMXEnableSignaller = true; // Enable Signaller
input bool xBTU5XCHMAMXAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XCHMAMXAllowShortSignals = true; // Enable Short Signals
//
// XCHMAMN ...
input group "XBTU5 XCHMAMN Signaller";
input bool xBTU5XCHMAMNEnableSignaller = true; // Enable Signaller
input bool xBTU5XCHMAMNAllowLongSignals = true; // Enable Long Signals
input bool xBTU5XCHMAMNAllowShortSignals = true; // Enable Short Signals
//
bool xBTU5IsTestMode = true;
int xBTU5MaxLengthOfInputs = 0;
int xBTU5CalculatedBars = 0;
//
// Signaller Variables ...
//
// XTD ...
bool xBTU5MXTDEnableSignaller = xBTU5XTDEnableSignaller;
bool xBTU5MXTDAllowLongSignals = xBTU5XTDAllowLongSignals;
bool xBTU5MXTDAllowShortSignals = xBTU5XTDAllowShortSignals;
//
// XTAM ...
bool xBTU5MXTAMEnableSignaller = xBTU5XTAMEnableSignaller;
bool xBTU5MXTAMAllowLongSignals = xBTU5XTAMAllowLongSignals;
bool xBTU5MXTAMAllowShortSignals = xBTU5XTAMAllowShortSignals;
//
// XSI ...
bool xBTU5MXSIEnableSignaller = xBTU5XSIEnableSignaller;
bool xBTU5MXSIAllowLongSignals = xBTU5XSIAllowLongSignals;
bool xBTU5MXSIAllowShortSignals = xBTU5XSIAllowShortSignals;
//
// XSTFI ...
bool xBTU5MXSTFIEnableSignaller = xBTU5XSTFIEnableSignaller;
bool xBTU5MXSTFIAllowLongSignals = xBTU5XSTFIAllowLongSignals;
bool xBTU5MXSTFIAllowShortSignals = xBTU5XSTFIAllowShortSignals;
//
// XOBDLH ...
bool xBTU5MXOBDLHEnableSignaller = xBTU5XOBDLHEnableSignaller;
bool xBTU5MXOBDLHAllowLongSignals = xBTU5XOBDLHAllowLongSignals;
bool xBTU5MXOBDLHAllowShortSignals = xBTU5XOBDLHAllowShortSignals;
//
// XCHMACC ...
bool xBTU5MXCHMACCEnableSignaller = xBTU5XCHMACCEnableSignaller;
bool xBTU5MXCHMACCAllowLongSignals = xBTU5XCHMACCAllowLongSignals;
bool xBTU5MXCHMACCAllowShortSignals = xBTU5XCHMACCAllowShortSignals;
//
// XCHMAMX ...
bool xBTU5MXCHMAMXEnableSignaller = xBTU5XCHMAMXEnableSignaller;
bool xBTU5MXCHMAMXAllowLongSignals = xBTU5XCHMAMXAllowLongSignals;
bool xBTU5MXCHMAMXAllowShortSignals = xBTU5XCHMAMXAllowShortSignals;
//
// XCHMAMN ...
bool xBTU5MXCHMAMNEnableSignaller = xBTU5XCHMAMNEnableSignaller;
bool xBTU5MXCHMAMNAllowLongSignals = xBTU5XCHMAMNAllowLongSignals;
bool xBTU5MXCHMAMNAllowShortSignals = xBTU5XCHMAMNAllowShortSignals;
//
XCPriver *xBTU5Provider;
//
// Validate Indicators Inputs ...
bool XBTU5ValidateIndicatorsInputs()
{
//
bool result = false;
//
// XTM ...
result = XTMValidateInputs();
if (!result)
{
return result;
}
//
// XAMA ...
result = XAMAValidateInputs();
if (!result)
{
return result;
}
//
// XTD ...
result = XTDValidateInputs();
if (!result)
{
return result;
}
//
// XFI ...
result = XFIValidateInputs();
if (!result)
{
return result;
}
//
// XTS ...
result = XTSValidateInputs();
if (!result)
{
return result;
}
//
// XOBD ...
result = XOBDValidateInputs();
if (!result)
{
return result;
}
//
// XLH ...
result = XLHValidateInputs();
if (!result)
{
return result;
}
//
// XRSI ...
result = XRSIValidateInputs();
if (!result)
{
return result;
}
//
// XCHLH ...
result = XCHLHValidateInputs();
if (!result)
{
return result;
}
//
// XCHMA ...
result = XCHMAValidateInputs();
if (!result)
{
return result;
}
//
// Make an Instance Of XCPriver Class for Use ...
xBTU5Provider = new XCPriver(
//
// Commons ...
_Symbol,
_Period,
//
// Signallers ...
//
// XTD ...
xBTU5MXTDEnableSignaller,
xBTU5MXTDAllowLongSignals,
xBTU5MXTDAllowShortSignals,
//
// XTAM ...
xBTU5MXTAMEnableSignaller,
xBTU5MXTAMAllowLongSignals,
xBTU5MXTAMAllowShortSignals,
//
// XSI ...
xBTU5MXSIEnableSignaller,
xBTU5MXSIAllowLongSignals,
xBTU5MXSIAllowShortSignals,
//
// XSTFI ...
xBTU5MXSTFIEnableSignaller,
xBTU5MXSTFIAllowLongSignals,
xBTU5MXSTFIAllowShortSignals,
//
// XOBDLH ...
xBTU5MXOBDLHEnableSignaller,
xBTU5MXOBDLHAllowLongSignals,
xBTU5MXOBDLHAllowShortSignals,
//
// XCHMACC ...
xBTU5MXCHMACCEnableSignaller,
xBTU5MXCHMACCAllowLongSignals,
xBTU5MXCHMACCAllowShortSignals,
//
// XCHMAMX ...
xBTU5MXCHMAMXEnableSignaller,
xBTU5MXCHMAMXAllowLongSignals,
xBTU5MXCHMAMXAllowShortSignals,
//
// XCHMAMN ...
xBTU5MXCHMAMNEnableSignaller,
xBTU5MXCHMAMNAllowLongSignals,
xBTU5MXCHMAMNAllowShortSignals
//
);
//
result = true;
//
return result;
}
//
// Init Indicators ...
bool XBTU5InitIndicators()
{
//
bool result = false;
//
// Make it Enable when we need to Log Market Conditions ...
// xBTU5IsTestMode = false; // IsRunningOnTestMode();
//
// Check and Calculate Max Length in Inputs ...
//
//
// XTM ...
xBTU5MaxLengthOfInputs = MathMax(
xTMMaPeriod,
xBTU5NumberOfItemsPerTick);
//
// XAMA ...
xBTU5MaxLengthOfInputs = MathMax(
xAMALength,
xBTU5NumberOfItemsPerTick);
xBTU5MaxLengthOfInputs = MathMax(
xAMAFastEMA,
xBTU5NumberOfItemsPerTick);
xBTU5MaxLengthOfInputs = MathMax(
xAMASlowEMA,
xBTU5NumberOfItemsPerTick);
//
// XLH ...
xBTU5MaxLengthOfInputs = MathMax(
xLHLength,
xBTU5NumberOfItemsPerTick);
//
// XTD ...
xBTU5MaxLengthOfInputs = MathMax(
xTDLength,
xBTU5MaxLengthOfInputs);
//
// XFI ...
xBTU5MaxLengthOfInputs = MathMax(
xFILength,
xBTU5MaxLengthOfInputs);
//
// XRSI ...
xBTU5MaxLengthOfInputs = MathMax(
xRSILength,
xBTU5MaxLengthOfInputs);
//
// XOBD ...
xBTU5MaxLengthOfInputs = MathMax(
xOBDLength,
xBTU5MaxLengthOfInputs);
//
// XCHLH ...
xBTU5MaxLengthOfInputs = MathMax(
xCHLHLcLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHLHMcLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHLHScLength,
xBTU5MaxLengthOfInputs);
//
// XCHMA ...
xBTU5MaxLengthOfInputs = MathMax(
xCHMAScFastLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHMAScSlowLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHMAMcFastLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHMAMcSlowLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHMALcFastLength,
xBTU5MaxLengthOfInputs);
xBTU5MaxLengthOfInputs = MathMax(
xCHMALcSlowLength,
xBTU5MaxLengthOfInputs);
//
// Validate Indicators Inputs before Initialization ...
result = XBTU5ValidateIndicatorsInputs();
if (!result)
{
return result;
}
//
// Validate Signallers ...
//
// XTD ...
bool isXTDEnable =
xBTU5XTDEnableSignaller &&
(xBTU5XTDAllowLongSignals ||
xBTU5XTDAllowShortSignals);
//
// XTAM ...
bool isXTAMEnable =
xBTU5XTAMEnableSignaller &&
(xBTU5XTAMAllowLongSignals ||
xBTU5XTAMAllowShortSignals);
//
// XSI ...
bool isXSIEnable =
xBTU5XSIEnableSignaller &&
(xBTU5XSIAllowLongSignals ||
xBTU5XSIAllowShortSignals);
//
// XSTFI ...
bool isXSTFIEnable =
xBTU5XSTFIEnableSignaller &&
(xBTU5XSTFIAllowLongSignals ||
xBTU5XSTFIAllowShortSignals);
//
// XOBDLH ...
bool isXOBDLHEnable =
xBTU5XOBDLHEnableSignaller &&
(xBTU5XOBDLHAllowLongSignals ||
xBTU5XOBDLHAllowShortSignals);
//
// XCHMACC ...
bool isXCHMACCEnable =
xBTU5XCHMACCEnableSignaller &&
(xBTU5XCHMACCAllowLongSignals ||
xBTU5XCHMACCAllowShortSignals);
//
// XCHMAMX ...
bool isXCHMAMXEnable =
xBTU5XCHMAMXEnableSignaller &&
(xBTU5XCHMAMXAllowLongSignals ||
xBTU5XCHMAMXAllowShortSignals);
//
// XCHMAMN ...
bool isXCHMAMNEnable =
xBTU5XCHMAMNEnableSignaller &&
(xBTU5XCHMAMNAllowLongSignals ||
xBTU5XCHMAMNAllowShortSignals);
//
bool hasSignaller =
//
isXTDEnable ||
isXTAMEnable ||
isXSIEnable ||
isXSTFIEnable ||
isXOBDLHEnable ||
isXCHMACCEnable ||
isXCHMAMXEnable ||
isXCHMAMNEnable
//
;
result = hasSignaller;
if (!result)
{
//
LogMessage("XBTU5 doesn't enable any Signaller ...");
//
return result;
}
//
// Initialize Indicator/Oscillator Handlers ...
ResetLastError();
//
// XTM Init ...
result = XTMInitHandlers();
if (!result)
{
return result;
}
//
// XAMA Init ...
result = XAMAInitHandlers();
if (!result)
{
return result;
}
//
// XLH Init ...
result = XLHInitHandlers();
if (!result)
{
return result;
}
//
// XTD Init ...
result = XTDInitHandlers();
if (!result)
{
return result;
}
//
// XFI Init ...
result = XFIInitHandlers();
if (!result)
{
return result;
}
//
// XTS Init ...
result = XTSInitHandlers();
if (!result)
{
return result;
}
//
// XRSI Init ...
result = XRSIInitHandlers();
if (!result)
{
return result;
}
//
// XOBD Init ...
result = XOBDInitHandlers();
if (!result)
{
return result;
}
//
// XCLH Init ...
result = XCHLHInitHandlers();
if (!result)
{
return result;
}
//
// XCHMA Init ...
result = XCHMAInitHandlers();
if (!result)
{
return result;
}
//
result = true;
//
return result;
}
//
// Release Indicators ...
void XBTU5ReleaseIndicators()
{
//
// Release Handlers ...
XTMReleaseHandlers();
XAMAReleaseHandlers();
XLHReleaseHandlers();
XTDReleaseHandlers();
XFIReleaseHandlers();
XTSReleaseHandlers();
XRSIReleaseHandlers();
XOBDReleaseHandlers();
XCHMAReleaseHandlers();
XCHLHReleaseHandlers();
}
//
// Handle Reading Buffers ...
void XBTU5HandleReadingBuffers()
{
//
// Reading Calculated Bars for a Simple Handler ...
xBTU5CalculatedBars = BarsCalculated(xTMHandler);
//
// Read Indicators Buffers ...
XTMReadBuffers(xBTU5NumberOfItemsPerTick);
XAMAReadBuffers(xBTU5NumberOfItemsPerTick);
XLHReadBuffers(xBTU5NumberOfItemsPerTick);
XTDReadBuffers(xBTU5NumberOfItemsPerTick);
XFIReadBuffers(xBTU5NumberOfItemsPerTick);
XTSReadBuffers(xBTU5NumberOfItemsPerTick);
XRSIReadBuffers(xBTU5NumberOfItemsPerTick);
XOBDReadBuffers(xBTU5NumberOfItemsPerTick);
XCHMAReadBuffers(xBTU5NumberOfItemsPerTick);
XCHLHReadBuffers(xBTU5NumberOfItemsPerTick);
//
xBTU5Provider.ReadConditions();
}
//
//
// START Combination Functions ...
//
//
//
// Can Open Long Trade ...
// this is a Function will Check all market Conditions and get all
// Strategy requirement Verifications for Long Signals ...
bool XBTU5CanOpenLongTrade(
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
)
{
//
bool result = false;
//
info.tp = 0;
info.sl = 0;
ArrayResize(
info.signallers,
0);
//
bool hasSignal = XBTU5HasLongSignal(info);
//
result =
//
hasSignal
//
;
//
if (result)
{
xBTU5Provider.ClearConditions();
}
//
return result;
}
//
// Can Close Long Trade ...
// this is a Function will Check all market Conditions and get all
// Strategy requirement Verifications for Long Signals ...
bool XBTU5CanCloseLongTrade()
{
//
bool result = false;
//
return result;
}
//
// Can Open Short Trade ...
// this is a Function will Check all market Conditions and get all
// Strategy requirement Verifications for Short Signals ...
bool XBTU5CanOpenShortTrade(
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
)
{
//
bool result = false;
//
info.tp = 0;
info.sl = 0;
ArrayResize(
info.signallers,
0);
//
bool hasSignal = XBTU5HasShortSignal(info);
//
result =
//
hasSignal
//
;
//
if (result)
{
xBTU5Provider.ClearConditions();
}
//
return result;
}
//
// Can Close Short Trade ...
// this is a Function will Check all market Conditions and get all
// Strategy requirement Verifications for Short Signals ...
bool XBTU5CanCloseShortTrade()
{
//
bool result = false;
//
return result;
}
//
//
// END Combination Functions ...
//
//
//
//
// START Combination Signaling ...
//
//
//
// Check Market Conditions by Combination of Power of All tools for LONGs ...
bool XBTU5HasLongSignal(
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
)
{
//
bool result = false;
//
// XTD ...
bool isXTDHasSignal = XBTU5XTDHasLongSignal();
if (isXTDHasSignal)
{
//
Add(
EnumToString(XTD),
info.signallers);
}
//
// XTAM ...
bool isXTAMHasSignal = XBTU5XTAMHasLongSignal();
if (isXTAMHasSignal)
{
//
Add(
EnumToString(XTAM),
info.signallers);
}
//
// XSI ...
bool isXSIHasSignal = XBTU5XSIHasLongSignal();
if (isXSIHasSignal)
{
//
Add(
EnumToString(XSI),
info.signallers);
}
//
// XSTFI ...
bool isXSTFIHasSignal = XBTU5XSTFIHasLongSignal();
if (isXSTFIHasSignal)
{
//
Add(
EnumToString(XSTFI),
info.signallers);
}
//
// XOBD XLH ...
bool isXOBDLHHasSignal = XBTU5XOBDLHHasLongSignal();
if (isXOBDLHHasSignal)
{
//
Add(
EnumToString(XOBDLH),
info.signallers);
}
//
// XCHMA Cycles Cross ...
bool isXCHMACCHasSignal = XBTU5XCHMACCHasLongSignal();
if (isXCHMACCHasSignal)
{
//
Add(
EnumToString(XCHMACC),
info.signallers);
}
//
// XCHMA Cycles Min ...
bool isXCHMAMNHasSignal = XBTU5XCHMAMNHasLongSignal();
if (isXCHMAMNHasSignal)
{
//
Add(
EnumToString(XCHMAMN),
info.signallers);
}
//
// XCHMA Cycles Max
bool isXCHMAMXHasSignal = XBTU5XCHMAMXHasLongSignal();
if (isXCHMAMXHasSignal)
{
//
Add(
EnumToString(XCHMAMX),
info.signallers);
}
//
result =
//
isXTDHasSignal
//
||
//
isXTAMHasSignal
//
||
//
isXSIHasSignal
//
||
//
isXSTFIHasSignal
//
||
//
isXOBDLHHasSignal
//
||
//
isXCHMACCHasSignal
//
||
//
isXCHMAMNHasSignal
//
||
//
isXCHMAMXHasSignal
//
;
//
if (result)
{
//
// Only Log Signals Time Market Conditions if is in Testing Mode ...
if (xBTU5IsTestMode)
{
//
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
string message = xBTU5Provider.GenerateConditionsString(mConditions);
//
LogMessage(
"Long Signal Provided by: \n" +
info.signallers[ArraySize(info.signallers) - 1] + "\n" +
"Pusher: " + (string)ArraySize(info.signallers) + "\n" +
"Market Conditions: " + message);
}
}
//
return result;
}
//
// Check Market Conditions by Combination of Power of All tools for SHORTs ...
bool XBTU5HasShortSignal(
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
)
{
//
bool result = false;
//
// XTD ...
bool isXTDHasSignal = XBTU5XTDHasShortSignal();
if (isXTDHasSignal)
{
//
Add(
EnumToString(XTD),
info.signallers);
}
//
// XTAM ...
bool isXTAMHasSignal = XBTU5XTAMHasShortSignal();
if (isXTAMHasSignal)
{
//
Add(
EnumToString(XTAM),
info.signallers);
}
//
// XSI ...
bool isXSIHasSignal = XBTU5XSIHasShortSignal();
if (isXSIHasSignal)
{
//
Add(
EnumToString(XSI),
info.signallers);
}
//
// XSTFI ...
bool isXSTFIHasSignal = XBTU5XSTFIHasShortSignal();
if (isXSTFIHasSignal)
{
//
Add(
EnumToString(XSTFI),
info.signallers);
}
//
// XOBD XLH ...
bool isXOBDLHHasSignal = XBTU5XOBDLHHasShortSignal();
if (isXOBDLHHasSignal)
{
//
Add(
EnumToString(XOBDLH),
info.signallers);
}
//
// XCHMA Cycles Cross ...
bool isXCHMACCHasSignal = XBTU5XCHMACCHasShortSignal();
if (isXCHMACCHasSignal)
{
//
Add(
EnumToString(XCHMACC),
info.signallers);
}
//
// XCHMA Cycles Min ...
bool isXCHMAMNHasSignal = XBTU5XCHMAMNHasShortSignal();
if (isXCHMAMNHasSignal)
{
//
Add(
EnumToString(XCHMAMN),
info.signallers);
}
//
// XCHMA Cycles Max
bool isXCHMAMXHasSignal = XBTU5XCHMAMXHasShortSignal();
if (isXCHMAMXHasSignal)
{
//
Add(
EnumToString(XCHMAMX),
info.signallers);
}
//
result =
//
isXTDHasSignal
//
||
//
isXTAMHasSignal
//
||
//
isXSIHasSignal
//
||
//
isXSTFIHasSignal
//
||
//
isXOBDLHHasSignal
//
||
//
isXCHMACCHasSignal
//
||
//
isXCHMAMNHasSignal
//
||
//
isXCHMAMXHasSignal
//
;
//
if (result)
{
//
// Only Log Signals Time Market Conditions if is in Testing Mode ...
if (xBTU5IsTestMode)
{
//
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
string message = xBTU5Provider.GenerateConditionsString(mConditions);
//
LogMessage(
"Short Signal Provided by: \n" +
info.signallers[ArraySize(info.signallers) - 1] + "\n" +
"Pusher: " + (string)ArraySize(info.signallers) + "\n" +
"Market Conditions: " + message);
}
}
//
return result;
}
//
//
// END Combination Signaling ...
//
//
//
// START Signal Providers ...
//
//
// Disbale All Signallers Longs ...
void XBTU5DisableLongSignallers()
{
//
// XTD ...
if (xBTU5MXTDEnableSignaller)
{
//
xBTU5Provider.DisbaleXTDLongs();
xBTU5MXTDAllowLongSignals = false;
}
//
// XTAM ...
if (xBTU5MXTAMEnableSignaller)
{
//
xBTU5Provider.DisbaleXTAMLongs();
xBTU5MXTAMAllowLongSignals = false;
}
//
// XSI ...
if (xBTU5MXSIEnableSignaller)
{
//
xBTU5Provider.DisbaleXSILongs();
xBTU5MXSIAllowLongSignals = false;
}
//
// XSTFI ...
if (xBTU5MXSTFIEnableSignaller)
{
//
xBTU5Provider.DisbaleXSTFILongs();
xBTU5MXSTFIAllowLongSignals = false;
}
//
// XOBDLH ...
if (xBTU5MXOBDLHEnableSignaller)
{
//
xBTU5Provider.DisbaleXOBDLHLongs();
xBTU5MXOBDLHAllowLongSignals = false;
}
//
// XCHMACC ...
if (xBTU5MXCHMACCEnableSignaller)
{
//
xBTU5Provider.DisbaleXCHMACCLongs();
xBTU5MXCHMACCAllowLongSignals = false;
}
//
// XCHMAMX ...
if (xBTU5MXCHMAMXEnableSignaller)
{
//
xBTU5Provider.DisbaleXCHMAMXLongs();
xBTU5MXCHMAMXAllowLongSignals = false;
}
//
// XCHMAMN ...
if (xBTU5MXCHMAMNEnableSignaller)
{
//
xBTU5Provider.DisbaleXCHMAMNLongs();
xBTU5MXCHMAMNAllowLongSignals = false;
}
}
//
// Enable All Signallers Longs ...
// Only if they are Configured as Enable at Settings ...
void XBTU5EnableLongSignallers()
{
//
// XTD ...
if (xBTU5MXTDEnableSignaller)
{
//
xBTU5MXTDAllowLongSignals =
xBTU5XTDAllowLongSignals
? true
: xBTU5MXTDAllowLongSignals;
//
if (xBTU5MXTDAllowLongSignals)
{
xBTU5Provider.EnableXTDLongs();
}
}
//
// XTAM ...
if (xBTU5MXTAMEnableSignaller)
{
//
xBTU5MXTAMAllowLongSignals =
xBTU5XTAMAllowLongSignals
? true
: xBTU5MXTAMAllowLongSignals;
//
if (xBTU5MXTAMAllowLongSignals)
{
xBTU5Provider.EnableXTAMLongs();
}
}
//
// XSI ...
if (xBTU5MXSIEnableSignaller)
{
//
xBTU5MXSIAllowLongSignals =
xBTU5XSIAllowLongSignals
? true
: xBTU5MXSIAllowLongSignals;
//
if (xBTU5MXSIAllowLongSignals)
{
xBTU5Provider.EnableXSILongs();
}
}
//
// XSTFI ...
if (xBTU5MXSTFIEnableSignaller)
{
//
xBTU5MXSTFIAllowLongSignals =
xBTU5XSTFIAllowLongSignals
? true
: xBTU5MXSTFIAllowLongSignals;
//
if (xBTU5MXSTFIAllowLongSignals)
{
xBTU5Provider.EnableXSTFILongs();
}
}
//
// XOBDLH ...
if (xBTU5MXOBDLHEnableSignaller)
{
//
xBTU5MXOBDLHAllowLongSignals =
xBTU5XOBDLHAllowLongSignals
? true
: xBTU5MXOBDLHAllowLongSignals;
//
if (xBTU5MXOBDLHAllowLongSignals)
{
xBTU5Provider.EnableXOBDLHLongs();
}
}
//
// XCHMACC ...
if (xBTU5MXCHMACCEnableSignaller)
{
//
xBTU5MXCHMACCAllowLongSignals =
xBTU5XCHMACCAllowLongSignals
? true
: xBTU5MXCHMACCAllowLongSignals;
//
if (xBTU5MXCHMACCAllowLongSignals)
{
xBTU5Provider.EnableXCHMACCLongs();
}
}
//
// XCHMAMX ...
if (xBTU5MXCHMAMXEnableSignaller)
{
//
xBTU5MXCHMAMXAllowLongSignals =
xBTU5XCHMAMXAllowLongSignals
? true
: xBTU5MXCHMAMXAllowLongSignals;
//
if (xBTU5MXCHMAMXAllowLongSignals)
{
xBTU5Provider.EnableXCHMAMXLongs();
}
}
//
// XCHMAMN ...
if (xBTU5MXCHMAMNEnableSignaller)
{
//
xBTU5MXCHMAMNAllowLongSignals =
xBTU5XCHMAMNAllowLongSignals
? true
: xBTU5MXCHMAMNAllowLongSignals;
//
if (xBTU5MXCHMAMNAllowLongSignals)
{
xBTU5Provider.EnableXCHMAMNLongs();
}
}
}
//
// Disable All Signallers Shorts ...
void XBTU5DisableShortSignallers()
{
//
// XTD ...
if (xBTU5MXTDEnableSignaller)
{
//
xBTU5Provider.DisableXTDShorts();
xBTU5MXTDAllowShortSignals = false;
}
//
// XTAM ...
if (xBTU5MXTAMEnableSignaller)
{
//
xBTU5Provider.DisableXTAMShorts();
xBTU5MXTAMAllowShortSignals = false;
}
//
// XSI ...
if (xBTU5MXSIEnableSignaller)
{
//
xBTU5Provider.DisableXSIShorts();
xBTU5MXSIAllowShortSignals = false;
}
//
// XSTFI ...
if (xBTU5MXSTFIEnableSignaller)
{
//
xBTU5Provider.DisableXSTFIShorts();
xBTU5MXSTFIAllowShortSignals = false;
}
//
// XOBDLH ...
if (xBTU5MXOBDLHEnableSignaller)
{
//
xBTU5Provider.DisableXOBDLHShorts();
xBTU5MXOBDLHAllowShortSignals = false;
}
//
// XCHMACC ...
if (xBTU5MXCHMACCEnableSignaller)
{
//
xBTU5Provider.DisableXCHMACCShorts();
xBTU5MXCHMACCAllowShortSignals = false;
}
//
// XCHMAMX ...
if (xBTU5MXCHMAMXEnableSignaller)
{
//
xBTU5Provider.DisableXCHMAMXShorts();
xBTU5MXCHMAMXAllowShortSignals = false;
}
//
// XCHMAMN ...
if (xBTU5MXCHMAMNEnableSignaller)
{
//
xBTU5Provider.DisableXCHMAMNShorts();
xBTU5MXCHMAMNAllowShortSignals = false;
}
}
//
// Enable All Signallers Shorts ...
// Only if they are Configured as Enable at Settings ...
void XBTU5EnableShortSignallers()
{
//
// XTD ...
if (xBTU5MXTDEnableSignaller)
{
//
xBTU5MXTDAllowShortSignals =
xBTU5XTDAllowShortSignals
? true
: xBTU5MXTDAllowShortSignals;
//
if (xBTU5MXTDAllowShortSignals)
{
xBTU5Provider.EnableXTDShorts();
}
}
//
// XTAM ...
if (xBTU5MXTAMEnableSignaller)
{
//
xBTU5MXTAMAllowShortSignals =
xBTU5XTAMAllowShortSignals
? true
: xBTU5MXTAMAllowShortSignals;
//
if (xBTU5MXTAMAllowShortSignals)
{
xBTU5Provider.EnableXTAMShorts();
}
}
//
// XSI ...
if (xBTU5MXSIEnableSignaller)
{
//
xBTU5MXSIAllowShortSignals =
xBTU5XSIAllowShortSignals
? true
: xBTU5MXSIAllowShortSignals;
//
if (xBTU5MXSIAllowShortSignals)
{
xBTU5Provider.EnableXSIShorts();
}
}
//
// XSTFI ...
if (xBTU5MXSTFIEnableSignaller)
{
//
xBTU5MXSTFIAllowShortSignals =
xBTU5XSTFIAllowShortSignals
? true
: xBTU5MXSTFIAllowShortSignals;
//
if (xBTU5MXSTFIAllowShortSignals)
{
xBTU5Provider.EnableXSTFIShorts();
}
}
//
// XOBDLH ...
if (xBTU5MXOBDLHEnableSignaller)
{
//
xBTU5MXOBDLHAllowShortSignals =
xBTU5XOBDLHAllowShortSignals
? true
: xBTU5MXOBDLHAllowShortSignals;
//
if (xBTU5MXOBDLHAllowShortSignals)
{
xBTU5Provider.EnableXOBDLHShorts();
}
}
//
// XCHMACC ...
if (xBTU5MXCHMACCEnableSignaller)
{
//
xBTU5MXCHMACCAllowShortSignals =
xBTU5XCHMACCAllowShortSignals
? true
: xBTU5MXCHMACCAllowShortSignals;
//
if (xBTU5MXCHMACCAllowShortSignals)
{
xBTU5Provider.EnableXCHMACCShorts();
}
}
//
// XCHMAMX ...
if (xBTU5MXCHMAMXEnableSignaller)
{
//
xBTU5MXCHMAMXAllowShortSignals =
xBTU5XCHMAMXAllowShortSignals
? true
: xBTU5MXCHMAMXAllowShortSignals;
//
if (xBTU5MXCHMAMXAllowShortSignals)
{
xBTU5Provider.EnableXCHMAMXShorts();
}
}
//
// XCHMAMN ...
if (xBTU5MXCHMAMNEnableSignaller)
{
//
xBTU5MXCHMAMNAllowShortSignals =
xBTU5XCHMAMNAllowShortSignals
? true
: xBTU5MXCHMAMNAllowShortSignals;
//
if (xBTU5MXCHMAMNAllowShortSignals)
{
xBTU5Provider.EnableXCHMAMNShorts();
}
}
}
//
// XTD Long Signal Checking ...
bool XBTU5XTDHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXTDEnableSignaller ||
!xBTU5MXTDAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XTDHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XTD Short Signal Checking ...
bool XBTU5XTDHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXTDEnableSignaller ||
!xBTU5MXTDAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XTDHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XTAM Long Signal Checking ...
bool XBTU5XTAMHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXTAMEnableSignaller ||
!xBTU5MXTAMAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XTAMHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XTAM Short Signal Checking ...
bool XBTU5XTAMHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXTAMEnableSignaller ||
!xBTU5MXTAMAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XTAMHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XSI Long Signal Checking ...
bool XBTU5XSIHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXSIEnableSignaller ||
!xBTU5MXSIAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XSIHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XSI Short Signal Checking ...
bool XBTU5XSIHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXSIEnableSignaller ||
!xBTU5MXSIAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XSIHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XSTFI Long Signal Checking ...
bool XBTU5XSTFIHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXSTFIEnableSignaller ||
!xBTU5MXSTFIAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XSTFIHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XSTFI Short Signal Checking ...
bool XBTU5XSTFIHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXSTFIEnableSignaller ||
!xBTU5MXSTFIAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XSTFIHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XOBDLH Long Signal Checking ...
bool XBTU5XOBDLHHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXOBDLHEnableSignaller ||
!xBTU5MXOBDLHAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
XMarketConditions xMConditions2 = xBTU5Provider.GenerateMarketConditions(2);
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XOBDLHHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XOBDLH Short Signal Checking ...
bool XBTU5XOBDLHHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXOBDLHEnableSignaller ||
!xBTU5MXOBDLHAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XOBDLHHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMACC Long Signal Checking ...
bool XBTU5XCHMACCHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMACCEnableSignaller ||
!xBTU5MXCHMACCAllowLongSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMACCHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMACC Short Signal Checking ...
bool XBTU5XCHMACCHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMACCEnableSignaller ||
!xBTU5MXCHMACCAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMACCHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMAMN Long Signal Checking ...
bool XBTU5XCHMAMNHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMAMNEnableSignaller ||
!xBTU5MXCHMAMNAllowLongSignals)
{
return result;
}
//
ENUM_XCHMA_CYCLES cycles[];
Add(
X_XCHMA_CYCLE_MEDIUM,
cycles);
Add(
X_XCHMA_CYCLE_LONG,
cycles);
//
double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles);
double xCHMANonSCMin2 = XCHMAGetCyclesMinValue(2, cycles);
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMAMNHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMAMN Short Signal Checking ...
bool XBTU5XCHMAMNHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMAMNEnableSignaller ||
!xBTU5MXCHMAMNAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMAMNHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMAMX Long Signal Checking ...
bool XBTU5XCHMAMXHasLongSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMAMXEnableSignaller ||
!xBTU5MXCHMAMXAllowLongSignals)
{
return result;
}
//
ENUM_XCHMA_CYCLES cycles[];
Add(
X_XCHMA_CYCLE_MEDIUM,
cycles);
Add(
X_XCHMA_CYCLE_LONG,
cycles);
//
double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles);
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMAMXHasLongConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// XCHMAMX Short Signal Checking ...
bool XBTU5XCHMAMXHasShortSignal()
{
//
bool result = false;
//
// Validate Args ...
if (!xBTU5MXCHMAMXEnableSignaller ||
!xBTU5MXCHMAMXAllowShortSignals)
{
return result;
}
//
// Retrieve Market Condition ...
XMarketConditions mConditions = xBTU5Provider.GetLastMarketCondition();
//
// Start Analysing Market based On Conditions ...
result =
//
// Base Condition:
xBTU5Provider.XCHMAMXHasShortConditions()
//
&&
//
// Exceptions:
// there some commonly Exceptions which makes our choice incorrect,
// here we are combined knownly Exceptions ...
!(
//
// for Exception we used XLH Conditions as follow ...
//
// Check Conditions if Price In Signal Range ...
(mConditions.isXLHPriceInSignalRange &&
//
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Under Signal ...
(
//
((mConditions.isXLHPriceUnderSignal ||
mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is Over Signal ...
(
//
((mConditions.isXLHPriceOverSignal ||
mConditions.isXLHPriceCrossedOverSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
||
//
// Check Conditions if Price is not has clear state ...
(
//
((!mConditions.isXLHPriceOverSignal &&
!mConditions.isXLHPriceUnderSignal &&
!mConditions.isXLHPriceInSignalRange &&
!mConditions.isXLHPriceCrossedOverSignal &&
!mConditions.isXLHPriceCrossedUnderSignal) &&
(
//
// Next Step is to Check LL and HH Same Style ...
//
// Check if Both LL and HH Same In Length ...
((mConditions.isXLHLLSameInLength &&
mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If LL Same In Length ...
((mConditions.isXLHLLSameInLength &&
!mConditions.isXLHHHSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Check If HH is Same In Length ...
((mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
||
//
// Not Same LL or HH in Lenght ...
((!mConditions.isXLHHHSameInLength &&
!mConditions.isXLHLLSameInLength) &&
//
(
//
false
//
)
//
)
//
)
//
)
//
)
//
)
//
;
//
return result;
}
//
// END Signal Providers ...
//