add supports for wait until next candle to xAU5 ... fix XCTimer Initialization on EU and AU 5 ...
13611 lines
515 KiB
Plaintext
13611 lines
515 KiB
Plaintext
///////////////////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 XEU5 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.xeu5.provider.inputs.lib.mq5"
|
|
|
|
//
|
|
// Include Provider Class ...
|
|
#include "../Classes/x-saherelm.provider.lib.mq5"
|
|
|
|
//
|
|
// Signallers ...
|
|
input group "XEU5 Signallers";
|
|
|
|
//
|
|
// XTD ...
|
|
input group "XEU5 XTD Signaller";
|
|
input bool xEU5XTDEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XTDAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XTDAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XTAM ...
|
|
input group "XEU5 XTAM Signaller";
|
|
input bool xEU5XTAMEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XTAMAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XTAMAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XSI ...
|
|
input group "XEU5 XSI Signaller";
|
|
input bool xEU5XSIEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XSIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XSIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XTSFI ...
|
|
input group "XEU5 XTSFI Signaller";
|
|
input bool xEU5XTSFIEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XTSFIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XTSFIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XOBDLH ...
|
|
input group "XEU5 XOBDLH Signaller";
|
|
input bool xEU5XOBDLHEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XOBDLHAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XOBDLHAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMACC ...
|
|
input group "XEU5 XCHMACC Signaller";
|
|
input bool xEU5XCHMACCEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XCHMACCAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XCHMACCAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
input group "XEU5 XCHMAMX Signaller";
|
|
input bool xEU5XCHMAMXEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XCHMAMXAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XCHMAMXAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
input group "XEU5 XCHMAMN Signaller";
|
|
input bool xEU5XCHMAMNEnableSignaller = true; // Enable Signaller
|
|
input bool xEU5XCHMAMNAllowLongSignals = true; // Enable Long Signals
|
|
input bool xEU5XCHMAMNAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// Check in Test Mode or not ...
|
|
bool xEU5IsTestMode = false;
|
|
|
|
//
|
|
// Detect max Input Length of Indicators ...
|
|
int xEU5MaxLengthOfInputs = 0;
|
|
|
|
//
|
|
// Detect Calculated Bars ...
|
|
int xEU5CalculatedBars = 0;
|
|
|
|
//
|
|
// Check prevent Double Signalling on Same Candle ...
|
|
bool xEU5WaitUntilNextCandle = false;
|
|
|
|
//
|
|
// Signaller Variables ...
|
|
//
|
|
// XTD ...
|
|
bool xEU5MXTDEnableSignaller = xEU5XTDEnableSignaller;
|
|
bool xEU5MXTDAllowLongSignals = xEU5XTDAllowLongSignals;
|
|
bool xEU5MXTDAllowShortSignals = xEU5XTDAllowShortSignals;
|
|
|
|
//
|
|
// XTAM ...
|
|
bool xEU5MXTAMEnableSignaller = xEU5XTAMEnableSignaller;
|
|
bool xEU5MXTAMAllowLongSignals = xEU5XTAMAllowLongSignals;
|
|
bool xEU5MXTAMAllowShortSignals = xEU5XTAMAllowShortSignals;
|
|
|
|
//
|
|
// XSI ...
|
|
bool xEU5MXSIEnableSignaller = xEU5XSIEnableSignaller;
|
|
bool xEU5MXSIAllowLongSignals = xEU5XSIAllowLongSignals;
|
|
bool xEU5MXSIAllowShortSignals = xEU5XSIAllowShortSignals;
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool xEU5MXTSFIEnableSignaller = xEU5XTSFIEnableSignaller;
|
|
bool xEU5MXTSFIAllowLongSignals = xEU5XTSFIAllowLongSignals;
|
|
bool xEU5MXTSFIAllowShortSignals = xEU5XTSFIAllowShortSignals;
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool xEU5MXOBDLHEnableSignaller = xEU5XOBDLHEnableSignaller;
|
|
bool xEU5MXOBDLHAllowLongSignals = xEU5XOBDLHAllowLongSignals;
|
|
bool xEU5MXOBDLHAllowShortSignals = xEU5XOBDLHAllowShortSignals;
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool xEU5MXCHMACCEnableSignaller = xEU5XCHMACCEnableSignaller;
|
|
bool xEU5MXCHMACCAllowLongSignals = xEU5XCHMACCAllowLongSignals;
|
|
bool xEU5MXCHMACCAllowShortSignals = xEU5XCHMACCAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
bool xEU5MXCHMAMXEnableSignaller = xEU5XCHMAMXEnableSignaller;
|
|
bool xEU5MXCHMAMXAllowLongSignals = xEU5XCHMAMXAllowLongSignals;
|
|
bool xEU5MXCHMAMXAllowShortSignals = xEU5XCHMAMXAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
bool xEU5MXCHMAMNEnableSignaller = xEU5XCHMAMNEnableSignaller;
|
|
bool xEU5MXCHMAMNAllowLongSignals = xEU5XCHMAMNAllowLongSignals;
|
|
bool xEU5MXCHMAMNAllowShortSignals = xEU5XCHMAMNAllowShortSignals;
|
|
|
|
//
|
|
XCProvider *xEU5Provider;
|
|
|
|
//
|
|
// Validate Indicators Inputs ...
|
|
bool XEU5ValidateIndicatorsInputs()
|
|
{
|
|
//
|
|
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 XCProvider Class for Use ...
|
|
xEU5Provider = new XCProvider(
|
|
//
|
|
// Commons ...
|
|
_Symbol,
|
|
_Period,
|
|
//
|
|
// Signallers ...
|
|
//
|
|
// XTD ...
|
|
xEU5MXTDEnableSignaller,
|
|
xEU5MXTDAllowLongSignals,
|
|
xEU5MXTDAllowShortSignals,
|
|
//
|
|
// XTAM ...
|
|
xEU5MXTAMEnableSignaller,
|
|
xEU5MXTAMAllowLongSignals,
|
|
xEU5MXTAMAllowShortSignals,
|
|
//
|
|
// XSI ...
|
|
xEU5MXSIEnableSignaller,
|
|
xEU5MXSIAllowLongSignals,
|
|
xEU5MXSIAllowShortSignals,
|
|
//
|
|
// XTSFI ...
|
|
xEU5MXTSFIEnableSignaller,
|
|
xEU5MXTSFIAllowLongSignals,
|
|
xEU5MXTSFIAllowShortSignals,
|
|
//
|
|
// XOBDLH ...
|
|
xEU5MXOBDLHEnableSignaller,
|
|
xEU5MXOBDLHAllowLongSignals,
|
|
xEU5MXOBDLHAllowShortSignals,
|
|
//
|
|
// XCHMACC ...
|
|
xEU5MXCHMACCEnableSignaller,
|
|
xEU5MXCHMACCAllowLongSignals,
|
|
xEU5MXCHMACCAllowShortSignals,
|
|
//
|
|
// XCHMAMX ...
|
|
xEU5MXCHMAMXEnableSignaller,
|
|
xEU5MXCHMAMXAllowLongSignals,
|
|
xEU5MXCHMAMXAllowShortSignals,
|
|
//
|
|
// XCHMAMN ...
|
|
xEU5MXCHMAMNEnableSignaller,
|
|
xEU5MXCHMAMNAllowLongSignals,
|
|
xEU5MXCHMAMNAllowShortSignals
|
|
//
|
|
);
|
|
|
|
//
|
|
result = true;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Init Indicators ...
|
|
bool XEU5InitIndicators()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Make it Enable when we need to Log Market Conditions ...
|
|
xEU5IsTestMode = IsRunningOnTestMode();
|
|
|
|
//
|
|
// Check and Calculate Max Length in Inputs ...
|
|
//
|
|
|
|
//
|
|
// XTM ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xTMMaPeriod,
|
|
xEU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XAMA ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xAMALength,
|
|
xEU5NumberOfItemsPerTick);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xAMAFastEMA,
|
|
xEU5NumberOfItemsPerTick);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xAMASlowEMA,
|
|
xEU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XLH ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xLHLength,
|
|
xEU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XTD ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xTDLength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XFI ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xFILength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XRSI ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xRSILength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XOBD ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xOBDLength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHLH ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHLHLcLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHLHMcLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHLHScLength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHMA ...
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMAScFastLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMAScSlowLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcFastLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcSlowLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMALcFastLength,
|
|
xEU5MaxLengthOfInputs);
|
|
xEU5MaxLengthOfInputs = MathMax(
|
|
xCHMALcSlowLength,
|
|
xEU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// Validate Indicators Inputs before Initialization ...
|
|
result = XEU5ValidateIndicatorsInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Validate Signallers ...
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDEnable =
|
|
xEU5XTDEnableSignaller &&
|
|
(xEU5XTDAllowLongSignals ||
|
|
xEU5XTDAllowShortSignals);
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMEnable =
|
|
xEU5XTAMEnableSignaller &&
|
|
(xEU5XTAMAllowLongSignals ||
|
|
xEU5XTAMAllowShortSignals);
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIEnable =
|
|
xEU5XSIEnableSignaller &&
|
|
(xEU5XSIAllowLongSignals ||
|
|
xEU5XSIAllowShortSignals);
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIEnable =
|
|
xEU5XTSFIEnableSignaller &&
|
|
(xEU5XTSFIAllowLongSignals ||
|
|
xEU5XTSFIAllowShortSignals);
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool isXOBDLHEnable =
|
|
xEU5XOBDLHEnableSignaller &&
|
|
(xEU5XOBDLHAllowLongSignals ||
|
|
xEU5XOBDLHAllowShortSignals);
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool isXCHMACCEnable =
|
|
xEU5XCHMACCEnableSignaller &&
|
|
(xEU5XCHMACCAllowLongSignals ||
|
|
xEU5XCHMACCAllowShortSignals);
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
bool isXCHMAMXEnable =
|
|
xEU5XCHMAMXEnableSignaller &&
|
|
(xEU5XCHMAMXAllowLongSignals ||
|
|
xEU5XCHMAMXAllowShortSignals);
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
bool isXCHMAMNEnable =
|
|
xEU5XCHMAMNEnableSignaller &&
|
|
(xEU5XCHMAMNAllowLongSignals ||
|
|
xEU5XCHMAMNAllowShortSignals);
|
|
|
|
//
|
|
bool hasSignaller =
|
|
//
|
|
isXTDEnable ||
|
|
isXTAMEnable ||
|
|
isXSIEnable ||
|
|
isXTSFIEnable ||
|
|
isXOBDLHEnable ||
|
|
isXCHMACCEnable ||
|
|
isXCHMAMXEnable ||
|
|
isXCHMAMNEnable
|
|
//
|
|
;
|
|
result = hasSignaller;
|
|
if (!result)
|
|
{
|
|
//
|
|
LogMessage("XEU5 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 XEU5ReleaseIndicators()
|
|
{
|
|
//
|
|
// Release Handlers ...
|
|
XTMReleaseHandlers();
|
|
XAMAReleaseHandlers();
|
|
XLHReleaseHandlers();
|
|
XTDReleaseHandlers();
|
|
XFIReleaseHandlers();
|
|
XTSReleaseHandlers();
|
|
XRSIReleaseHandlers();
|
|
XOBDReleaseHandlers();
|
|
XCHMAReleaseHandlers();
|
|
XCHLHReleaseHandlers();
|
|
}
|
|
|
|
//
|
|
// Handle Reading Buffers ...
|
|
void XEU5HandleReadingBuffers()
|
|
{
|
|
//
|
|
// Reading Calculated Bars for a Simple Handler ...
|
|
xEU5CalculatedBars = BarsCalculated(xTMHandler);
|
|
|
|
//
|
|
// Read Indicators Buffers ...
|
|
XTMReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XAMAReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XLHReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XTDReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XFIReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XTSReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XRSIReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XOBDReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XCHMAReadBuffers(xEU5NumberOfItemsPerTick);
|
|
XCHLHReadBuffers(xEU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
xEU5Provider.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 XEU5CanOpenLongTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XEU5HasLongSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
xEU5Provider.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 XEU5CanCloseLongTrade()
|
|
{
|
|
//
|
|
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 XEU5CanOpenShortTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XEU5HasShortSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
xEU5Provider.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 XEU5CanCloseShortTrade()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
//
|
|
// END Combination Functions ...
|
|
//
|
|
//
|
|
|
|
//
|
|
//
|
|
// START Combination Signaling ...
|
|
//
|
|
//
|
|
|
|
//
|
|
// Check Market Conditions by Combination of Power of All tools for LONGs ...
|
|
bool XEU5HasLongSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XEU5XTDHasLongSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XEU5XTAMHasLongSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XEU5XSIHasLongSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIHasSignal = XEU5XTSFIHasLongSignal();
|
|
if (isXTSFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTSFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XEU5XOBDLHHasLongSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XEU5XCHMACCHasLongSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMAMNHasSignal = XEU5XCHMAMNHasLongSignal();
|
|
if (isXCHMAMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMAMXHasSignal = XEU5XCHMAMXHasLongSignal();
|
|
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 (xEU5IsTestMode || xEU5EnableSignalAlerts)
|
|
{
|
|
//
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
string message = xEU5Provider.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 XEU5HasShortSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XEU5XTDHasShortSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XEU5XTAMHasShortSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XEU5XSIHasShortSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
bool isXTSFIHasSignal = XEU5XTSFIHasShortSignal();
|
|
if (isXTSFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTSFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XEU5XOBDLHHasShortSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XEU5XCHMACCHasShortSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMAMNHasSignal = XEU5XCHMAMNHasShortSignal();
|
|
if (isXCHMAMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMAMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMAMXHasSignal = XEU5XCHMAMXHasShortSignal();
|
|
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 (xEU5IsTestMode || xEU5EnableSignalAlerts)
|
|
{
|
|
//
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
string message = xEU5Provider.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 XEU5DisableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEU5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXTDLongs();
|
|
xEU5MXTDAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEU5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXTAMLongs();
|
|
xEU5MXTAMAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEU5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXSILongs();
|
|
xEU5MXSIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEU5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXTSFILongs();
|
|
xEU5MXTSFIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEU5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXOBDLHLongs();
|
|
xEU5MXOBDLHAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEU5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXCHMACCLongs();
|
|
xEU5MXCHMACCAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEU5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXCHMAMXLongs();
|
|
xEU5MXCHMAMXAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEU5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisbaleXCHMAMNLongs();
|
|
xEU5MXCHMAMNAllowLongSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Longs ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XEU5EnableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEU5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTDAllowLongSignals =
|
|
xEU5XTDAllowLongSignals
|
|
? true
|
|
: xEU5MXTDAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXTDAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXTDLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEU5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTAMAllowLongSignals =
|
|
xEU5XTAMAllowLongSignals
|
|
? true
|
|
: xEU5MXTAMAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXTAMAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXTAMLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEU5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXSIAllowLongSignals =
|
|
xEU5XSIAllowLongSignals
|
|
? true
|
|
: xEU5MXSIAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXSIAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXSILongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEU5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTSFIAllowLongSignals =
|
|
xEU5XTSFIAllowLongSignals
|
|
? true
|
|
: xEU5MXTSFIAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXTSFIAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXTSFILongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEU5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXOBDLHAllowLongSignals =
|
|
xEU5XOBDLHAllowLongSignals
|
|
? true
|
|
: xEU5MXOBDLHAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXOBDLHAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXOBDLHLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEU5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMACCAllowLongSignals =
|
|
xEU5XCHMACCAllowLongSignals
|
|
? true
|
|
: xEU5MXCHMACCAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMACCAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMACCLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEU5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMAMXAllowLongSignals =
|
|
xEU5XCHMAMXAllowLongSignals
|
|
? true
|
|
: xEU5MXCHMAMXAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMAMXAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMAMXLongs();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEU5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMAMNAllowLongSignals =
|
|
xEU5XCHMAMNAllowLongSignals
|
|
? true
|
|
: xEU5MXCHMAMNAllowLongSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMAMNAllowLongSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMAMNLongs();
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Disable All Signallers Shorts ...
|
|
void XEU5DisableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEU5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXTDShorts();
|
|
xEU5MXTDAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEU5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXTAMShorts();
|
|
xEU5MXTAMAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEU5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXSIShorts();
|
|
xEU5MXSIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEU5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXTSFIShorts();
|
|
xEU5MXTSFIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEU5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXOBDLHShorts();
|
|
xEU5MXOBDLHAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEU5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXCHMACCShorts();
|
|
xEU5MXCHMACCAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEU5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXCHMAMXShorts();
|
|
xEU5MXCHMAMXAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEU5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEU5Provider.DisableXCHMAMNShorts();
|
|
xEU5MXCHMAMNAllowShortSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Shorts ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XEU5EnableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xEU5MXTDEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTDAllowShortSignals =
|
|
xEU5XTDAllowShortSignals
|
|
? true
|
|
: xEU5MXTDAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXTDAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXTDShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xEU5MXTAMEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTAMAllowShortSignals =
|
|
xEU5XTAMAllowShortSignals
|
|
? true
|
|
: xEU5MXTAMAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXTAMAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXTAMShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xEU5MXSIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXSIAllowShortSignals =
|
|
xEU5XSIAllowShortSignals
|
|
? true
|
|
: xEU5MXSIAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXSIAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXSIShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTSFI ...
|
|
if (xEU5MXTSFIEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXTSFIAllowShortSignals =
|
|
xEU5XTSFIAllowShortSignals
|
|
? true
|
|
: xEU5MXTSFIAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXTSFIAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXTSFIShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xEU5MXOBDLHEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXOBDLHAllowShortSignals =
|
|
xEU5XOBDLHAllowShortSignals
|
|
? true
|
|
: xEU5MXOBDLHAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXOBDLHAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXOBDLHShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xEU5MXCHMACCEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMACCAllowShortSignals =
|
|
xEU5XCHMACCAllowShortSignals
|
|
? true
|
|
: xEU5MXCHMACCAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMACCAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMACCShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xEU5MXCHMAMXEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMAMXAllowShortSignals =
|
|
xEU5XCHMAMXAllowShortSignals
|
|
? true
|
|
: xEU5MXCHMAMXAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMAMXAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMAMXShorts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xEU5MXCHMAMNEnableSignaller)
|
|
{
|
|
//
|
|
xEU5MXCHMAMNAllowShortSignals =
|
|
xEU5XCHMAMNAllowShortSignals
|
|
? true
|
|
: xEU5MXCHMAMNAllowShortSignals;
|
|
|
|
//
|
|
if (xEU5MXCHMAMNAllowShortSignals)
|
|
{
|
|
xEU5Provider.EnableXCHMAMNShorts();
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
//
|
|
// XTD Long Signal Checking ...
|
|
bool XEU5XTDHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTDEnableSignaller ||
|
|
!xEU5MXTDAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.XTDHasLongConditions()
|
|
//
|
|
&&
|
|
//
|
|
// Exceptions:
|
|
// there some commonly Exceptions which makes our choice incorrect,
|
|
// here we are combined knownly Exceptions ...
|
|
!(
|
|
//
|
|
// for Exception we used XLH Conditions as follow ...
|
|
//
|
|
// Check Conditions if Price In Signal Range ...
|
|
(mConditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(mConditions.isXTSCurrentUnderMediest ||
|
|
mConditions.isXTSCurrentCrossedUnderMediest) &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHMASCCrossedOverMin &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTSCurrentMax)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTDBearishVale) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLLIncreased &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
(mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHMAMCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(
|
|
(mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXAMANeutural
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
//
|
|
((mConditions.isXTSCurrentMax &&
|
|
mConditions.isXLHHHDecreased) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBearish &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXLHHHDecreased &&
|
|
mConditions.isXFICrossedOverZero) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXLHLLIncreased)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
mConditions.isXLHPriceCrossedUnderSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTSCurrentCrossedOverFarest &&
|
|
mConditions.isXTSCurrentCrossedOverNearest &&
|
|
mConditions.isXTSCurrentCrossedOverMediest &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
(mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow)))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalCrossedOverBear &&
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDSignalCrossedOverBear) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXCHMASCCrossedOverMax
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXCHMASCCrossedOverMax &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentUnderFarest ||
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
) &&
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedOverLongExit
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(mConditions.isXTSCurrentUnderMediest ||
|
|
mConditions.isXTSCurrentCrossedUnderMediest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentMax ||
|
|
mConditions.isXTSCurrentUnderFarest) &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXLHPriceCrossedOverSignal &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTDSignalCrossedOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCLLSame &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCCrossedOverMin &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCCrossedOverMax &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) ||
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(mConditions.isXTSCurrentUnderMediest ||
|
|
mConditions.isXTSCurrentCrossedUnderMediest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((
|
|
//
|
|
(mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
) &&
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHMASCCrossedOverMax &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMEndBullish &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDSignalCrossedOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAEndBullish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!mConditions.isXLHPriceOverSignal &&
|
|
!mConditions.isXLHPriceUnderSignal &&
|
|
!mConditions.isXLHPriceInSignalRange &&
|
|
!mConditions.isXLHPriceCrossedOverSignal &&
|
|
!mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTD Short Signal Checking ...
|
|
bool XEU5XTDHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTDEnableSignaller ||
|
|
!xEU5MXTDAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish) &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMASCTrendsUp
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCTrendsDown &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXTSCurrentOverFarest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMAMCTrendsUp
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Long Signal Checking ...
|
|
bool XEU5XTAMHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTAMEnableSignaller ||
|
|
!xEU5MXTAMAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
((mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
(mConditions.isXTSCurrentUnderFarest ||
|
|
mConditions.isXTSCurrentUnderMediest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
(mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXTSAllSame &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(
|
|
(mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXLHPriceCrossedOverSignal &&
|
|
mConditions.isXTSCurrentCrossedOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
mConditions.isXLHHHDecreased
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBearishVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHMASCFastCrossedOverSlow)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCVale ||
|
|
mConditions.isXCHLHSameHHs) &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXCHMAMCTrendsDown ||
|
|
mConditions.isXCHMAMCFastUnderSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBearish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Short Signal Checking ...
|
|
bool XEU5XTAMHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTAMEnableSignaller ||
|
|
!xEU5MXTAMAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBullish) &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMASCPeak &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXCHMAMCTrendsUp
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXAMAVale &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXTSCurrentMin) &&
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedUnderShortExit
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXTDBullishVale
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXLHLowAttachedLL) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXLHPriceCrossedUnderSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedUnderShortExit
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMBearish &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedUnderShortExit
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXLHLowAttachedLL) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedUnderShortExit
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullishVale) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLowAttachedLL &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
(mConditions.isXTDBullOverBear ||
|
|
mConditions.isXTSCurrentOverFarest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
(mConditions.isXTSCurrentOverFarest ||
|
|
mConditions.isXTSCurrentOverMediest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Long Signal Checking ...
|
|
bool XEU5XSIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXSIEnableSignaller ||
|
|
!xEU5MXSIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBullish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTSCurrentMax)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAEndBearish &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale)
|
|
//
|
|
&&
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale)
|
|
//
|
|
&&
|
|
//
|
|
(mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHHHDecreased &&
|
|
mConditions.isXLHLLDecreased)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMVale ||
|
|
mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish) &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Short Signal Checking ...
|
|
bool XEU5XSIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXSIEnableSignaller ||
|
|
!xEU5MXSIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish)) &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
mConditions.isXTSCurrentCrossedUnderFarest &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest &&
|
|
mConditions.isXTSCurrentCrossedUnderMediest)
|
|
//
|
|
))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish) &&
|
|
(mConditions.isXAMABullish ||
|
|
mConditions.isXAMAStartBullish)) &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCPeak &&
|
|
mConditions.isXTSCurrentOverFarest) &&
|
|
(
|
|
//
|
|
mConditions.isXTMNeutural
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXTSCurrentOverMediest
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHIncreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCVale) &&
|
|
(
|
|
//
|
|
(mConditions.isXLHHHIncreased &&
|
|
mConditions.isXLHLLIncreased)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTSCurrentMin)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
(mConditions.isXTDSignalOverBear ||
|
|
mConditions.isXTDSignalCrossedOverBear)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXFIOverZero ||
|
|
mConditions.isXTSCurrentOverFarest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCVale) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTSFI Long Signal Checking ...
|
|
bool XEU5XTSFIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTSFIEnableSignaller ||
|
|
!xEU5MXTSFIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBearish &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXTSCurrentUnderMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedUnderZero)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish) &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMASCOverMax &&
|
|
mConditions.isXCHMASCOverMin &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCVale
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLLDecreased &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMStartBullish) &&
|
|
mConditions.isXLHHHDecreased &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAStartBearish) &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCVale
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish) &&
|
|
mConditions.isXTMStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTSCurrentUnderMediest) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCVale
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
mConditions.isXTSCurrentCrossedUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTDBullCrossedOverBear &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTSFI Short Signal Checking ...
|
|
bool XEU5XTSFIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXTSFIEnableSignaller ||
|
|
!xEU5MXTSFIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHMCLCLLSame) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMASCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXTMVale ||
|
|
mConditions.isXTMNeutural) &&
|
|
mConditions.isXAMANeutural) &&
|
|
(mConditions.isXFIOverZero ||
|
|
mConditions.isXFICrossedOverZero) &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBearishVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBullish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish) &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullOverBear &&
|
|
(mConditions.isXFIOverZero ||
|
|
mConditions.isXFICrossedOverZero))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXAMANeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
mConditions.isXTMNeutural
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXLHLLDecreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased &&
|
|
(mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish) &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTDBullCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTDBullCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish) &&
|
|
(mConditions.isXAMABullish ||
|
|
mConditions.isXAMAStartBullish) &&
|
|
(mConditions.isXFIOverZero ||
|
|
mConditions.isXFICrossedOverZero) &&
|
|
mConditions.isXCHLHSameLLs)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTSCurrentCrossedUnderFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest) &&
|
|
(
|
|
//
|
|
mConditions.isXTSCurrentUnderNearest
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
mConditions.isXOBDSwingLow
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullCrossedUnderBear &&
|
|
mConditions.isXTSCurrentCrossedOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCPeak
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentCrossedOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentCrossedOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMBearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
(mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHMAMCVale) &&
|
|
(
|
|
//
|
|
mConditions.isXLHPriceCrossedUnderSignal
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXTMBullish ||
|
|
mConditions.isXTMNeutural ||
|
|
mConditions.isXTMStartBullish) &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXTMStartBullish ||
|
|
mConditions.isXTMEndBullish))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXAMAStartBearish) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXLHHHDecreased)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHSCMCLLSame) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMASCUnderMax &&
|
|
mConditions.isXCHMASCUnderMin)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
mConditions.isXLHHHDecreased
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXTSCurrentCrossedOverMediest
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
mConditions.isXCHLHMCLCLLSame
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentCrossedOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
mConditions.isXTDBullCrossedUnderBear
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
mConditions.isXCHLHSameLLs
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCLLSame &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTMStartBearish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
mConditions.isXTMNeutural
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXLHLLDecreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHMASCUnderMax &&
|
|
mConditions.isXCHMASCUnderMin &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMAMCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
(mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXLHPriceCrossedOverSignal)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXLHHHDecreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish)
|
|
//
|
|
&&
|
|
//
|
|
(mConditions.isXAMABullish ||
|
|
mConditions.isXAMAStartBullish))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXLHPriceCrossedOverSignal)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXLHHHIncreased &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverMediest &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMASCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsUp &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish) &&
|
|
(mConditions.isXAMABullish ||
|
|
mConditions.isXAMAStartBullish) &&
|
|
(mConditions.isXTSCurrentOverMediest ||
|
|
mConditions.isXTSCurrentCrossedOverMediest))
|
|
//
|
|
))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXTSCurrentOverMediest ||
|
|
mConditions.isXTSCurrentCrossedOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTMStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHSameLLs)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Long Signal Checking ...
|
|
bool XEU5XOBDLHHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXOBDLHEnableSignaller ||
|
|
!xEU5MXOBDLHAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
XMarketConditions xMConditions2 = xEU5Provider.GenerateMarketConditions(2);
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHSameLLs) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCLLSame) &&
|
|
(
|
|
//
|
|
mConditions.isXTSCurrentMax
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXLHLowAttachedLL
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXTSAllSame &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSameLLs)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Short Signal Checking ...
|
|
bool XEU5XOBDLHHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXOBDLHEnableSignaller ||
|
|
!xEU5MXOBDLHAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMASCCrossedUnderMax)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHMALCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXFIOverZero &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTDBullOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTMEndBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXCHMALCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMASCTrendsUp &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Long Signal Checking ...
|
|
bool XEU5XCHMACCHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMACCEnableSignaller ||
|
|
!xEU5MXCHMACCAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
(mConditions.isXTSCurrentOverFarest ||
|
|
mConditions.isXTDSignalCrossedUnderBear))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXFICrossedUnderZero)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHLLDecreased)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
))
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXFICrossedUnderZero)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullOverBear))
|
|
//
|
|
&&
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
(mConditions.isXTDSignalUnderBear ||
|
|
mConditions.isXTDSignalCrossedUnderBear))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXTDSignalUnderBear &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXAMABearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXFICrossedUnderZero)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish) &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDBullUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXAMABearish &&
|
|
(mConditions.isXTMNeutural ||
|
|
mConditions.isXTMBearish)) &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
(mConditions.isXTDBullCrossedUnderBear ||
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXFICrossedUnderZero)))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXLHPriceCrossedUnderSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
(
|
|
//
|
|
(mConditions.isXAMABearish &&
|
|
mConditions.isXTDBullCrossedOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXAMAStartBullish
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAEndBearish &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
(mConditions.isXLHLLDecreased &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMEndBullish &&
|
|
mConditions.isXAMAEndBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
(mConditions.isXTMBullish ||
|
|
mConditions.isXTMStartBullish) &&
|
|
(mConditions.isXAMABullish ||
|
|
mConditions.isXAMAStartBullish) &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
mConditions.isXTDBearishVale
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXRSICrossedOverLongExit
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalUnderBear &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTSCurrentUnderFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXFIUnderZero &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXLHPriceCrossedOverSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsDown))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXCHMALCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
(
|
|
mConditions.isXTDSignalUnderBear &&
|
|
(
|
|
//
|
|
mConditions.isXTSAllSame
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXLHPriceCrossedOverSignal &&
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow)))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXCHMAMCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCPeak &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
(mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXTSCurrentMax) &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullCrossedOverBear &&
|
|
mConditions.isXLHPriceCrossedOverSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish)
|
|
//
|
|
||
|
|
(mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXTDBearishVale &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
(mConditions.isXTSCurrentUnderNearest ||
|
|
mConditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(mConditions.isXTSCurrentUnderMediest ||
|
|
mConditions.isXTSCurrentCrossedUnderMediest))
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH &&
|
|
mConditions.isXTDSignalCrossedOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
(
|
|
//
|
|
(((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax) &&
|
|
(
|
|
//
|
|
mConditions.isXCHLHMCLCHHSame
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXTMEndBullish &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
(
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHSCMCHHSame) &&
|
|
(
|
|
//
|
|
mConditions.isXTSCurrentUnderNearest
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLLIncreased &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXLHHighAttachedHH &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedUnderZero)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
(mConditions.isXTSCurrentMin ||
|
|
mConditions.isXTSCurrentMax)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXLHLLIncreased &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXLHHighAttachedHH &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Short Signal Checking ...
|
|
bool XEU5XCHMACCHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMACCEnableSignaller ||
|
|
!xEU5MXCHMACCAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXTDSignalOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAStartBearish &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
//
|
|
((mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBullish)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXCHMAMCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
((mConditions.isXTMEndBearish ||
|
|
mConditions.isXTMNeutural) &&
|
|
(mConditions.isXAMABearish ||
|
|
mConditions.isXAMANeutural) &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish) &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTDBullOverBear) &&
|
|
(
|
|
//
|
|
mConditions.isXCHLHSCMCLLSame
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentCrossedOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMASCUnderMin)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXAMAStartBearish) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXLHPriceCrossedUnderSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXFICrossedOverZero)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin) &&
|
|
(
|
|
//
|
|
(mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTDBullCrossedUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXLHPriceCrossedUnderSignal)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCTrendsDown &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(mConditions.isXTSCurrentOverNearest ||
|
|
mConditions.isXTSCurrentCrossedOverNearest) &&
|
|
(mConditions.isXTSCurrentOverFarest ||
|
|
mConditions.isXTSCurrentCrossedOverFarest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMin) &&
|
|
(
|
|
//
|
|
((mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHMALCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXCHMASCVale)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXLHLowAttachedLL) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMAMCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXCHMASCCrossedUnderMin
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBullCrossedUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXCHMALCTrendsDown &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
((mConditions.isXAMABearish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMEndBearish &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
((mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIUnderZero &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest &&
|
|
mConditions.isXTSCurrentCrossedUnderFarest &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest &&
|
|
mConditions.isXTSCurrentCrossedUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentOverFarest &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMEndBearish &&
|
|
mConditions.isXAMAEndBearish &&
|
|
mConditions.isXTDBullOverBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXAMAStartBullish &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTDSignalVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMASCOverMin &&
|
|
mConditions.isXCHLHMCLCLLSame &&
|
|
mConditions.isXCHMASCUnderMax &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXTMNeutural ||
|
|
mConditions.isXTMEndBearish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish) &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXFICrossedOverZero &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXFIOverZero &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMin) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTDSignalVale &&
|
|
mConditions.isXTDBullishVale &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHMAMCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMAVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXCHMALCTrendsDown &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderFarest &&
|
|
mConditions.isXTSCurrentUnderNearest &&
|
|
mConditions.isXTSCurrentUnderMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN Long Signal Checking ...
|
|
bool XEU5XCHMAMNHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMAMNEnableSignaller ||
|
|
!xEU5MXCHMAMNAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
ENUM_XCHMA_CYCLES cycles[];
|
|
Add(
|
|
X_XCHMA_CYCLE_MEDIUM,
|
|
cycles);
|
|
Add(
|
|
X_XCHMA_CYCLE_LONG,
|
|
cycles);
|
|
|
|
//
|
|
double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles);
|
|
double xCHMANonSCMin2 = XCHMAGetCyclesMinValue(2, cycles);
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown) &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(((mConditions.isXTMVale ||
|
|
mConditions.isXTMNeutural) &&
|
|
mConditions.isXTMEndBearish) &&
|
|
(mConditions.isXAMANeutural ||
|
|
mConditions.isXAMAEndBearish) &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceUnderSignal ||
|
|
mConditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXLHLLDecreased &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// LC Vale ...
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMASCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXCHLHMCLCHHSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
(mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCPeak &&
|
|
mConditions.isXCHMALCVale) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMAMCVale
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXCHLHMCLCLLSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
mConditions.isXCHMASCTrendsDown
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBearishVale &&
|
|
mConditions.isXTMStartBullish &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
(mConditions.isXCHLHMCLCHHSame ||
|
|
mConditions.isXCHLHMCLCLLSame) &&
|
|
mConditions.isXTSCurrentUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCVale
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXLHHighAttachedHH) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMStartBullish &&
|
|
mConditions.isXAMAStartBullish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTDBullUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXCHMASCTrendsDown
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
// LC Vale ...
|
|
(mConditions.isXCHMALCVale &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCVale &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXLHHighAttachedHH &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN Short Signal Checking ...
|
|
bool XEU5XCHMAMNHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMAMNEnableSignaller ||
|
|
!xEU5MXCHMAMNAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalOverBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTMBearish ||
|
|
mConditions.isXTMNeutural) &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXLHLLIncreased &&
|
|
mConditions.isXTSCurrentOverNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentOverFarest) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIOverZero &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXTMStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXTSCurrentMax &&
|
|
mConditions.isXTSCurrentOverNearest &&
|
|
mConditions.isXTSCurrentOverMediest &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMALCVale &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXFICrossedUnderZero &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXRSICrossedUnderShortExit
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTSCurrentOverFarest &&
|
|
(mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCVale &&
|
|
mConditions.isXCHMALCVale &&
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMANeutural &&
|
|
mConditions.isXTMEndBearish &&
|
|
mConditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX Long Signal Checking ...
|
|
bool XEU5XCHMAMXHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMAMXEnableSignaller ||
|
|
!xEU5MXCHMAMXAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
ENUM_XCHMA_CYCLES cycles[];
|
|
Add(
|
|
X_XCHMA_CYCLE_MEDIUM,
|
|
cycles);
|
|
Add(
|
|
X_XCHMA_CYCLE_LONG,
|
|
cycles);
|
|
|
|
//
|
|
double xCHMANonSCMax2 = XCHMAGetCyclesMaxValue(2, cycles);
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMALCTrendsDown &&
|
|
(
|
|
//
|
|
(
|
|
//
|
|
mConditions.isXCHMASCPeak
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXLHHighAttachedHH &&
|
|
mConditions.isXTDSignalUnderBear)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(((mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
(mConditions.isXCHMALCFastUnderSlow ||
|
|
mConditions.isXCHMALCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear &&
|
|
mConditions.isXLHPriceCrossedOverSignal)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXAMANeutural)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown) ||
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown) ||
|
|
(mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak
|
|
//
|
|
||
|
|
//
|
|
mConditions.isXRSICrossedOverLongExit)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastUnderSlow ||
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBullish &&
|
|
mConditions.isXAMABullish &&
|
|
mConditions.isXCHLHSCMCHHSame)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCTrendsDown &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX Short Signal Checking ...
|
|
bool XEU5XCHMAMXHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xEU5MXCHMAMXEnableSignaller ||
|
|
!xEU5MXCHMAMXAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Market Condition ...
|
|
XMarketConditions mConditions = xEU5Provider.GetLastMarketCondition();
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
xEU5Provider.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 ...
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMNeutural &&
|
|
mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTSCurrentMin)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXLHHHIncreased &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceInSignalRange ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMVale &&
|
|
mConditions.isXAMAVale)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMAMCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXTSCurrentOverFarest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXLHHHDecreased &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXCHMALCTrendsUp &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
mConditions.isXCHMALCPeak
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSAllSame &&
|
|
mConditions.isXAMAEndBullish &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)) &&
|
|
(
|
|
//
|
|
(
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHLHSCMCLLSame &&
|
|
mConditions.isXLHLowAttachedLL) &&
|
|
(
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMALCPeak &&
|
|
mConditions.isXTDBullOverBear &&
|
|
mConditions.isXTSCurrentCrossedUnderNearest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceUnderSignal ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHLHSameHHs &&
|
|
mConditions.isXCHLHSameLLs &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXLHLowAttachedLL)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish &&
|
|
mConditions.isXLHLowAttachedLL &&
|
|
((mConditions.isXCHMASCFastOverSlow ||
|
|
mConditions.isXCHMASCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((mConditions.isXLHPriceOverSignal ||
|
|
mConditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(mConditions.isXTMBearish &&
|
|
mConditions.isXAMABearish &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMAMCTrendsUp)
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMAMCTrendsUp &&
|
|
(mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMALCFastOverSlow ||
|
|
mConditions.isXCHMALCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMASCVale &&
|
|
mConditions.isXTSCurrentMin &&
|
|
mConditions.isXTMStartBearish &&
|
|
mConditions.isXAMAStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXTMBearish &&
|
|
mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXCHLHSCMCHHSame &&
|
|
mConditions.isXCHLHMCLCLLSame) &&
|
|
(
|
|
//
|
|
mConditions.isXTSCurrentOverFarest
|
|
//
|
|
||
|
|
//
|
|
(mConditions.isXTSCurrentMin &&
|
|
mConditions.isXCHMAMCTrendsDown &&
|
|
mConditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
((mConditions.isXCHMAMCFastOverSlow ||
|
|
mConditions.isXCHMAMCFastCrossedOverSlow) &&
|
|
(
|
|
//
|
|
(mConditions.isXCHMAMCPeak &&
|
|
mConditions.isXCHMALCPeak &&
|
|
mConditions.isXAMANeutural &&
|
|
mConditions.isXTMStartBearish)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceOverSignal ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
((mConditions.isXCHMASCTrendsUp &&
|
|
(mConditions.isXCHMASCFastUnderSlow ||
|
|
mConditions.isXCHMASCFastCrossedUnderSlow)) &&
|
|
(
|
|
//
|
|
(mConditions.isXFIUnderZero &&
|
|
(mConditions.isXTMBearish ||
|
|
mConditions.isXTMStartBearish) &&
|
|
(mConditions.isXAMABearish ||
|
|
mConditions.isXAMAStartBearish) &&
|
|
(mConditions.isXTDBullUnderBear &&
|
|
mConditions.isXTDSignalUnderBear))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// 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 ...
|
|
//
|
|
// PriceFree ...
|
|
// Check if Both LL and HH Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If LL Same In Length ...
|
|
((mConditions.isXLHLLSameInLength &&
|
|
!mConditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Check If HH is Same In Length ...
|
|
((mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// PriceFree ...
|
|
// Not Same LL or HH in Lenght ...
|
|
((!mConditions.isXLHHHSameInLength &&
|
|
!mConditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Signal Providers ...
|
|
//
|