6437 lines
186 KiB
Plaintext
6437 lines
186 KiB
Plaintext
///////////////////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 XEMPTY5 Signal Provider Indicators Library
|
|
// ----------------------------------------------------------------
|
|
//
|
|
// Maintainer:
|
|
// ------------
|
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
|
//
|
|
//////////////////////////////////////////////////////
|
|
//
|
|
// Global Properties ...
|
|
#property library
|
|
#property copyright "Copyright 2023, SaherElm IT Center"
|
|
#property link "https://www.saherelm.ir"
|
|
#property version "1.00"
|
|
#property strict
|
|
|
|
//
|
|
// Include Provider Inputs ...
|
|
#include "x-saherelm.xempty5.provider.inputs.lib.mq5"
|
|
|
|
//
|
|
// Include Provider Class ...
|
|
#include "../Classes/x-saherelm.provider.lib.mq5"
|
|
|
|
//
|
|
// Signallers ...
|
|
input group "XEMPTY5 Signallers";
|
|
|
|
//
|
|
// XTD ...
|
|
input group "XEMPTY5 XTD Signaller";
|
|
input bool xEMPTY5XTDEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XTDAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XTDAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XTAM ...
|
|
input group "XEMPTY5 XTAM Signaller";
|
|
input bool xEMPTY5XTAMEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XTAMAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XTAMAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XSI ...
|
|
input group "XEMPTY5 XSI Signaller";
|
|
input bool xEMPTY5XSIEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XSIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XSIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XTSFI ...
|
|
input group "XEMPTY5 XTSFI Signaller";
|
|
input bool xEMPTY5XTSFIEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XTSFIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XTSFIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XOBDLH ...
|
|
input group "XEMPTY5 XOBDLH Signaller";
|
|
input bool xEMPTY5XOBDLHEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XOBDLHAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XOBDLHAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMACC ...
|
|
input group "XEMPTY5 XCHMACC Signaller";
|
|
input bool xEMPTY5XCHMACCEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XCHMACCAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XCHMACCAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
input group "XEMPTY5 XCHMAMX Signaller";
|
|
input bool xEMPTY5XCHMAMXEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XCHMAMXAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XCHMAMXAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
input group "XEMPTY5 XCHMAMN Signaller";
|
|
input bool xEMPTY5XCHMAMNEnableSignaller = true; // Enable Signaller
|
|
input bool xEMPTY5XCHMAMNAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEMPTY5XCHMAMNAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// Check in Test Mode or not ...
|
|
bool xEMPTY5IsTestMode = false;
|
|
|
|
//
|
|
// Detect max Input Length of Indicators ...
|
|
int xEMPTY5MaxLengthOfInputs = 0;
|
|
|
|
//
|
|
// Detect Calculated Bars ...
|
|
int xEMPTY5CalculatedBars = 0;
|
|
|
|
//
|
|
// Check prevent Double Signalling on Same Candle ...
|
|
bool xEMPTY5WaitUntilNextCandle = false;
|
|
|
|
//
|
|
// Signaller Variables ...
|
|
//
|
|
// XTD ...
|
|
bool xEMPTY5MXTDEnableSignaller = xEMPTY5XTDEnableSignaller;
|
|
bool xEMPTY5MXTDAllowLongSignals = xEMPTY5XTDAllowLongSignals;
|
|
bool xEMPTY5MXTDAllowShortSignals = xEMPTY5XTDAllowShortSignals;
|
|
|
|
//
|
|
// XTAM ...
|
|
bool xEMPTY5MXTAMEnableSignaller = xEMPTY5XTAMEnableSignaller;
|
|
bool xEMPTY5MXTAMAllowLongSignals = xEMPTY5XTAMAllowLongSignals;
|
|
bool xEMPTY5MXTAMAllowShortSignals = xEMPTY5XTAMAllowShortSignals;
|
|
|
|
//
|
|
// XSI ...
|
|
bool xEMPTY5MXSIEnableSignaller = xEMPTY5XSIEnableSignaller;
|
|
bool xEMPTY5MXSIAllowLongSignals = xEMPTY5XSIAllowLongSignals;
|
|
bool xEMPTY5MXSIAllowShortSignals = xEMPTY5XSIAllowShortSignals;
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool xEMPTY5MXTSFIEnableSignaller = xEMPTY5XTSFIEnableSignaller;
|
|
bool xEMPTY5MXTSFIAllowLongSignals = xEMPTY5XTSFIAllowLongSignals;
|
|
bool xEMPTY5MXTSFIAllowShortSignals = xEMPTY5XTSFIAllowShortSignals;
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool xEMPTY5MXOBDLHEnableSignaller = xEMPTY5XOBDLHEnableSignaller;
|
|
bool xEMPTY5MXOBDLHAllowLongSignals = xEMPTY5XOBDLHAllowLongSignals;
|
|
bool xEMPTY5MXOBDLHAllowShortSignals = xEMPTY5XOBDLHAllowShortSignals;
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool xEMPTY5MXCHMACCEnableSignaller = xEMPTY5XCHMACCEnableSignaller;
|
|
bool xEMPTY5MXCHMACCAllowLongSignals = xEMPTY5XCHMACCAllowLongSignals;
|
|
bool xEMPTY5MXCHMACCAllowShortSignals = xEMPTY5XCHMACCAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
bool xEMPTY5MXCHMAMXEnableSignaller = xEMPTY5XCHMAMXEnableSignaller;
|
|
bool xEMPTY5MXCHMAMXAllowLongSignals = xEMPTY5XCHMAMXAllowLongSignals;
|
|
bool xEMPTY5MXCHMAMXAllowShortSignals = xEMPTY5XCHMAMXAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
bool xEMPTY5MXCHMAMNEnableSignaller = xEMPTY5XCHMAMNEnableSignaller;
|
|
bool xEMPTY5MXCHMAMNAllowLongSignals = xEMPTY5XCHMAMNAllowLongSignals;
|
|
bool xEMPTY5MXCHMAMNAllowShortSignals = xEMPTY5XCHMAMNAllowShortSignals;
|
|
|
|
//
|
|
XCPriver *xEMPTY5Provider;
|
|
|
|
//
|
|
// Validate Indicators Inputs ...
|
|
bool XEMPTY5ValidateIndicatorsInputs()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTM ...
|
|
result = XTMValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XAMA ...
|
|
result = XAMAValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTD ...
|
|
result = XTDValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XFI ...
|
|
result = XFIValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTS ...
|
|
result = XTSValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBD ...
|
|
result = XOBDValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XLH ...
|
|
result = XLHValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XRSI ...
|
|
result = XRSIValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHLH ...
|
|
result = XCHLHValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMA ...
|
|
result = XCHMAValidateInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Make an Instance Of XCPriver Class for Use ...
|
|
xEMPTY5Provider = new XCPriver(
|
|
//
|
|
// Commons ...
|
|
_Symbol,
|
|
_Period,
|
|
//
|
|
// Signallers ...
|
|
//
|
|
// XTD ...
|
|
xEMPTY5MXTDEnableSignaller,
|
|
xEMPTY5MXTDAllowLongSignals,
|
|
xEMPTY5MXTDAllowShortSignals,
|
|
//
|
|
// XTAM ...
|
|
xEMPTY5MXTAMEnableSignaller,
|
|
xEMPTY5MXTAMAllowLongSignals,
|
|
xEMPTY5MXTAMAllowShortSignals,
|
|
//
|
|
// XSI ...
|
|
xEMPTY5MXSIEnableSignaller,
|
|
xEMPTY5MXSIAllowLongSignals,
|
|
xEMPTY5MXSIAllowShortSignals,
|
|
//
|
|
// XTSFI ...
|
|
xEMPTY5MXTSFIEnableSignaller,
|
|
xEMPTY5MXTSFIAllowLongSignals,
|
|
xEMPTY5MXTSFIAllowShortSignals,
|
|
//
|
|
// XOBDLH ...
|
|
xEMPTY5MXOBDLHEnableSignaller,
|
|
xEMPTY5MXOBDLHAllowLongSignals,
|
|
xEMPTY5MXOBDLHAllowShortSignals,
|
|
//
|
|
// XCHMACC ...
|
|
xEMPTY5MXCHMACCEnableSignaller,
|
|
xEMPTY5MXCHMACCAllowLongSignals,
|
|
xEMPTY5MXCHMACCAllowShortSignals,
|
|
//
|
|
// XCHMAMX ...
|
|
xEMPTY5MXCHMAMXEnableSignaller,
|
|
xEMPTY5MXCHMAMXAllowLongSignals,
|
|
xEMPTY5MXCHMAMXAllowShortSignals,
|
|
//
|
|
// XCHMAMN ...
|
|
xEMPTY5MXCHMAMNEnableSignaller,
|
|
xEMPTY5MXCHMAMNAllowLongSignals,
|
|
xEMPTY5MXCHMAMNAllowShortSignals
|
|
//
|
|
);
|
|
|
|
//
|
|
result = true;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Init Indicators ...
|
|
bool XEMPTY5InitIndicators()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Make it Enable when we need to Log Market Conditions ...
|
|
xEMPTY5IsTestMode = IsRunningOnTestMode();
|
|
|
|
//
|
|
// Check and Calculate Max Length in Inputs ...
|
|
//
|
|
|
|
//
|
|
// XTM ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xTMMaPeriod,
|
|
xEMPTY5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XAMA ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xAMALength,
|
|
xEMPTY5NumberOfItemsPerTick);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xAMAFastEMA,
|
|
xEMPTY5NumberOfItemsPerTick);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xAMASlowEMA,
|
|
xEMPTY5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XLH ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xLHLength,
|
|
xEMPTY5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XTD ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xTDLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XFI ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xFILength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XRSI ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xRSILength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XOBD ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xOBDLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHLH ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHLHLcLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHLHMcLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHLHScLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHMA ...
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMAScFastLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMAScSlowLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcFastLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcSlowLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMALcFastLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
xEMPTY5MaxLengthOfInputs = MathMax(
|
|
xCHMALcSlowLength,
|
|
xEMPTY5MaxLengthOfInputs);
|
|
|
|
//
|
|
// Validate Indicators Inputs before Initialization ...
|
|
result = XEMPTY5ValidateIndicatorsInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Validate Signallers ...
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDEnable =
|
|
xEMPTY5XTDEnableSignaller &&
|
|
(xEMPTY5XTDAllowLongSignals ||
|
|
xEMPTY5XTDAllowShortSignals);
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMEnable =
|
|
xEMPTY5XTAMEnableSignaller &&
|
|
(xEMPTY5XTAMAllowLongSignals ||
|
|
xEMPTY5XTAMAllowShortSignals);
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIEnable =
|
|
xEMPTY5XSIEnableSignaller &&
|
|
(xEMPTY5XSIAllowLongSignals ||
|
|
xEMPTY5XSIAllowShortSignals);
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIEnable =
|
|
xEMPTY5XTSFIEnableSignaller &&
|
|
(xEMPTY5XTSFIAllowLongSignals ||
|
|
xEMPTY5XTSFIAllowShortSignals);
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool isXOBDLHEnable =
|
|
xEMPTY5XOBDLHEnableSignaller &&
|
|
(xEMPTY5XOBDLHAllowLongSignals ||
|
|
xEMPTY5XOBDLHAllowShortSignals);
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool isXCHMACCEnable =
|
|
xEMPTY5XCHMACCEnableSignaller &&
|
|
(xEMPTY5XCHMACCAllowLongSignals ||
|
|
xEMPTY5XCHMACCAllowShortSignals);
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
bool isXCHMAMXEnable =
|
|
xEMPTY5XCHMAMXEnableSignaller &&
|
|
(xEMPTY5XCHMAMXAllowLongSignals ||
|
|
xEMPTY5XCHMAMXAllowShortSignals);
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
bool isXCHMAMNEnable =
|
|
xEMPTY5XCHMAMNEnableSignaller &&
|
|
(xEMPTY5XCHMAMNAllowLongSignals ||
|
|
xEMPTY5XCHMAMNAllowShortSignals);
|
|
|
|
//
|
|
bool hasSignaller =
|
|
//
|
|
isXTDEnable ||
|
|
isXTAMEnable ||
|
|
isXSIEnable ||
|
|
isXTSFIEnable ||
|
|
isXOBDLHEnable ||
|
|
isXCHMACCEnable ||
|
|
isXCHMAMXEnable ||
|
|
isXCHMAMNEnable
|
|
//
|
|
;
|
|
result = hasSignaller;
|
|
if (!result)
|
|
{
|
|
//
|
|
LogMessage("XEMPTY5 doesn't enable any Signaller ...");
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Initialize Indicator/Oscillator Handlers ...
|
|
ResetLastError();
|
|
|
|
//
|
|
// XTM Init ...
|
|
result = XTMInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XAMA Init ...
|
|
result = XAMAInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XLH Init ...
|
|
result = XLHInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTD Init ...
|
|
result = XTDInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XFI Init ...
|
|
result = XFIInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTS Init ...
|
|
result = XTSInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XRSI Init ...
|
|
result = XRSIInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBD Init ...
|
|
result = XOBDInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCLH Init ...
|
|
result = XCHLHInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMA Init ...
|
|
result = XCHMAInitHandlers();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
result = true;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Release Indicators ...
|
|
void XEMPTY5ReleaseIndicators()
|
|
{
|
|
//
|
|
// Release Handlers ...
|
|
XTMReleaseHandlers();
|
|
XAMAReleaseHandlers();
|
|
XLHReleaseHandlers();
|
|
XTDReleaseHandlers();
|
|
XFIReleaseHandlers();
|
|
XTSReleaseHandlers();
|
|
XRSIReleaseHandlers();
|
|
XOBDReleaseHandlers();
|
|
XCHMAReleaseHandlers();
|
|
XCHLHReleaseHandlers();
|
|
}
|
|
|
|
//
|
|
// Handle Reading Buffers ...
|
|
void XEMPTY5HandleReadingBuffers()
|
|
{
|
|
//
|
|
// Reading Calculated Bars for a Simple Handler ...
|
|
xEMPTY5CalculatedBars = BarsCalculated(xTMHandler);
|
|
|
|
//
|
|
// Read Indicators Buffers ...
|
|
XTMReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XAMAReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XLHReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XTDReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XFIReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XTSReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XRSIReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XOBDReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XCHMAReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
XCHLHReadBuffers(xEMPTY5NumberOfItemsPerTick);
|
|
|
|
//
|
|
xEMPTY5Provider.ReadConditions();
|
|
}
|
|
|
|
//
|
|
//
|
|
// START Combination Functions ...
|
|
//
|
|
//
|
|
|
|
//
|
|
// Can Open Long Trade ...
|
|
// this is a Function will Check all market Conditions and get all
|
|
// Strategy requirement Verifications for Long Signals ...
|
|
bool XEMPTY5CanOpenLongTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XEMPTY5HasLongSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
xEMPTY5Provider.ClearConditions();
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Can Close Long Trade ...
|
|
// this is a Function will Check all market Conditions and get all
|
|
// Strategy requirement Verifications for Long Signals ...
|
|
bool XEMPTY5CanCloseLongTrade()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Can Open Short Trade ...
|
|
// this is a Function will Check all market Conditions and get all
|
|
// Strategy requirement Verifications for Short Signals ...
|
|
bool XEMPTY5CanOpenShortTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XEMPTY5HasShortSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
xEMPTY5Provider.ClearConditions();
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Can Close Short Trade ...
|
|
// this is a Function will Check all market Conditions and get all
|
|
// Strategy requirement Verifications for Short Signals ...
|
|
bool XEMPTY5CanCloseShortTrade()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
//
|
|
// END Combination Functions ...
|
|
//
|
|
//
|
|
|
|
//
|
|
//
|
|
// START Combination Signaling ...
|
|
//
|
|
//
|
|
|
|
//
|
|
// Check Market Conditions by Combination of Power of All tools for LONGs ...
|
|
bool XEMPTY5HasLongSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XEMPTY5XTDHasLongSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XEMPTY5XTAMHasLongSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XEMPTY5XSIHasLongSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIHasSignal = XEMPTY5XTSFIHasLongSignal();
|
|
if (isXTSFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTSFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XEMPTY5XOBDLHHasLongSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XEMPTY5XCHMACCHasLongSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMAMNHasSignal = XEMPTY5XCHMAMNHasLongSignal();
|
|
if (isXCHMAMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMAMXHasSignal = XEMPTY5XCHMAMXHasLongSignal();
|
|
if (isXCHMAMXHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMX),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
result =
|
|
//
|
|
isXTDHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTAMHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTSFIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXOBDLHHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACCHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMAMNHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMAMXHasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
//
|
|
// Only Log Signals Time Market Conditions if is in Testing Mode ...
|
|
if (xEMPTY5IsTestMode || xEMPTY5EnableSignalAlerts)
|
|
{
|
|
//
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
string message = xEMPTY5Provider.GenerateConditionsString(mConditions);
|
|
|
|
//
|
|
LogMessage(
|
|
"Long Signal Provided by: \n" +
|
|
info.signallers[ArraySize(info.signallers) - 1] + "\n" +
|
|
"Pusher: " + (string)ArraySize(info.signallers) + "\n" +
|
|
"Market Conditions: " + message);
|
|
}
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Check Market Conditions by Combination of Power of All tools for SHORTs ...
|
|
bool XEMPTY5HasShortSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XEMPTY5XTDHasShortSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XEMPTY5XTAMHasShortSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XEMPTY5XSIHasShortSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIHasSignal = XEMPTY5XTSFIHasShortSignal();
|
|
if (isXTSFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTSFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XEMPTY5XOBDLHHasShortSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XEMPTY5XCHMACCHasShortSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMAMNHasSignal = XEMPTY5XCHMAMNHasShortSignal();
|
|
if (isXCHMAMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMAMXHasSignal = XEMPTY5XCHMAMXHasShortSignal();
|
|
if (isXCHMAMXHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMX),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
result =
|
|
//
|
|
isXTDHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTAMHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTSFIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXOBDLHHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACCHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMAMNHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMAMXHasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
//
|
|
// Only Log Signals Time Market Conditions if is in Testing Mode ...
|
|
if (xEMPTY5IsTestMode || xEMPTY5EnableSignalAlerts)
|
|
{
|
|
//
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
string message = xEMPTY5Provider.GenerateConditionsString(mConditions);
|
|
|
|
//
|
|
LogMessage(
|
|
"Short Signal Provided by: \n" +
|
|
info.signallers[ArraySize(info.signallers) - 1] + "\n" +
|
|
"Pusher: " + (string)ArraySize(info.signallers) + "\n" +
|
|
"Market Conditions: " + message);
|
|
}
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
//
|
|
// END Combination Signaling ...
|
|
//
|
|
//
|
|
|
|
//
|
|
// START Signal Providers ...
|
|
//
|
|
|
|
//
|
|
// Disbale All Signallers Longs ...
|
|
void XEMPTY5DisableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEMPTY5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXTDLongs();
|
|
xEMPTY5MXTDAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEMPTY5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXTAMLongs();
|
|
xEMPTY5MXTAMAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEMPTY5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXSILongs();
|
|
xEMPTY5MXSIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEMPTY5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXTSFILongs();
|
|
xEMPTY5MXTSFIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEMPTY5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXOBDLHLongs();
|
|
xEMPTY5MXOBDLHAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEMPTY5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXCHMACCLongs();
|
|
xEMPTY5MXCHMACCAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEMPTY5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXCHMAMXLongs();
|
|
xEMPTY5MXCHMAMXAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEMPTY5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisbaleXCHMAMNLongs();
|
|
xEMPTY5MXCHMAMNAllowLongSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Longs ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XEMPTY5EnableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEMPTY5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTDAllowLongSignals =
|
|
xEMPTY5XTDAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXTDAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTDAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTDLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEMPTY5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTAMAllowLongSignals =
|
|
xEMPTY5XTAMAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXTAMAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTAMAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTAMLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEMPTY5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXSIAllowLongSignals =
|
|
xEMPTY5XSIAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXSIAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXSIAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXSILongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEMPTY5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTSFIAllowLongSignals =
|
|
xEMPTY5XTSFIAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXTSFIAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTSFIAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTSFILongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEMPTY5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXOBDLHAllowLongSignals =
|
|
xEMPTY5XOBDLHAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXOBDLHAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXOBDLHAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXOBDLHLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEMPTY5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMACCAllowLongSignals =
|
|
xEMPTY5XCHMACCAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXCHMACCAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMACCAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMACCLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEMPTY5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMAMXAllowLongSignals =
|
|
xEMPTY5XCHMAMXAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXCHMAMXAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMAMXAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMAMXLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEMPTY5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMAMNAllowLongSignals =
|
|
xEMPTY5XCHMAMNAllowLongSignals
|
|
? true
|
|
: xEMPTY5MXCHMAMNAllowLongSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMAMNAllowLongSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMAMNLongs();
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Disable All Signallers Shorts ...
|
|
void XEMPTY5DisableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEMPTY5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXTDShorts();
|
|
xEMPTY5MXTDAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEMPTY5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXTAMShorts();
|
|
xEMPTY5MXTAMAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEMPTY5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXSIShorts();
|
|
xEMPTY5MXSIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEMPTY5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXTSFIShorts();
|
|
xEMPTY5MXTSFIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEMPTY5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXOBDLHShorts();
|
|
xEMPTY5MXOBDLHAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEMPTY5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXCHMACCShorts();
|
|
xEMPTY5MXCHMACCAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEMPTY5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXCHMAMXShorts();
|
|
xEMPTY5MXCHMAMXAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEMPTY5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5Provider.DisableXCHMAMNShorts();
|
|
xEMPTY5MXCHMAMNAllowShortSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Shorts ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XEMPTY5EnableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEMPTY5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTDAllowShortSignals =
|
|
xEMPTY5XTDAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXTDAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTDAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTDShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEMPTY5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTAMAllowShortSignals =
|
|
xEMPTY5XTAMAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXTAMAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTAMAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTAMShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEMPTY5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXSIAllowShortSignals =
|
|
xEMPTY5XSIAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXSIAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXSIAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXSIShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEMPTY5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXTSFIAllowShortSignals =
|
|
xEMPTY5XTSFIAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXTSFIAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXTSFIAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXTSFIShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEMPTY5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXOBDLHAllowShortSignals =
|
|
xEMPTY5XOBDLHAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXOBDLHAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXOBDLHAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXOBDLHShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEMPTY5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMACCAllowShortSignals =
|
|
xEMPTY5XCHMACCAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXCHMACCAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMACCAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMACCShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEMPTY5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMAMXAllowShortSignals =
|
|
xEMPTY5XCHMAMXAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXCHMAMXAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMAMXAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMAMXShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEMPTY5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEMPTY5MXCHMAMNAllowShortSignals =
|
|
xEMPTY5XCHMAMNAllowShortSignals
|
|
? true
|
|
: xEMPTY5MXCHMAMNAllowShortSignals;
|
|
|
|
//
|
|
if (xEMPTY5MXCHMAMNAllowShortSignals)
|
|
{
|
|
xEMPTY5Provider.EnableXCHMAMNShorts();
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
//
|
|
// XTD Long Signal Checking ...
|
|
bool XEMPTY5XTDHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTDEnableSignaller ||
|
|
!xEMPTY5MXTDAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTDHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTD Short Signal Checking ...
|
|
bool XEMPTY5XTDHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTDEnableSignaller ||
|
|
!xEMPTY5MXTDAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTDHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTD Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTD Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Long Signal Checking ...
|
|
bool XEMPTY5XTAMHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTAMEnableSignaller ||
|
|
!xEMPTY5MXTAMAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTAMHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Short Signal Checking ...
|
|
bool XEMPTY5XTAMHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTAMEnableSignaller ||
|
|
!xEMPTY5MXTAMAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTAMHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTAM Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTAM Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Long Signal Checking ...
|
|
bool XEMPTY5XSIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXSIEnableSignaller ||
|
|
!xEMPTY5MXSIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XSIHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Short Signal Checking ...
|
|
bool XEMPTY5XSIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXSIEnableSignaller ||
|
|
!xEMPTY5MXSIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XSIHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XSI Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XSI Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTSFI Long Signal Checking ...
|
|
bool XEMPTY5XTSFIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTSFIEnableSignaller ||
|
|
!xEMPTY5MXTSFIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTSFIHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTSFI Short Signal Checking ...
|
|
bool XEMPTY5XTSFIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXTSFIEnableSignaller ||
|
|
!xEMPTY5MXTSFIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XTSFIHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XTSFI Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Long Signal Checking ...
|
|
bool XEMPTY5XOBDLHHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXOBDLHEnableSignaller ||
|
|
!xEMPTY5MXOBDLHAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XOBDLHHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Short Signal Checking ...
|
|
bool XEMPTY5XOBDLHHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXOBDLHEnableSignaller ||
|
|
!xEMPTY5MXOBDLHAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XOBDLHHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XOBDLH Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Long Signal Checking ...
|
|
bool XEMPTY5XCHMACCHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMACCEnableSignaller ||
|
|
!xEMPTY5MXCHMACCAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMACCHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Short Signal Checking ...
|
|
bool XEMPTY5XCHMACCHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMACCEnableSignaller ||
|
|
!xEMPTY5MXCHMACCAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMACCHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMACC Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN Long Signal Checking ...
|
|
bool XEMPTY5XCHMAMNHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMAMNEnableSignaller ||
|
|
!xEMPTY5MXCHMAMNAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMAMNHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN Short Signal Checking ...
|
|
bool XEMPTY5XCHMAMNHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMAMNEnableSignaller ||
|
|
!xEMPTY5MXCHMAMNAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMAMNHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMN Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX Long Signal Checking ...
|
|
bool XEMPTY5XCHMAMXHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMAMXEnableSignaller ||
|
|
!xEMPTY5MXCHMAMXAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMAMXHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Long ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX Short Signal Checking ...
|
|
bool XEMPTY5XCHMAMXHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEMPTY5MXCHMAMXEnableSignaller ||
|
|
!xEMPTY5MXCHMAMXAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEMPTY5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEMPTY5Provider.XCHMAMXHasShortConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMAMX Short ...
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Signal Providers ...
|
|
//
|