8161 lines
236 KiB
Plaintext
8161 lines
236 KiB
Plaintext
///////////////////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 XAU5 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
|
|
|
|
//
|
|
// START Define Enums ...
|
|
//
|
|
|
|
//
|
|
enum ENUM_XAU5_SIGNAL_PROVIDERS
|
|
{
|
|
//
|
|
// XSP Expert Support Mechanism ...
|
|
XSP,
|
|
//
|
|
// XTD ...
|
|
XTD,
|
|
//
|
|
// XTAM ...
|
|
XTAM,
|
|
//
|
|
// XSI ...
|
|
XSI,
|
|
//
|
|
// XSTFI ...
|
|
XSTFI,
|
|
//
|
|
// XOBDLH ...
|
|
XOBDLH,
|
|
//
|
|
// XCHMACC ...
|
|
XCHMACC,
|
|
//
|
|
// XCHMACMN ...
|
|
XCHMACMN,
|
|
//
|
|
// XCHMACMX ...
|
|
XCHMACMX,
|
|
};
|
|
|
|
//
|
|
// Represent Market Conditions ...
|
|
struct XAU5MarketConditions
|
|
{
|
|
//
|
|
// XTM ...
|
|
bool isXTMPeak;
|
|
bool isXTMVale;
|
|
bool isXTMBullish;
|
|
bool isXTMBearish;
|
|
bool isXTMNeutural;
|
|
bool isXTMEndBullish;
|
|
bool isXTMEndBearish;
|
|
bool isXTMStartBullish;
|
|
bool isXTMStartBearish;
|
|
bool isXTMEndBullishByNeutural;
|
|
bool isXTMEndBearishByNeutural;
|
|
bool isXTMStartBullishAfterNeutural;
|
|
bool isXTMStartBearishAfterNeutural;
|
|
|
|
//
|
|
// XAMA ...
|
|
bool isXAMAPeak;
|
|
bool isXAMAVale;
|
|
bool isXAMABullish;
|
|
bool isXAMABearish;
|
|
bool isXAMANeutural;
|
|
bool isXAMAEndBullish;
|
|
bool isXAMAEndBearish;
|
|
bool isXAMAStartBullish;
|
|
bool isXAMAStartBearish;
|
|
bool isXAMAEndBullishByNeutural;
|
|
bool isXAMAEndBearishByNeutural;
|
|
bool isXAMAStartBullishAfterNeutural;
|
|
bool isXAMAStartBearishAfterNeutural;
|
|
|
|
//
|
|
// XLH ...
|
|
bool isXLHHHIncreased;
|
|
bool isXLHHHDecreased;
|
|
bool isXLHLLIncreased;
|
|
bool isXLHLLDecreased;
|
|
bool isXLHLowAttachedLL;
|
|
bool isXLHHighAttachedHH;
|
|
bool isXLHHHSameInLength;
|
|
bool isXLHLLSameInLength;
|
|
bool isXLHPriceOverSignal;
|
|
bool isXLHPriceUnderSignal;
|
|
bool isXLHPriceInSignalRange;
|
|
bool isXLHPriceCrossedOverSignal;
|
|
bool isXLHPriceCrossedUnderSignal;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDSignalPeak;
|
|
bool isXTDSignalVale;
|
|
bool isXTDBullishPeak;
|
|
bool isXTDBullishVale;
|
|
bool isXTDBearishPeak;
|
|
bool isXTDBearishVale;
|
|
bool isXTDBullOverBear;
|
|
bool isXTDBullUnderBear;
|
|
bool isXTDSignalOverBear;
|
|
bool isXTDSignalUnderBear;
|
|
bool isXTDBullCrossedOverBear;
|
|
bool isXTDBullCrossedUnderBear;
|
|
bool isXTDSignalCrossedOverBear;
|
|
bool isXTDSignalCrossedUnderBear;
|
|
|
|
//
|
|
// XFI ...
|
|
bool isXFIPeak;
|
|
bool isXFIVale;
|
|
bool isXFICrossedOverZero;
|
|
bool isXFIOverZero;
|
|
bool isXFICrossedUnderZero;
|
|
bool isXFIUnderZero;
|
|
|
|
//
|
|
// XTS ...
|
|
bool isXTSAllSame;
|
|
bool isXTSCurrentMin;
|
|
bool isXTSCurrentMax;
|
|
bool isXTSCurrentOverFarest;
|
|
bool isXTSCurrentOverNearest;
|
|
bool isXTSCurrentOverMediest;
|
|
bool isXTSCurrentUnderFarest;
|
|
bool isXTSCurrentUnderNearest;
|
|
bool isXTSCurrentUnderMediest;
|
|
bool isXTSCurrentCrossedOverFarest;
|
|
bool isXTSCurrentCrossedOverNearest;
|
|
bool isXTSCurrentCrossedOverMediest;
|
|
bool isXTSCurrentCrossedUnderFarest;
|
|
bool isXTSCurrentCrossedUnderNearest;
|
|
bool isXTSCurrentCrossedUnderMediest;
|
|
|
|
//
|
|
// XRSI ...
|
|
bool isXRSIPeak;
|
|
bool isXRSIVale;
|
|
bool isXRSICrossedOverLongExit;
|
|
bool isXRSICrossedOverLongEntry;
|
|
bool isXRSICrossedUnderShortExit;
|
|
bool isXRSICrossedUnderShortEntry;
|
|
|
|
//
|
|
// XOBD ...
|
|
bool isXOBDSwingLow;
|
|
bool isXOBDSwingHigh;
|
|
|
|
//
|
|
// XCHLH ...
|
|
//
|
|
bool isXCHLHSameHHs;
|
|
bool isXCHLHSameLLs;
|
|
//
|
|
bool isXCHLHSCMCHHSame;
|
|
bool isXCHLHSCMCLLSame;
|
|
//
|
|
bool isXCHLHSCLCHHSame;
|
|
bool isXCHLHSCLCLLSame;
|
|
//
|
|
bool isXCHLHMCLCHHSame;
|
|
bool isXCHLHMCLCLLSame;
|
|
//
|
|
bool isXCHLHMCOnTopOfLC;
|
|
bool isXCHLHMCInBottomOfLC;
|
|
|
|
//
|
|
// XCHMA ...
|
|
//
|
|
bool isXCHMASCOverMax;
|
|
bool isXCHMASCOverMin;
|
|
bool isXCHMASCUnderMax;
|
|
bool isXCHMASCUnderMin;
|
|
//
|
|
bool isXCHMASCCrossedOverMax;
|
|
bool isXCHMASCCrossedUnderMax;
|
|
bool isXCHMASCCrossedOverMin;
|
|
bool isXCHMASCCrossedUnderMin;
|
|
//
|
|
bool isXCHMASCPeak;
|
|
bool isXCHMASCVale;
|
|
bool isXCHMASCTrendsUp;
|
|
bool isXCHMASCTrendsDown;
|
|
bool isXCHMASCFastOverSlow;
|
|
bool isXCHMASCFastUnderSlow;
|
|
bool isXCHMASCFastCrossedOverSlow;
|
|
bool isXCHMASCFastCrossedUnderSlow;
|
|
//
|
|
bool isXCHMAMCPeak;
|
|
bool isXCHMAMCVale;
|
|
bool isXCHMAMCTrendsUp;
|
|
bool isXCHMAMCTrendsDown;
|
|
bool isXCHMAMCFastOverSlow;
|
|
bool isXCHMAMCFastUnderSlow;
|
|
bool isXCHMAMCFastCrossedOverSlow;
|
|
bool isXCHMAMCFastCrossedUnderSlow;
|
|
//
|
|
bool isXCHMALCPeak;
|
|
bool isXCHMALCVale;
|
|
bool isXCHMALCTrendsUp;
|
|
bool isXCHMALCTrendsDown;
|
|
bool isXCHMALCFastOverSlow;
|
|
bool isXCHMALCFastUnderSlow;
|
|
bool isXCHMALCFastCrossedOverSlow;
|
|
bool isXCHMALCFastCrossedUnderSlow;
|
|
};
|
|
|
|
//
|
|
// END Define Enums ...
|
|
//
|
|
|
|
//
|
|
// Include Provider Inputs ...
|
|
#include "x-saherelm.xau5.provider.inputs.lib.mq5"
|
|
|
|
//
|
|
// Signallers ...
|
|
input group "XAU5 Signallers";
|
|
|
|
//
|
|
// XTD ...
|
|
input group "XAU5 XTD Signaller";
|
|
input bool xAU5XTDEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XTDEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XTDAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XTDAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XTAM ...
|
|
input group "XAU5 XTAM Signaller";
|
|
input bool xAU5XTAMEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XTAMEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XTAMAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XTAMAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XSI ...
|
|
input group "XAU5 XSI Signaller";
|
|
input bool xAU5XSIEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5SIXEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XSIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XSIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XSTFI ...
|
|
input group "XAU5 XSTFI Signaller";
|
|
input bool xAU5XSTFIEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XSTFIEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XSTFIAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XSTFIAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XOBDLH ...
|
|
input group "XAU5 XOBDLH Signaller";
|
|
input bool xAU5XOBDLHEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XOBDLHEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XOBDLHAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XOBDLHAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMACC ...
|
|
input group "XAU5 XCHMACC Signaller";
|
|
input bool xAU5XCHMACCEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XCHMACCEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XCHMACCAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XCHMACCAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMACMX ...
|
|
input group "XAU5 XCHMACMX Signaller";
|
|
input bool xAU5XCHMACMXEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XCHMACMXEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XCHMACMXAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XCHMACMXAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// XCHMACMN ...
|
|
input group "XAU5 XCHMACMN Signaller";
|
|
input bool xAU5XCHMACMNEnableSignaller = true; // Enable Signaller
|
|
// input bool xAU5XCHMACMNEnableTPSL = false; // Enable TP/SL
|
|
input bool xAU5XCHMACMNAllowLongSignals = true; // Enable Long Signals
|
|
input bool xAU5XCHMACMNAllowShortSignals = true; // Enable Short Signals
|
|
|
|
//
|
|
// Imports all Indicators Helper here ...
|
|
// input group "XAU5 Provider Indicators";
|
|
|
|
//
|
|
#include "../Helpers/x-saherelm.xtm.indicator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xama.indicator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xlh.indicator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xtd.oscillator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xfi.oscillator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xts.oscillator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xobd.indicator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xrsi.oscillator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xchlh.oscillator.helper.lib.mq5"
|
|
#include "../Helpers/x-saherelm.xchma.oscillator.helper.lib.mq5"
|
|
|
|
//
|
|
bool xAU5IsTestMode = true;
|
|
int xAU5MaxLengthOfInputs = 0;
|
|
int xAU5CalculatedBars = 0;
|
|
|
|
//
|
|
// Signaller Variables ...
|
|
//
|
|
// XTD ...
|
|
bool xAU5MXTDEnableSignaller = xAU5XTDEnableSignaller;
|
|
// bool xAU5MXTDEnableTPSL = xAU5XTDEnableTPSL;
|
|
bool xAU5MXTDAllowLongSignals = xAU5XTDAllowLongSignals;
|
|
bool xAU5MXTDAllowShortSignals = xAU5XTDAllowShortSignals;
|
|
|
|
//
|
|
// XTAM ...
|
|
bool xAU5MXTAMEnableSignaller = xAU5XTAMEnableSignaller;
|
|
// bool xAU5MXTAMEnableTPSL = xAU5XTAMEnableTPSL;
|
|
bool xAU5MXTAMAllowLongSignals = xAU5XTAMAllowLongSignals;
|
|
bool xAU5MXTAMAllowShortSignals = xAU5XTAMAllowShortSignals;
|
|
|
|
//
|
|
// XSI ...
|
|
bool xAU5MXSIEnableSignaller = xAU5XSIEnableSignaller;
|
|
// bool xAU5MSIXEnableTPSL = xAU5SIXEnableTPSL;
|
|
bool xAU5MXSIAllowLongSignals = xAU5XSIAllowLongSignals;
|
|
bool xAU5MXSIAllowShortSignals = xAU5XSIAllowShortSignals;
|
|
|
|
//
|
|
// XSTFI ...
|
|
bool xAU5MXSTFIEnableSignaller = xAU5XSTFIEnableSignaller;
|
|
// bool xAU5MXSTFIEnableTPSL = xAU5XSTFIEnableTPSL;
|
|
bool xAU5MXSTFIAllowLongSignals = xAU5XSTFIAllowLongSignals;
|
|
bool xAU5MXSTFIAllowShortSignals = xAU5XSTFIAllowShortSignals;
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool xAU5MXOBDLHEnableSignaller = xAU5XOBDLHEnableSignaller;
|
|
// bool xAU5MXOBDLHEnableTPSL = xAU5XOBDLHEnableTPSL;
|
|
bool xAU5MXOBDLHAllowLongSignals = xAU5XOBDLHAllowLongSignals;
|
|
bool xAU5MXOBDLHAllowShortSignals = xAU5XOBDLHAllowShortSignals;
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool xAU5MXCHMACCEnableSignaller = xAU5XCHMACCEnableSignaller;
|
|
// bool xAU5MXCHMACCEnableTPSL = xAU5XCHMACCEnableTPSL;
|
|
bool xAU5MXCHMACCAllowLongSignals = xAU5XCHMACCAllowLongSignals;
|
|
bool xAU5MXCHMACCAllowShortSignals = xAU5XCHMACCAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
bool xAU5MXCHMACMXEnableSignaller = xAU5XCHMACMXEnableSignaller;
|
|
// bool xAU5MXCHMACMXEnableTPSL = xAU5XCHMACMXEnableTPSL;
|
|
bool xAU5MXCHMACMXAllowLongSignals = xAU5XCHMACMXAllowLongSignals;
|
|
bool xAU5MXCHMACMXAllowShortSignals = xAU5XCHMACMXAllowShortSignals;
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
bool xAU5MXCHMACMNEnableSignaller = xAU5XCHMACMNEnableSignaller;
|
|
// bool xAU5MXCHMACMNEnableTPSL = xAU5XCHMACMNEnableTPSL;
|
|
bool xAU5MXCHMACMNAllowLongSignals = xAU5XCHMACMNAllowLongSignals;
|
|
bool xAU5MXCHMACMNAllowShortSignals = xAU5XCHMACMNAllowShortSignals;
|
|
|
|
//
|
|
// Funded Next Resolve Guards ...
|
|
bool isXAU5OnFundedNext = true;
|
|
|
|
//
|
|
// Here we Define some Global Market Variables to Analyse MArket Conditions
|
|
// using them at each time ...
|
|
XAU5MarketConditions xAU5Conditions = {};
|
|
|
|
//
|
|
// Validate Indicators Inputs ...
|
|
bool XAU5ValidateIndicatorsInputs()
|
|
{
|
|
//
|
|
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;
|
|
}
|
|
|
|
//
|
|
result = true;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Init Indicators ...
|
|
bool XAU5InitIndicators()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Make it Enable when we need to Log Market Conditions ...
|
|
// xAU5IsTestMode = false; // IsRunningOnTestMode();
|
|
|
|
//
|
|
// Check and Calculate Max Length in Inputs ...
|
|
//
|
|
|
|
//
|
|
// XTM ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xTMMaPeriod,
|
|
xAU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XAMA ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xAMALength,
|
|
xAU5NumberOfItemsPerTick);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xAMAFastEMA,
|
|
xAU5NumberOfItemsPerTick);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xAMASlowEMA,
|
|
xAU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XLH ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xLHLength,
|
|
xAU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
// XTD ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xTDLength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XFI ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xFILength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XRSI ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xRSILength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XOBD ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xOBDLength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHLH ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHLHLcLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHLHMcLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHLHScLength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// XCHMA ...
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMAScFastLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMAScSlowLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcFastLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMAMcSlowLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMALcFastLength,
|
|
xAU5MaxLengthOfInputs);
|
|
xAU5MaxLengthOfInputs = MathMax(
|
|
xCHMALcSlowLength,
|
|
xAU5MaxLengthOfInputs);
|
|
|
|
//
|
|
// Validate Indicators Inputs before Initialization ...
|
|
result = XAU5ValidateIndicatorsInputs();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Validate Signallers ...
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDEnable =
|
|
xAU5XTDEnableSignaller &&
|
|
(xAU5XTDAllowLongSignals ||
|
|
xAU5XTDAllowShortSignals);
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMEnable =
|
|
xAU5XTAMEnableSignaller &&
|
|
(xAU5XTAMAllowLongSignals ||
|
|
xAU5XTAMAllowShortSignals);
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIEnable =
|
|
xAU5XSIEnableSignaller &&
|
|
(xAU5XSIAllowLongSignals ||
|
|
xAU5XSIAllowShortSignals);
|
|
|
|
//
|
|
// XSTFI ...
|
|
bool isXSTFIEnable =
|
|
xAU5XSTFIEnableSignaller &&
|
|
(xAU5XSTFIAllowLongSignals ||
|
|
xAU5XSTFIAllowShortSignals);
|
|
|
|
//
|
|
// XOBDLH ...
|
|
bool isXOBDLHEnable =
|
|
xAU5XOBDLHEnableSignaller &&
|
|
(xAU5XOBDLHAllowLongSignals ||
|
|
xAU5XOBDLHAllowShortSignals);
|
|
|
|
//
|
|
// XCHMACC ...
|
|
bool isXCHMACCEnable =
|
|
xAU5XCHMACCEnableSignaller &&
|
|
(xAU5XCHMACCAllowLongSignals ||
|
|
xAU5XCHMACCAllowShortSignals);
|
|
|
|
//
|
|
// XCHMACMX ...
|
|
bool isXCHMACMXEnable =
|
|
xAU5XCHMACMXEnableSignaller &&
|
|
(xAU5XCHMACMXAllowLongSignals ||
|
|
xAU5XCHMACMXAllowShortSignals);
|
|
|
|
//
|
|
// XCHMACMN ...
|
|
bool isXCHMACMNEnable =
|
|
xAU5XCHMACMNEnableSignaller &&
|
|
(xAU5XCHMACMNAllowLongSignals ||
|
|
xAU5XCHMACMNAllowShortSignals);
|
|
|
|
//
|
|
bool hasSignaller =
|
|
//
|
|
isXTDEnable ||
|
|
isXTAMEnable ||
|
|
isXSIEnable ||
|
|
isXSTFIEnable ||
|
|
isXOBDLHEnable ||
|
|
isXCHMACCEnable ||
|
|
isXCHMACMXEnable ||
|
|
isXCHMACMNEnable
|
|
//
|
|
;
|
|
result = hasSignaller;
|
|
if (!result)
|
|
{
|
|
//
|
|
LogMessage("XAU5 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 XAU5ReleaseIndicators()
|
|
{
|
|
//
|
|
// Release Handlers ...
|
|
XTMReleaseHandlers();
|
|
XAMAReleaseHandlers();
|
|
XLHReleaseHandlers();
|
|
XTDReleaseHandlers();
|
|
XFIReleaseHandlers();
|
|
XTSReleaseHandlers();
|
|
XRSIReleaseHandlers();
|
|
XOBDReleaseHandlers();
|
|
XCHMAReleaseHandlers();
|
|
XCHLHReleaseHandlers();
|
|
}
|
|
|
|
//
|
|
// Handle Reading Buffers ...
|
|
void XAU5HandleReadingBuffers()
|
|
{
|
|
//
|
|
// Reading Calculated Bars for a Simple Handler ...
|
|
xAU5CalculatedBars = BarsCalculated(xTMHandler);
|
|
|
|
//
|
|
// Read Indicators Buffers ...
|
|
XTMReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XAMAReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XLHReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XTDReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XFIReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XTSReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XRSIReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XOBDReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XCHMAReadBuffers(xAU5NumberOfItemsPerTick);
|
|
XCHLHReadBuffers(xAU5NumberOfItemsPerTick);
|
|
|
|
//
|
|
XAU5ReadConditions();
|
|
}
|
|
|
|
//
|
|
//
|
|
// 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 XAU5CanOpenLongTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XAU5HasLongSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
XAU5ClearConditions();
|
|
}
|
|
|
|
//
|
|
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 XAU5CanCloseLongTrade()
|
|
{
|
|
//
|
|
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 XAU5CanOpenShortTrade(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
info.tp = 0;
|
|
info.sl = 0;
|
|
ArrayResize(
|
|
info.signallers,
|
|
0);
|
|
|
|
//
|
|
bool hasSignal = XAU5HasShortSignal(info);
|
|
|
|
//
|
|
result =
|
|
//
|
|
hasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
XAU5ClearConditions();
|
|
}
|
|
|
|
//
|
|
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 XAU5CanCloseShortTrade()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
//
|
|
// END Combination Functions ...
|
|
//
|
|
//
|
|
|
|
//
|
|
//
|
|
// START Combination Signaling ...
|
|
//
|
|
//
|
|
|
|
//
|
|
// Read All Globally Required Conditions ...
|
|
void XAU5ReadConditions()
|
|
{
|
|
//
|
|
XAU5ClearConditions();
|
|
|
|
//
|
|
xAU5Conditions = XAU5GenerateMarketConditions(1);
|
|
}
|
|
|
|
//
|
|
// Cleanup Conditions ...
|
|
void XAU5ClearConditions()
|
|
{
|
|
//
|
|
XAU5MarketConditions mConditions = {};
|
|
|
|
//
|
|
xAU5Conditions = mConditions;
|
|
}
|
|
|
|
//
|
|
// Generate Merket Conditions for Specified Bar Index ...
|
|
XAU5MarketConditions XAU5GenerateMarketConditions(
|
|
int bar_index = 1 // Specified Bar Index ...
|
|
)
|
|
{
|
|
//
|
|
XAU5MarketConditions mConditions = {};
|
|
|
|
//
|
|
// XTM ...
|
|
mConditions.isXTMPeak = XTMIsPeak(bar_index);
|
|
mConditions.isXTMVale = XTMIsVale(bar_index);
|
|
mConditions.isXTMBullish = XTMIsBullish(bar_index);
|
|
mConditions.isXTMBearish = XTMIsBearish(bar_index);
|
|
mConditions.isXTMNeutural = XTMIsNeutural(bar_index);
|
|
mConditions.isXTMEndBullish = XTMIsEndBullish(bar_index);
|
|
mConditions.isXTMEndBearish = XTMIsEndBearish(bar_index);
|
|
mConditions.isXTMStartBullish = XTMIsStartBullish(bar_index);
|
|
mConditions.isXTMStartBearish = XTMIsStartBearish(bar_index);
|
|
mConditions.isXTMEndBullishByNeutural = XTMIsEndBullishByNeutural(bar_index);
|
|
mConditions.isXTMEndBearishByNeutural = XTMIsEndBearishByNeutural(bar_index);
|
|
mConditions.isXTMStartBullishAfterNeutural = XTMIsStartBullishAfterNeutural(bar_index);
|
|
mConditions.isXTMStartBearishAfterNeutural = XTMIsStartBearishAfterNeutural(bar_index);
|
|
|
|
//
|
|
// XAMA ...
|
|
mConditions.isXAMAPeak = XAMAIsPeak(bar_index);
|
|
mConditions.isXAMAVale = XAMAIsVale(bar_index);
|
|
mConditions.isXAMABullish = XAMAIsBullish(bar_index);
|
|
mConditions.isXAMABearish = XAMAIsBearish(bar_index);
|
|
mConditions.isXAMANeutural = XAMAIsNeutural(bar_index);
|
|
mConditions.isXAMAEndBullish = XAMAIsEndBullish(bar_index);
|
|
mConditions.isXAMAEndBearish = XAMAIsEndBearish(bar_index);
|
|
mConditions.isXAMAStartBullish = XAMAIsStartBullish(bar_index);
|
|
mConditions.isXAMAStartBearish = XAMAIsStartBearish(bar_index);
|
|
mConditions.isXAMAEndBullishByNeutural = XAMAIsEndBullishByNeutural(bar_index);
|
|
mConditions.isXAMAEndBearishByNeutural = XAMAIsEndBearishByNeutural(bar_index);
|
|
mConditions.isXAMAStartBullishAfterNeutural = XAMAIsStartBullishAfterNeutural(bar_index);
|
|
mConditions.isXAMAStartBearishAfterNeutural = XAMAIsStartBearishAfterNeutural(bar_index);
|
|
|
|
//
|
|
// XLH ...
|
|
mConditions.isXLHHHIncreased = XLHIsHHIncreased(bar_index);
|
|
mConditions.isXLHHHDecreased = XLHIsHHDecreased(bar_index);
|
|
mConditions.isXLHLLIncreased = XLHIsLLIncreased(bar_index);
|
|
mConditions.isXLHLLDecreased = XLHIsLLDecreased(bar_index);
|
|
mConditions.isXLHLowAttachedLL = XLHIsLowAttachedLL(bar_index);
|
|
mConditions.isXLHHighAttachedHH = XLHIsHighAttachedHH(bar_index);
|
|
mConditions.isXLHHHSameInLength = XLHIsHHSameInLength(bar_index);
|
|
mConditions.isXLHLLSameInLength = XLHIsLLSameInLength(bar_index);
|
|
mConditions.isXLHPriceOverSignal = XLHIsPriceOverSignal(bar_index);
|
|
mConditions.isXLHPriceUnderSignal = XLHIsPriceUnderSignal(bar_index);
|
|
mConditions.isXLHPriceInSignalRange = XLHIsPriceInSignalRange(bar_index);
|
|
mConditions.isXLHPriceCrossedOverSignal = XLHIsPriceCrossedOverSignal(bar_index);
|
|
mConditions.isXLHPriceCrossedUnderSignal = XLHIsPriceCrossedUnderSignal(bar_index);
|
|
|
|
//
|
|
// XTD ...
|
|
mConditions.isXTDSignalPeak = XTDIsSignalPeak(bar_index);
|
|
mConditions.isXTDSignalVale = XTDIsSignalVale(bar_index);
|
|
mConditions.isXTDBullishPeak = XTDIsBullishPeak(bar_index);
|
|
mConditions.isXTDBullishVale = XTDIsBullishVale(bar_index);
|
|
mConditions.isXTDBearishPeak = XTDIsBearishPeak(bar_index);
|
|
mConditions.isXTDBearishVale = XTDIsBearishVale(bar_index);
|
|
mConditions.isXTDBullOverBear = XTDIsBullOverBear(bar_index);
|
|
mConditions.isXTDBullUnderBear = XTDIsBullUnderBear(bar_index);
|
|
mConditions.isXTDSignalOverBear = XTDIsSignalOverBear(bar_index);
|
|
mConditions.isXTDSignalUnderBear = XTDIsSignalUnderBear(bar_index);
|
|
mConditions.isXTDBullCrossedOverBear = XTDIsBullCrossedOverBear(bar_index);
|
|
mConditions.isXTDBullCrossedUnderBear = XTDIsBullCrossedUnderBear(bar_index);
|
|
mConditions.isXTDSignalCrossedOverBear = XTDIsSignalCrossedOverBear(bar_index);
|
|
mConditions.isXTDSignalCrossedUnderBear = XTDIsSignalCrossedUnderBear(bar_index);
|
|
|
|
//
|
|
// XFI ...
|
|
mConditions.isXFIPeak = XFIIsPeak(bar_index);
|
|
mConditions.isXFIVale = XFIIsVale(bar_index);
|
|
mConditions.isXFIOverZero = XFIIsOverZero(bar_index);
|
|
mConditions.isXFIUnderZero = XFIIsUnderZero(bar_index);
|
|
mConditions.isXFICrossedOverZero = XFIIsCrossedOverZero(bar_index);
|
|
mConditions.isXFICrossedUnderZero = XFIIsCrossedUnderZero(bar_index);
|
|
|
|
//
|
|
// XTS ...
|
|
mConditions.isXTSAllSame = XTSIsAllSame(bar_index);
|
|
mConditions.isXTSCurrentMin = XTSIsCurrentMin(bar_index);
|
|
mConditions.isXTSCurrentMax = XTSIsCurrentMax(bar_index);
|
|
mConditions.isXTSCurrentOverFarest = XTSIsCurrentOverFarest(bar_index);
|
|
mConditions.isXTSCurrentOverNearest = XTSIsCurrentOverNearest(bar_index);
|
|
mConditions.isXTSCurrentOverMediest = XTSIsCurrentOverMediest(bar_index);
|
|
mConditions.isXTSCurrentUnderFarest = XTSIsCurrentUnderFarest(bar_index);
|
|
mConditions.isXTSCurrentUnderNearest = XTSIsCurrentUnderNearest(bar_index);
|
|
mConditions.isXTSCurrentUnderMediest = XTSIsCurrentUnderMediest(bar_index);
|
|
mConditions.isXTSCurrentCrossedOverFarest = XTSIsCurrentCrossedOverFarest(bar_index);
|
|
mConditions.isXTSCurrentCrossedOverNearest = XTSIsCurrentCrossedOverNearest(bar_index);
|
|
mConditions.isXTSCurrentCrossedOverMediest = XTSIsCurrentCrossedOverMediest(bar_index);
|
|
mConditions.isXTSCurrentCrossedUnderFarest = XTSIsCurrentCrossedUnderFarest(bar_index);
|
|
mConditions.isXTSCurrentCrossedUnderNearest = XTSIsCurrentCrossedUnderNearest(bar_index);
|
|
mConditions.isXTSCurrentCrossedUnderMediest = XTSIsCurrentCrossedUnderMediest(bar_index);
|
|
|
|
//
|
|
// XRSI ...
|
|
mConditions.isXRSIPeak = XRSIIsPeak(bar_index);
|
|
mConditions.isXRSIVale = XRSIIsVale(bar_index);
|
|
mConditions.isXRSICrossedOverLongExit = XRSIIsCrossedOverLongExit(bar_index);
|
|
mConditions.isXRSICrossedOverLongEntry = XRSIIsCrossedOverLongEntry(bar_index);
|
|
mConditions.isXRSICrossedUnderShortExit = XRSIIsCrossedUnderShortExit(bar_index);
|
|
mConditions.isXRSICrossedUnderShortEntry = XRSIIsCrossedUnderShortEntry(bar_index);
|
|
|
|
//
|
|
// XOBD ...
|
|
mConditions.isXOBDSwingLow = XOBDIsSwingLow(bar_index);
|
|
mConditions.isXOBDSwingHigh = XOBDIsSwingHigh(bar_index);
|
|
|
|
//
|
|
// XCHLH ...
|
|
//
|
|
mConditions.isXCHLHSameHHs = XCHLHIsSameHHs(bar_index);
|
|
mConditions.isXCHLHSameLLs = XCHLHIsSameLLs(bar_index);
|
|
//
|
|
mConditions.isXCHLHSCMCHHSame = XCHLHIsMCSCHasSameHH(bar_index);
|
|
mConditions.isXCHLHSCMCLLSame = XCHLHIsMCSCHasSameLL(bar_index);
|
|
//
|
|
mConditions.isXCHLHSCLCHHSame = XCHLHIsLCSCHasSameHH(bar_index);
|
|
mConditions.isXCHLHSCLCLLSame = XCHLHIsLCSCHasSameLL(bar_index);
|
|
//
|
|
mConditions.isXCHLHMCLCHHSame = XCHLHIsLCMCHasSameHH(bar_index);
|
|
mConditions.isXCHLHMCLCLLSame = XCHLHIsLCMCHasSameLL(bar_index);
|
|
//
|
|
mConditions.isXCHLHMCOnTopOfLC = XCHLHIsMCOnTopOfLC(bar_index);
|
|
mConditions.isXCHLHMCInBottomOfLC = XCHLHIsMCInBottomOfLC(bar_index);
|
|
|
|
//
|
|
// XCHMA ...
|
|
//
|
|
mConditions.isXCHMASCOverMax = XCHMAIsSCOverMax(bar_index);
|
|
mConditions.isXCHMASCOverMin = XCHMAIsSCOverMin(bar_index);
|
|
mConditions.isXCHMASCUnderMax = XCHMAIsSCUnderMax(bar_index);
|
|
mConditions.isXCHMASCUnderMin = XCHMAIsSCUnderMin(bar_index);
|
|
//
|
|
mConditions.isXCHMASCCrossedOverMax = XCHMAIsSCCrossedOverMax(bar_index);
|
|
mConditions.isXCHMASCCrossedUnderMax = XCHMAIsSCCrossedUnderMax(bar_index);
|
|
mConditions.isXCHMASCCrossedOverMin = XCHMAIsSCCrossedOverMin(bar_index);
|
|
mConditions.isXCHMASCCrossedUnderMin = XCHMAIsSCCrossedUnderMin(bar_index);
|
|
//
|
|
mConditions.isXCHMASCPeak = XCHMAIsSCPeak(bar_index);
|
|
mConditions.isXCHMASCVale = XCHMAIsSCVale(bar_index);
|
|
mConditions.isXCHMASCTrendsUp = XCHMAIsSCTrendsUp(bar_index);
|
|
mConditions.isXCHMASCTrendsDown = XCHMAIsSCTrendsDown(bar_index);
|
|
mConditions.isXCHMASCFastOverSlow = XCHMAIsSCFastOverSlow(bar_index);
|
|
mConditions.isXCHMASCFastUnderSlow = XCHMAIsSCFastUnderSlow(bar_index);
|
|
mConditions.isXCHMASCFastCrossedOverSlow = XCHMAIsSCFastCrossedOverSlow(bar_index);
|
|
mConditions.isXCHMASCFastCrossedUnderSlow = XCHMAIsSCFastCrossedUnderSlow(bar_index);
|
|
//
|
|
mConditions.isXCHMAMCPeak = XCHMAIsMCPeak(bar_index);
|
|
mConditions.isXCHMAMCVale = XCHMAIsMCVale(bar_index);
|
|
mConditions.isXCHMAMCTrendsUp = XCHMAIsMCTrendsUp(bar_index);
|
|
mConditions.isXCHMAMCTrendsDown = XCHMAIsMCTrendsDown(bar_index);
|
|
mConditions.isXCHMAMCFastOverSlow = XCHMAIsMCFastOverSlow(bar_index);
|
|
mConditions.isXCHMAMCFastUnderSlow = XCHMAIsMCFastUnderSlow(bar_index);
|
|
mConditions.isXCHMAMCFastCrossedOverSlow = XCHMAIsMCFastCrossedOverSlow(bar_index);
|
|
mConditions.isXCHMAMCFastCrossedUnderSlow = XCHMAIsMCFastCrossedUnderSlow(bar_index);
|
|
//
|
|
mConditions.isXCHMALCPeak = XCHMAIsLCPeak(bar_index);
|
|
mConditions.isXCHMALCVale = XCHMAIsLCVale(bar_index);
|
|
mConditions.isXCHMALCTrendsUp = XCHMAIsLCTrendsUp(bar_index);
|
|
mConditions.isXCHMALCTrendsDown = XCHMAIsLCTrendsDown(bar_index);
|
|
mConditions.isXCHMALCFastOverSlow = XCHMAIsLCFastOverSlow(bar_index);
|
|
mConditions.isXCHMALCFastUnderSlow = XCHMAIsLCFastUnderSlow(bar_index);
|
|
mConditions.isXCHMALCFastCrossedOverSlow = XCHMAIsLCFastCrossedOverSlow(bar_index);
|
|
mConditions.isXCHMALCFastCrossedUnderSlow = XCHMAIsLCFastCrossedUnderSlow(bar_index);
|
|
|
|
//
|
|
return mConditions;
|
|
}
|
|
|
|
//
|
|
// Check Market Conditions by Combination of Power of All tools for LONGs ...
|
|
bool XAU5HasLongSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XAU5XTDHasLongSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XAU5XTAMHasLongSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XAU5XSIHasLongSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
bool isXSTFIHasSignal = XAU5XSTFIHasLongSignal();
|
|
if (isXSTFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSTFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XAU5XOBDLHHasLongSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XAU5XCHMACCHasLongSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMACMNHasSignal = XAU5XCHMACMNHasLongSignal();
|
|
if (isXCHMACMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMACMXHasSignal = XAU5XCHMACMXHasLongSignal();
|
|
if (isXCHMACMXHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACMX),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
result =
|
|
//
|
|
isXTDHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTAMHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSTFIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXOBDLHHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACCHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACMNHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACMXHasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
//
|
|
// Only Log Signals Time Market Conditions if is in Testing Mode ...
|
|
if (xAU5IsTestMode)
|
|
{
|
|
//
|
|
string message = XAU5GetConditionsString(xAU5Conditions, "\n");
|
|
|
|
//
|
|
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 XAU5HasShortSignal(
|
|
XProvidedSignal &info // Retrieve Signal Additional Info on this Object
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// XTD ...
|
|
bool isXTDHasSignal = XAU5XTDHasShortSignal();
|
|
if (isXTDHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTD),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
bool isXTAMHasSignal = XAU5XTAMHasShortSignal();
|
|
if (isXTAMHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XTAM),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
bool isXSIHasSignal = XAU5XSIHasShortSignal();
|
|
if (isXSIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
bool isXSTFIHasSignal = XAU5XSTFIHasShortSignal();
|
|
if (isXSTFIHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XSTFI),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XOBD XLH ...
|
|
bool isXOBDLHHasSignal = XAU5XOBDLHHasShortSignal();
|
|
if (isXOBDLHHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XOBDLH),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Cross ...
|
|
bool isXCHMACCHasSignal = XAU5XCHMACCHasShortSignal();
|
|
if (isXCHMACCHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACC),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Min ...
|
|
bool isXCHMACMNHasSignal = XAU5XCHMACMNHasShortSignal();
|
|
if (isXCHMACMNHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACMN),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
// XCHMA Cycles Max
|
|
bool isXCHMACMXHasSignal = XAU5XCHMACMXHasShortSignal();
|
|
if (isXCHMACMXHasSignal)
|
|
{
|
|
//
|
|
Add(
|
|
EnumToString(XCHMACMX),
|
|
info.signallers);
|
|
}
|
|
|
|
//
|
|
result =
|
|
//
|
|
isXTDHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXTAMHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXSTFIHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXOBDLHHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACCHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACMNHasSignal
|
|
//
|
|
||
|
|
//
|
|
isXCHMACMXHasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
//
|
|
// Only Log Signals Time Market Conditions if is in Testing Mode ...
|
|
if (xAU5IsTestMode)
|
|
{
|
|
//
|
|
string message = XAU5GetConditionsString(xAU5Conditions, "\n");
|
|
|
|
//
|
|
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 XAU5DisableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xAU5MXTDEnableSignaller)
|
|
{
|
|
xAU5MXTDAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xAU5MXTAMEnableSignaller)
|
|
{
|
|
xAU5MXTAMAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xAU5MXSIEnableSignaller)
|
|
{
|
|
xAU5MXSIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
if (xAU5MXSTFIEnableSignaller)
|
|
{
|
|
xAU5MXSTFIAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xAU5MXOBDLHEnableSignaller)
|
|
{
|
|
xAU5MXOBDLHAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xAU5MXCHMACCEnableSignaller)
|
|
{
|
|
xAU5MXCHMACCAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xAU5MXCHMACMXEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMXAllowLongSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xAU5MXCHMACMNEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMNAllowLongSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Longs ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XAU5EnableLongSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xAU5MXTDEnableSignaller)
|
|
{
|
|
xAU5MXTDAllowLongSignals =
|
|
xAU5XTDAllowLongSignals
|
|
? true
|
|
: xAU5MXTDAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xAU5MXTAMEnableSignaller)
|
|
{
|
|
xAU5MXTAMAllowLongSignals =
|
|
xAU5XTAMAllowLongSignals
|
|
? true
|
|
: xAU5MXTAMAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xAU5MXSIEnableSignaller)
|
|
{
|
|
xAU5MXSIAllowLongSignals =
|
|
xAU5XSIAllowLongSignals
|
|
? true
|
|
: xAU5MXSIAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
if (xAU5MXSTFIEnableSignaller)
|
|
{
|
|
xAU5MXSTFIAllowLongSignals =
|
|
xAU5XSTFIAllowLongSignals
|
|
? true
|
|
: xAU5MXSTFIAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xAU5MXOBDLHEnableSignaller)
|
|
{
|
|
xAU5MXOBDLHAllowLongSignals =
|
|
xAU5XOBDLHAllowLongSignals
|
|
? true
|
|
: xAU5MXOBDLHAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xAU5MXCHMACCEnableSignaller)
|
|
{
|
|
xAU5MXCHMACCAllowLongSignals =
|
|
xAU5XCHMACCAllowLongSignals
|
|
? true
|
|
: xAU5MXCHMACCAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xAU5MXCHMACMXEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMXAllowLongSignals =
|
|
xAU5XCHMACMXAllowLongSignals
|
|
? true
|
|
: xAU5MXCHMACMXAllowLongSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xAU5MXCHMACMNEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMNAllowLongSignals =
|
|
xAU5XCHMACMNAllowLongSignals
|
|
? true
|
|
: xAU5MXCHMACMNAllowLongSignals;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Disable All Signallers Shorts ...
|
|
void XEUDisableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xAU5MXTDEnableSignaller)
|
|
{
|
|
xAU5MXTDAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xAU5MXTAMEnableSignaller)
|
|
{
|
|
xAU5MXTAMAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xAU5MXSIEnableSignaller)
|
|
{
|
|
xAU5MXSIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
if (xAU5MXSTFIEnableSignaller)
|
|
{
|
|
xAU5MXSTFIAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xAU5MXOBDLHEnableSignaller)
|
|
{
|
|
xAU5MXOBDLHAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xAU5MXCHMACCEnableSignaller)
|
|
{
|
|
xAU5MXCHMACCAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xAU5MXCHMACMXEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMXAllowShortSignals = false;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xAU5MXCHMACMNEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMNAllowShortSignals = false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Enable All Signallers Shorts ...
|
|
// Only if they are Configured as Enable at Settings ...
|
|
void XEUEnableShortSignallers()
|
|
{
|
|
//
|
|
// XTD ...
|
|
if (xAU5MXTDEnableSignaller)
|
|
{
|
|
xAU5MXTDAllowShortSignals =
|
|
xAU5XTDAllowShortSignals
|
|
? true
|
|
: xAU5MXTDAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XTAM ...
|
|
if (xAU5MXTAMEnableSignaller)
|
|
{
|
|
xAU5MXTAMAllowShortSignals =
|
|
xAU5XTAMAllowShortSignals
|
|
? true
|
|
: xAU5MXTAMAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XSI ...
|
|
if (xAU5MXSIEnableSignaller)
|
|
{
|
|
xAU5MXSIAllowShortSignals =
|
|
xAU5XSIAllowShortSignals
|
|
? true
|
|
: xAU5MXSIAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XSTFI ...
|
|
if (xAU5MXSTFIEnableSignaller)
|
|
{
|
|
xAU5MXSTFIAllowShortSignals =
|
|
xAU5XSTFIAllowShortSignals
|
|
? true
|
|
: xAU5MXSTFIAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XOBDLH ...
|
|
if (xAU5MXOBDLHEnableSignaller)
|
|
{
|
|
xAU5MXOBDLHAllowShortSignals =
|
|
xAU5XOBDLHAllowShortSignals
|
|
? true
|
|
: xAU5MXOBDLHAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMACC ...
|
|
if (xAU5MXCHMACCEnableSignaller)
|
|
{
|
|
xAU5MXCHMACCAllowShortSignals =
|
|
xAU5XCHMACCAllowShortSignals
|
|
? true
|
|
: xAU5MXCHMACCAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMAMX ...
|
|
if (xAU5MXCHMACMXEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMXAllowShortSignals =
|
|
xAU5XCHMACMXAllowShortSignals
|
|
? true
|
|
: xAU5MXCHMACMXAllowShortSignals;
|
|
}
|
|
|
|
//
|
|
// XCHMAMN ...
|
|
if (xAU5MXCHMACMNEnableSignaller)
|
|
{
|
|
xAU5MXCHMACMNAllowShortSignals =
|
|
xAU5XCHMACMNAllowShortSignals
|
|
? true
|
|
: xAU5MXCHMACMNAllowShortSignals;
|
|
}
|
|
}
|
|
|
|
//
|
|
// XTD Long Signal Checking ...
|
|
bool XAU5XTDHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXTDEnableSignaller ||
|
|
!xAU5MXTDAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTD Short Signal Checking ...
|
|
bool XAU5XTDHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXTDEnableSignaller ||
|
|
!xAU5MXTDAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Long Signal Checking ...
|
|
bool XAU5XTAMHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXTAMEnableSignaller ||
|
|
!xAU5MXTAMAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
(xAMAMaBuffer[1] > xTMMaBuffer[1] &&
|
|
xAMAMaBuffer[2] > xTMMaBuffer[2])
|
|
//
|
|
&&
|
|
//
|
|
!(xAMAMaBuffer[2] > xTMMaBuffer[2] &&
|
|
xAMAMaBuffer[3] > xTMMaBuffer[3])
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
// Exception Cases for XCHMA Min or Max ...
|
|
!(
|
|
//
|
|
// XCHMA MAX ...
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCOverMax ||
|
|
xAU5Conditions.isXCHMASCCrossedOverMax) &&
|
|
(xAU5Conditions.isXCHMASCUnderMax ||
|
|
xAU5Conditions.isXCHMASCCrossedUnderMax)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMA MIN ...
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCOverMin ||
|
|
xAU5Conditions.isXCHMASCCrossedOverMin) &&
|
|
(xAU5Conditions.isXCHMASCUnderMin ||
|
|
xAU5Conditions.isXCHMASCCrossedUnderMin)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Check XCHMA Trend Bullish ...
|
|
(
|
|
//
|
|
// All Cycles Bullish ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow)
|
|
//
|
|
&&
|
|
//
|
|
// MC ...
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow)
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Two Cycle Fully Bullish ...
|
|
(
|
|
//
|
|
// SC and MC ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMASCTrendsDown &&
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// MC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// SC and LC ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMASCTrendsDown &&
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// MC and LC ...
|
|
(
|
|
//
|
|
// MC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// XCHMA Check Peaks ...
|
|
!(
|
|
//
|
|
// All Cycles Peak ...
|
|
(
|
|
xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMAMCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
// SC MC ...
|
|
(xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMAMCPeak)
|
|
//
|
|
||
|
|
//
|
|
// SC LC ...
|
|
(xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
// MC LC ...
|
|
(xAU5Conditions.isXCHMAMCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Check XCHMA Trends Powers ...
|
|
!(
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Check XOBD Swings ...
|
|
!xAU5Conditions.isXOBDSwingLow
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXAMABearish &&
|
|
xAU5Conditions.isXTMEndBearish &&
|
|
xAU5Conditions.isXTDSignalVale &&
|
|
xAU5Conditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXAMANeutural &&
|
|
xAU5Conditions.isXLHHHDecreased &&
|
|
xAU5Conditions.isXTDBullUnderBear &&
|
|
xAU5Conditions.isXTDSignalUnderBear)
|
|
//
|
|
||
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsDown &&
|
|
xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
xAU5Conditions.isXCHMALCTrendsDown)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMALCPeak &&
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMAMCVale &&
|
|
((
|
|
//
|
|
xAU5Conditions.isXCHMASCVale
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXAMAVale &&
|
|
(xAU5Conditions.isXTDBearishVale ||
|
|
xAU5Conditions.isXTMStartBearish))
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
((xAU5Conditions.isXCHMASCTrendsUp &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow)) &&
|
|
(xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)))
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXTMBearish &&
|
|
xAU5Conditions.isXAMABearish &&
|
|
xAU5Conditions.isXTSCurrentMin &&
|
|
xAU5Conditions.isXLHHHDecreased &&
|
|
xAU5Conditions.isXFICrossedUnderZero)
|
|
//
|
|
))
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXTSCurrentMin &&
|
|
(xAU5Conditions.isXTSCurrentUnderFarest ||
|
|
xAU5Conditions.isXTSCurrentCrossedUnderFarest) &&
|
|
(xAU5Conditions.isXTSCurrentUnderNearest ||
|
|
xAU5Conditions.isXTSCurrentCrossedUnderNearest) &&
|
|
(xAU5Conditions.isXTSCurrentUnderMediest ||
|
|
xAU5Conditions.isXTSCurrentCrossedUnderMediest))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXTSCurrentMin &&
|
|
xAU5Conditions.isXTSCurrentUnderFarest &&
|
|
xAU5Conditions.isXTSCurrentUnderNearest &&
|
|
xAU5Conditions.isXTSCurrentUnderMediest)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXAMAVale &&
|
|
xAU5Conditions.isXCHLHSCMCLLSame &&
|
|
xAU5Conditions.isXLHLowAttachedLL)
|
|
//
|
|
||
|
|
//
|
|
((xAU5Conditions.isXCHMAMCVale &&
|
|
xAU5Conditions.isXCHMALCPeak) &&
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCTrendsUp &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow))
|
|
//
|
|
))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXTSCurrentMax &&
|
|
xAU5Conditions.isXTSCurrentOverFarest &&
|
|
xAU5Conditions.isXTSCurrentOverNearest &&
|
|
xAU5Conditions.isXTSCurrentOverMediest)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XTAM Short Signal Checking ...
|
|
bool XAU5XTAMHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXTAMEnableSignaller ||
|
|
!xAU5MXTAMAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Long Signal Checking ...
|
|
bool XAU5XSIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXSIEnableSignaller ||
|
|
!xAU5MXSIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
xAU5Conditions.isXRSICrossedOverLongEntry &&
|
|
xRSIBuffer[3] < xRSILongEntryValue
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
// Exception Cases for XCHMA Min or Max ...
|
|
!(
|
|
//
|
|
// XCHMA MAX ...
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCOverMax ||
|
|
xAU5Conditions.isXCHMASCCrossedOverMax) &&
|
|
(xAU5Conditions.isXCHMASCUnderMax ||
|
|
xAU5Conditions.isXCHMASCCrossedUnderMax)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// XCHMA MIN ...
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMASCOverMin ||
|
|
xAU5Conditions.isXCHMASCCrossedOverMin) &&
|
|
(xAU5Conditions.isXCHMASCUnderMin ||
|
|
xAU5Conditions.isXCHMASCCrossedUnderMin)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Check XCHMA Trend Bullish ...
|
|
(
|
|
//
|
|
// All Cycles Bullish ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow)
|
|
//
|
|
&&
|
|
//
|
|
// MC ...
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow)
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Two Cycle Fully Bullish ...
|
|
(
|
|
//
|
|
// SC and MC ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMASCTrendsDown &&
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// MC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// SC and LC ...
|
|
(
|
|
//
|
|
// SC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMASCTrendsDown &&
|
|
(xAU5Conditions.isXCHMASCFastOverSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// MC and LC ...
|
|
(
|
|
//
|
|
// MC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow))
|
|
//
|
|
&&
|
|
//
|
|
// LC ...
|
|
(
|
|
// !xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// XCHMA Check Peaks ...
|
|
!(
|
|
//
|
|
// All Cycles Peak ...
|
|
(
|
|
xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMAMCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
// SC MC ...
|
|
(xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMAMCPeak)
|
|
//
|
|
||
|
|
//
|
|
// SC LC ...
|
|
(xAU5Conditions.isXCHMASCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
||
|
|
//
|
|
// MC LC ...
|
|
(xAU5Conditions.isXCHMAMCPeak &&
|
|
xAU5Conditions.isXCHMALCPeak)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Check XOBD Swings ...
|
|
!xAU5Conditions.isXOBDSwingLow
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXCHMALCPeak &&
|
|
xAU5Conditions.isXTDSignalVale &&
|
|
xAU5Conditions.isXTDBullishVale)
|
|
//
|
|
||
|
|
//
|
|
((xAU5Conditions.isXCHMASCTrendsUp &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow)) &&
|
|
(xAU5Conditions.isXCHMAMCTrendsDown &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow)) &&
|
|
(xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
||
|
|
//
|
|
((xAU5Conditions.isXTMVale ||
|
|
xAU5Conditions.isXTMBearish) &&
|
|
xAU5Conditions.isXTSCurrentMax &&
|
|
xAU5Conditions.isXLHLLDecreased &&
|
|
xAU5Conditions.isXCHLHSCMCLLSame &&
|
|
xAU5Conditions.isXCHLHMCLCHHSame)
|
|
//
|
|
||
|
|
//
|
|
((xAU5Conditions.isXCHMAMCVale &&
|
|
(xAU5Conditions.isXCHMAMCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedUnderSlow)) &&
|
|
(xAU5Conditions.isXCHMALCVale &&
|
|
xAU5Conditions.isXCHMALCTrendsDown &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(xAU5Conditions.isXTMVale &&
|
|
xAU5Conditions.isXAMAVale &&
|
|
xAU5Conditions.isXTSCurrentMin &&
|
|
xAU5Conditions.isXCHLHSCMCLLSame &&
|
|
xAU5Conditions.isXCHLHMCLCHHSame &&
|
|
xAU5Conditions.isXLHLowAttachedLL)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCVale &&
|
|
xAU5Conditions.isXCHMASCTrendsUp &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow) &&
|
|
xAU5Conditions.isXCHMALCPeak &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
||
|
|
//
|
|
((
|
|
//
|
|
(
|
|
(xAU5Conditions.isXTMVale ||
|
|
xAU5Conditions.isXTMBearish) &&
|
|
(xAU5Conditions.isXAMAVale ||
|
|
xAU5Conditions.isXAMABearish) &&
|
|
xAU5Conditions.isXTDSignalVale &&
|
|
xAU5Conditions.isXTDBullishVale)
|
|
//
|
|
) &&
|
|
(xAU5Conditions.isXCHMALCPeak &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow)))
|
|
//
|
|
||
|
|
//
|
|
((xAU5Conditions.isXCHMASCVale &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow)) &&
|
|
(xAU5Conditions.isXCHMAMCVale &&
|
|
(xAU5Conditions.isXCHMAMCFastOverSlow ||
|
|
xAU5Conditions.isXCHMAMCFastCrossedOverSlow)))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
(
|
|
xAU5Conditions.isXCHMASCVale &&
|
|
xAU5Conditions.isXCHMASCTrendsUp &&
|
|
(xAU5Conditions.isXCHMASCFastUnderSlow ||
|
|
xAU5Conditions.isXCHMASCFastCrossedUnderSlow))
|
|
//
|
|
||
|
|
//
|
|
(
|
|
xAU5Conditions.isXTMVale &&
|
|
xAU5Conditions.isXAMAVale &&
|
|
xAU5Conditions.isXTDSignalVale &&
|
|
xAU5Conditions.isXTDBullishVale &&
|
|
xAU5Conditions.isXTMStartBearish &&
|
|
xAU5Conditions.isXAMAStartBearish &&
|
|
xAU5Conditions.isXLHLowAttachedLL)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXTMVale &&
|
|
xAU5Conditions.isXTMNeutural &&
|
|
xAU5Conditions.isXTMEndBearish &&
|
|
xAU5Conditions.isXLHLLDecreased &&
|
|
xAU5Conditions.isXCHLHSCMCLLSame)
|
|
//
|
|
||
|
|
//
|
|
(xAU5Conditions.isXCHMASCVale &&
|
|
xAU5Conditions.isXCHMAMCVale &&
|
|
xAU5Conditions.isXCHMALCPeak &&
|
|
(xAU5Conditions.isXCHMALCFastOverSlow ||
|
|
xAU5Conditions.isXCHMALCFastCrossedOverSlow))
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSI Short Signal Checking ...
|
|
bool XAU5XSIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXSIEnableSignaller ||
|
|
!xAU5MXSIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSTFI Long Signal Checking ...
|
|
bool XAU5XSTFIHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXSTFIEnableSignaller ||
|
|
!xAU5MXSTFIAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XSTFI Short Signal Checking ...
|
|
bool XAU5XSTFIHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXSTFIEnableSignaller ||
|
|
!xAU5MXSTFIAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Long Signal Checking ...
|
|
bool XAU5XOBDLHHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXOBDLHEnableSignaller ||
|
|
!xAU5MXOBDLHAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XOBDLH Short Signal Checking ...
|
|
bool XAU5XOBDLHHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXOBDLHEnableSignaller ||
|
|
!xAU5MXOBDLHAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Long Signal Checking ...
|
|
bool XAU5XCHMACCHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACCEnableSignaller ||
|
|
!xAU5MXCHMACCAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACC Short Signal Checking ...
|
|
bool XAU5XCHMACCHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACCEnableSignaller ||
|
|
!xAU5MXCHMACCAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACMN Long Signal Checking ...
|
|
bool XAU5XCHMACMNHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACMNEnableSignaller ||
|
|
!xAU5MXCHMACMNAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACMN Short Signal Checking ...
|
|
bool XAU5XCHMACMNHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACMNEnableSignaller ||
|
|
!xAU5MXCHMACMNAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACMX Long Signal Checking ...
|
|
bool XAU5XCHMACMXHasLongSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACMXEnableSignaller ||
|
|
!xAU5MXCHMACMXAllowLongSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// XCHMACMX Short Signal Checking ...
|
|
bool XAU5XCHMACMXHasShortSignal()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
if (!xAU5MXCHMACMXEnableSignaller ||
|
|
!xAU5MXCHMACMXAllowShortSignals)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Start Analysing Market based On Conditions ...
|
|
result =
|
|
//
|
|
// Base Condition:
|
|
// each Strategy must has a Base Conditions, which they are usually common combinations
|
|
// of Market Properties that must be happens to lookup for signals ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// Next Step is combine sorts of Conditions which make our choice
|
|
// so Exact in Market ...
|
|
(
|
|
//
|
|
false
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
// 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 ...
|
|
(xAU5Conditions.isXLHPriceInSignalRange &&
|
|
//
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Under Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceUnderSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is Over Signal ...
|
|
(
|
|
//
|
|
((xAU5Conditions.isXLHPriceOverSignal ||
|
|
xAU5Conditions.isXLHPriceCrossedOverSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check Conditions if Price is not has clear state ...
|
|
(
|
|
//
|
|
((!xAU5Conditions.isXLHPriceOverSignal &&
|
|
!xAU5Conditions.isXLHPriceUnderSignal &&
|
|
!xAU5Conditions.isXLHPriceInSignalRange &&
|
|
!xAU5Conditions.isXLHPriceCrossedOverSignal &&
|
|
!xAU5Conditions.isXLHPriceCrossedUnderSignal) &&
|
|
(
|
|
//
|
|
// Next Step is to Check LL and HH Same Style ...
|
|
//
|
|
// Check if Both LL and HH Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If LL Same In Length ...
|
|
((xAU5Conditions.isXLHLLSameInLength &&
|
|
!xAU5Conditions.isXLHHHSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Check If HH is Same In Length ...
|
|
((xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
// Not Same LL or HH in Lenght ...
|
|
((!xAU5Conditions.isXLHHHSameInLength &&
|
|
!xAU5Conditions.isXLHLLSameInLength) &&
|
|
//
|
|
(
|
|
false)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Signal Providers ...
|
|
//
|
|
|
|
//
|
|
// START Utilities ...
|
|
//
|
|
|
|
//
|
|
// Converts Market Conditions to Specific String Representation ...
|
|
string XAU5GetConditionsString(
|
|
XAU5MarketConditions &condition, // Specify Conditiond
|
|
string separator = ",", // Specify Separator
|
|
bool ignoreFalses = true // Ignore False Conditions
|
|
)
|
|
{
|
|
//
|
|
XAU5MarketConditions mConditions = {};
|
|
|
|
//
|
|
mConditions = condition;
|
|
|
|
//
|
|
string result = "\n";
|
|
|
|
//
|
|
// XOBD ...
|
|
result +=
|
|
"| XOBD |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXOBDSwingLow))
|
|
{
|
|
result += "isXOBDSwingLow: " + (string)mConditions.isXOBDSwingLow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXOBDSwingHigh))
|
|
{
|
|
result += "isXOBDSwingHigh: " + (string)mConditions.isXOBDSwingHigh + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XTM ...
|
|
result +=
|
|
"| XTM |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMPeak))
|
|
{
|
|
result += "isXTMPeak: " + (string)mConditions.isXTMPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMVale))
|
|
{
|
|
result += "isXTMVale: " + (string)mConditions.isXTMVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMStartBullish))
|
|
{
|
|
result += "isXTMStartBullish: " + (string)mConditions.isXTMStartBullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMStartBullishAfterNeutural))
|
|
{
|
|
result += "isXTMStartBullishAfterNeutural: " + (string)mConditions.isXTMStartBullishAfterNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMBullish))
|
|
{
|
|
result += "isXTMBullish: " + (string)mConditions.isXTMBullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMEndBullish))
|
|
{
|
|
result += "isXTMEndBullish: " + (string)mConditions.isXTMEndBullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMEndBullishByNeutural))
|
|
{
|
|
result += "isXTMEndBullishByNeutural: " + (string)mConditions.isXTMEndBullishByNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMStartBearish))
|
|
{
|
|
result += "isXTMStartBearish: " + (string)mConditions.isXTMStartBearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMStartBearishAfterNeutural))
|
|
{
|
|
result += "isXTMStartBearishAfterNeutural: " + (string)mConditions.isXTMStartBearishAfterNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMBearish))
|
|
{
|
|
result += "isXTMBearish: " + (string)mConditions.isXTMBearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMEndBearish))
|
|
{
|
|
result += "isXTMEndBearish: " + (string)mConditions.isXTMEndBearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMEndBearishByNeutural))
|
|
{
|
|
result += "isXTMEndBearishByNeutural: " + (string)mConditions.isXTMEndBearishByNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTMNeutural))
|
|
{
|
|
result += "isXTMNeutural: " + (string)mConditions.isXTMNeutural + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XAMA ...
|
|
result +=
|
|
"| XAMA |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAPeak))
|
|
{
|
|
result += "isXAMAPeak: " + (string)mConditions.isXAMAPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAVale))
|
|
{
|
|
result += "isXAMAVale: " + (string)mConditions.isXAMAVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAStartBullish))
|
|
{
|
|
result += "isXAMAStartBullish: " + (string)mConditions.isXAMAStartBullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAStartBullishAfterNeutural))
|
|
{
|
|
result += "isXAMAStartBullishAfterNeutural: " + (string)mConditions.isXAMAStartBullishAfterNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMABullish))
|
|
{
|
|
result += "isXAMABullish: " + (string)mConditions.isXAMABullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAEndBullish))
|
|
{
|
|
result += "isXAMAEndBullish: " + (string)mConditions.isXAMAEndBullish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAEndBullishByNeutural))
|
|
{
|
|
result += "isXAMAEndBullishByNeutural: " + (string)mConditions.isXAMAEndBullishByNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAStartBearish))
|
|
{
|
|
result += "isXAMAStartBearish: " + (string)mConditions.isXAMAStartBearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAStartBearishAfterNeutural))
|
|
{
|
|
result += "isXAMAStartBearishAfterNeutural: " + (string)mConditions.isXAMAStartBearishAfterNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMABearish))
|
|
{
|
|
result += "isXAMABearish: " + (string)mConditions.isXAMABearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAEndBearish))
|
|
{
|
|
result += "isXAMAEndBearish: " + (string)mConditions.isXAMAEndBearish + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMAEndBearishByNeutural))
|
|
{
|
|
result += "isXAMAEndBearishByNeutural: " + (string)mConditions.isXAMAEndBearishByNeutural + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXAMANeutural))
|
|
{
|
|
result += "isXAMANeutural: " + (string)mConditions.isXAMANeutural + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XTD ...
|
|
result +=
|
|
"| XTD |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalPeak))
|
|
{
|
|
result += "isXTDSignalPeak: " + (string)mConditions.isXTDSignalPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalVale))
|
|
{
|
|
result += "isXTDSignalVale: " + (string)mConditions.isXTDSignalVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullishPeak))
|
|
{
|
|
result += "isXTDBullishPeak: " + (string)mConditions.isXTDBullishPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullishVale))
|
|
{
|
|
result += "isXTDBullishVale: " + (string)mConditions.isXTDBullishVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBearishPeak))
|
|
{
|
|
result += "isXTDBearishPeak: " + (string)mConditions.isXTDBearishPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBearishVale))
|
|
{
|
|
result += "isXTDBearishVale: " + (string)mConditions.isXTDBearishVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullOverBear))
|
|
{
|
|
result += "isXTDBullOverBear: " + (string)mConditions.isXTDBullOverBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullUnderBear))
|
|
{
|
|
result += "isXTDBullUnderBear: " + (string)mConditions.isXTDBullUnderBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalOverBear))
|
|
{
|
|
result += "isXTDSignalOverBear: " + (string)mConditions.isXTDSignalOverBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalUnderBear))
|
|
{
|
|
result += "isXTDSignalUnderBear: " + (string)mConditions.isXTDSignalUnderBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullCrossedOverBear))
|
|
{
|
|
result += "isXTDBullCrossedOverBear: " + (string)mConditions.isXTDBullCrossedOverBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDBullCrossedUnderBear))
|
|
{
|
|
result += "isXTDBullCrossedUnderBear: " + (string)mConditions.isXTDBullCrossedUnderBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalCrossedOverBear))
|
|
{
|
|
result += "isXTDSignalCrossedOverBear: " + (string)mConditions.isXTDSignalCrossedOverBear + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTDSignalCrossedUnderBear))
|
|
{
|
|
result += "isXTDSignalCrossedUnderBear: " + (string)mConditions.isXTDSignalCrossedUnderBear + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XFI ...
|
|
result +=
|
|
"| XFI |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFIPeak))
|
|
{
|
|
result += "isXFIPeak: " + (string)mConditions.isXFIPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFIVale))
|
|
{
|
|
result += "isXFIVale: " + (string)mConditions.isXFIVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFIOverZero))
|
|
{
|
|
result += "isXFIOverZero: " + (string)mConditions.isXFIOverZero + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFIUnderZero))
|
|
{
|
|
result += "isXFIUnderZero: " + (string)mConditions.isXFIUnderZero + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFICrossedOverZero))
|
|
{
|
|
result += "isXFICrossedOverZero: " + (string)mConditions.isXFICrossedOverZero + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXFICrossedUnderZero))
|
|
{
|
|
result += "isXFICrossedUnderZero: " + (string)mConditions.isXFICrossedUnderZero + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XTS ...
|
|
result +=
|
|
"| XTS |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSAllSame))
|
|
{
|
|
result += "isXTSAllSame: " + (string)mConditions.isXTSAllSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentMin))
|
|
{
|
|
result += "isXTSCurrentMin: " + (string)mConditions.isXTSCurrentMin + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentMax))
|
|
{
|
|
result += "isXTSCurrentMax: " + (string)mConditions.isXTSCurrentMax + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentOverFarest))
|
|
{
|
|
result += "isXTSCurrentOverFarest: " + (string)mConditions.isXTSCurrentOverFarest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentOverNearest))
|
|
{
|
|
result += "isXTSCurrentOverNearest: " + (string)mConditions.isXTSCurrentOverNearest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentOverMediest))
|
|
{
|
|
result += "isXTSCurrentOverMediest: " + (string)mConditions.isXTSCurrentOverMediest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentUnderFarest))
|
|
{
|
|
result += "isXTSCurrentUnderFarest: " + (string)mConditions.isXTSCurrentUnderFarest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentUnderNearest))
|
|
{
|
|
result += "isXTSCurrentUnderNearest: " + (string)mConditions.isXTSCurrentUnderNearest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentUnderMediest))
|
|
{
|
|
result += "isXTSCurrentUnderMediest: " + (string)mConditions.isXTSCurrentUnderMediest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedOverFarest))
|
|
{
|
|
result += "isXTSCurrentCrossedOverFarest: " + (string)mConditions.isXTSCurrentCrossedOverFarest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedOverNearest))
|
|
{
|
|
result += "isXTSCurrentCrossedOverNearest: " + (string)mConditions.isXTSCurrentCrossedOverNearest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedOverMediest))
|
|
{
|
|
result += "isXTSCurrentCrossedOverMediest: " + (string)mConditions.isXTSCurrentCrossedOverMediest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedUnderFarest))
|
|
{
|
|
result += "isXTSCurrentCrossedUnderFarest: " + (string)mConditions.isXTSCurrentCrossedUnderFarest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedUnderNearest))
|
|
{
|
|
result += "isXTSCurrentCrossedUnderNearest: " + (string)mConditions.isXTSCurrentCrossedUnderNearest + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXTSCurrentCrossedUnderMediest))
|
|
{
|
|
result += "isXTSCurrentCrossedUnderMediest: " + (string)mConditions.isXTSCurrentCrossedUnderMediest + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XLH ...
|
|
result +=
|
|
"| XLH |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHHHIncreased))
|
|
{
|
|
result += "isXLHHHIncreased: " + (string)mConditions.isXLHHHIncreased + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHHHDecreased))
|
|
{
|
|
result += "isXLHHHDecreased: " + (string)mConditions.isXLHHHDecreased + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHLLIncreased))
|
|
{
|
|
result += "isXLHLLIncreased: " + (string)mConditions.isXLHLLIncreased + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHLLDecreased))
|
|
{
|
|
result += "isXLHLLDecreased: " + (string)mConditions.isXLHLLDecreased + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHHighAttachedHH))
|
|
{
|
|
result += "isXLHHighAttachedHH: " + (string)mConditions.isXLHHighAttachedHH + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHLowAttachedLL))
|
|
{
|
|
result += "isXLHLowAttachedLL: " + (string)mConditions.isXLHLowAttachedLL + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHHHSameInLength))
|
|
{
|
|
result += "isXLHHHSameInLength: " + (string)mConditions.isXLHHHSameInLength + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHLLSameInLength))
|
|
{
|
|
result += "isXLHLLSameInLength: " + (string)mConditions.isXLHLLSameInLength + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHPriceCrossedOverSignal))
|
|
{
|
|
result += "isXLHPriceCrossedOverSignal: " + (string)mConditions.isXLHPriceCrossedOverSignal + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHPriceOverSignal))
|
|
{
|
|
result += "isXLHPriceOverSignal: " + (string)mConditions.isXLHPriceOverSignal + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHPriceCrossedUnderSignal))
|
|
{
|
|
result += "isXLHPriceCrossedUnderSignal: " + (string)mConditions.isXLHPriceCrossedUnderSignal + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHPriceUnderSignal))
|
|
{
|
|
result += "isXLHPriceUnderSignal: " + (string)mConditions.isXLHPriceUnderSignal + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXLHPriceInSignalRange))
|
|
{
|
|
result += "isXLHPriceInSignalRange: " + (string)mConditions.isXLHPriceInSignalRange + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XRSI ...
|
|
result +=
|
|
"| XRSI |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSIPeak))
|
|
{
|
|
result += "isXRSIPeak: " + (string)mConditions.isXRSIPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSIVale))
|
|
{
|
|
result += "isXRSIVale: " + (string)mConditions.isXRSIVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSICrossedOverLongExit))
|
|
{
|
|
result += "isXRSICrossedOverLongExit: " + (string)mConditions.isXRSICrossedOverLongExit + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSICrossedOverLongEntry))
|
|
{
|
|
result += "isXRSICrossedOverLongEntry: " + (string)mConditions.isXRSICrossedOverLongEntry + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSICrossedUnderShortExit))
|
|
{
|
|
result += "isXRSICrossedUnderShortExit: " + (string)mConditions.isXRSICrossedUnderShortExit + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXRSICrossedUnderShortEntry))
|
|
{
|
|
result += "isXRSICrossedUnderShortEntry: " + (string)mConditions.isXRSICrossedUnderShortEntry + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XCHLH ...
|
|
result +=
|
|
"| XCHLH |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSameHHs))
|
|
{
|
|
result += "isXCHLHSameHHs: " + (string)mConditions.isXCHLHSameHHs + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSameLLs))
|
|
{
|
|
result += "isXCHLHSameLLs: " + (string)mConditions.isXCHLHSameLLs + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSCMCHHSame))
|
|
{
|
|
result += "isXCHLHSCMCHHSame: " + (string)mConditions.isXCHLHSCMCHHSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSCMCLLSame))
|
|
{
|
|
result += "isXCHLHSCMCLLSame: " + (string)mConditions.isXCHLHSCMCLLSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSCLCHHSame))
|
|
{
|
|
result += "isXCHLHSCLCHHSame: " + (string)mConditions.isXCHLHSCLCHHSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHSCLCLLSame))
|
|
{
|
|
result += "isXCHLHSCLCLLSame: " + (string)mConditions.isXCHLHSCLCLLSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHMCLCHHSame))
|
|
{
|
|
result += "isXCHLHMCLCHHSame: " + (string)mConditions.isXCHLHMCLCHHSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHMCLCLLSame))
|
|
{
|
|
result += "isXCHLHMCLCLLSame: " + (string)mConditions.isXCHLHMCLCLLSame + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHMCOnTopOfLC))
|
|
{
|
|
result += "isXCHLHMCOnTopOfLC: " + (string)mConditions.isXCHLHMCOnTopOfLC + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHLHMCInBottomOfLC))
|
|
{
|
|
result += "isXCHLHMCInBottomOfLC: " + (string)mConditions.isXCHLHMCInBottomOfLC + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
// XCHMA ...
|
|
result +=
|
|
"| XCHMA |" + separator;
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCOverMax))
|
|
{
|
|
result += "isXCHMASCOverMax: " + (string)mConditions.isXCHMASCOverMax + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCOverMin))
|
|
{
|
|
result += "isXCHMASCOverMin: " + (string)mConditions.isXCHMASCOverMin + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCUnderMax))
|
|
{
|
|
result += "isXCHMASCUnderMax: " + (string)mConditions.isXCHMASCUnderMax + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCUnderMin))
|
|
{
|
|
result += "isXCHMASCUnderMin: " + (string)mConditions.isXCHMASCUnderMin + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCCrossedOverMax))
|
|
{
|
|
result += "isXCHMASCCrossedOverMax: " + (string)mConditions.isXCHMASCCrossedOverMax + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCCrossedUnderMax))
|
|
{
|
|
result += "isXCHMASCCrossedUnderMax: " + (string)mConditions.isXCHMASCCrossedUnderMax + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCCrossedOverMin))
|
|
{
|
|
result += "isXCHMASCCrossedOverMin: " + (string)mConditions.isXCHMASCCrossedOverMin + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCCrossedUnderMin))
|
|
{
|
|
result += "isXCHMASCCrossedUnderMin: " + (string)mConditions.isXCHMASCCrossedUnderMin + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCPeak))
|
|
{
|
|
result += "isXCHMASCPeak: " + (string)mConditions.isXCHMASCPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCVale))
|
|
{
|
|
result += "isXCHMASCVale: " + (string)mConditions.isXCHMASCVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCTrendsUp))
|
|
{
|
|
result += "isXCHMASCTrendsUp: " + (string)mConditions.isXCHMASCTrendsUp + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCTrendsDown))
|
|
{
|
|
result += "isXCHMASCTrendsDown: " + (string)mConditions.isXCHMASCTrendsDown + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCFastOverSlow))
|
|
{
|
|
result += "isXCHMASCFastOverSlow: " + (string)mConditions.isXCHMASCFastOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCFastUnderSlow))
|
|
{
|
|
result += "isXCHMASCFastUnderSlow: " + (string)mConditions.isXCHMASCFastUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCFastCrossedOverSlow))
|
|
{
|
|
result += "isXCHMASCFastCrossedOverSlow: " + (string)mConditions.isXCHMASCFastCrossedOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMASCFastCrossedUnderSlow))
|
|
{
|
|
result += "isXCHMASCFastCrossedUnderSlow: " + (string)mConditions.isXCHMASCFastCrossedUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCPeak))
|
|
{
|
|
result += "isXCHMAMCPeak: " + (string)mConditions.isXCHMAMCPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCVale))
|
|
{
|
|
result += "isXCHMAMCVale: " + (string)mConditions.isXCHMAMCVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCTrendsUp))
|
|
{
|
|
result += "isXCHMAMCTrendsUp: " + (string)mConditions.isXCHMAMCTrendsUp + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCTrendsDown))
|
|
{
|
|
result += "isXCHMAMCTrendsDown: " + (string)mConditions.isXCHMAMCTrendsDown + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCFastOverSlow))
|
|
{
|
|
result += "isXCHMAMCFastOverSlow: " + (string)mConditions.isXCHMAMCFastOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCFastUnderSlow))
|
|
{
|
|
result += "isXCHMAMCFastUnderSlow: " + (string)mConditions.isXCHMAMCFastUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCFastCrossedOverSlow))
|
|
{
|
|
result += "isXCHMAMCFastCrossedOverSlow: " + (string)mConditions.isXCHMAMCFastCrossedOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMAMCFastCrossedUnderSlow))
|
|
{
|
|
result += "isXCHMAMCFastCrossedUnderSlow: " + (string)mConditions.isXCHMAMCFastCrossedUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCPeak))
|
|
{
|
|
result += "isXCHMALCPeak: " + (string)mConditions.isXCHMALCPeak + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCVale))
|
|
{
|
|
result += "isXCHMALCVale: " + (string)mConditions.isXCHMALCVale + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCTrendsUp))
|
|
{
|
|
result += "isXCHMALCTrendsUp: " + (string)mConditions.isXCHMALCTrendsUp + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCTrendsDown))
|
|
{
|
|
result += "isXCHMALCTrendsDown: " + (string)mConditions.isXCHMALCTrendsDown + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCFastOverSlow))
|
|
{
|
|
result += "isXCHMALCFastOverSlow: " + (string)mConditions.isXCHMALCFastOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCFastUnderSlow))
|
|
{
|
|
result += "isXCHMALCFastUnderSlow: " + (string)mConditions.isXCHMALCFastUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCFastCrossedOverSlow))
|
|
{
|
|
result += "isXCHMALCFastCrossedOverSlow: " + (string)mConditions.isXCHMALCFastCrossedOverSlow + separator;
|
|
}
|
|
|
|
//
|
|
if (
|
|
!ignoreFalses ||
|
|
(ignoreFalses && mConditions.isXCHMALCFastCrossedUnderSlow))
|
|
{
|
|
result += "isXCHMALCFastCrossedUnderSlow: " + (string)mConditions.isXCHMALCFastCrossedUnderSlow + separator;
|
|
}
|
|
|
|
//
|
|
// Separator ...
|
|
result += separator;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
void Add(
|
|
ENUM_XAU5_SIGNAL_PROVIDERS item,
|
|
ENUM_XAU5_SIGNAL_PROVIDERS &items[])
|
|
{
|
|
//
|
|
ArrayResize(
|
|
items,
|
|
ArraySize(items) + 1);
|
|
|
|
//
|
|
items[ArraySize(items) - 1] = item;
|
|
}
|
|
//
|
|
// START Utilities ...
|
|
// |