408 lines
9.9 KiB
Plaintext
408 lines
9.9 KiB
Plaintext
//
|
|
// Check Market Conditions by Combination of Power of All tools for LONGs ...
|
|
bool XEU5HasLongSignal(
|
|
double &providedSignals // Recieve Which Number of Providers has Conditions here, used for Volume Increasing
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
ENUM_XEU5_SIGNAL_METHODS methods[];
|
|
|
|
//
|
|
// START Custom Mechanism ...
|
|
//
|
|
|
|
//
|
|
// Required Data ...
|
|
double entry = GetEntry(X_SIGNAL_LONG);
|
|
double nearHH = GetHighestHigh(3, 1);
|
|
double nearLL = GetLowestLow(3, 1);
|
|
XOHCL candle1 = GetCandle(1);
|
|
|
|
//
|
|
bool isSharpChanged = IsSharpChanged(
|
|
5,
|
|
1,
|
|
xTMMaBuffer);
|
|
|
|
//
|
|
bool isCandleSharpChanged = IsSharpChanged(
|
|
5,
|
|
1,
|
|
PRICE_CLOSE);
|
|
|
|
//
|
|
bool isXTDVerified =
|
|
//
|
|
true
|
|
//
|
|
// (
|
|
// //
|
|
// conditions.isXLHHHSameInLength &&
|
|
// conditions.isXLHLLSameInLength &&
|
|
// conditions.isXLHPriceInSignalRange
|
|
// //
|
|
// &&
|
|
// //
|
|
// conditions.isXCHMAMCPeak &&
|
|
// conditions.isXCHMALCPeak
|
|
// //
|
|
// &&
|
|
// //
|
|
// conditions.isXCHMAMCTrendsDown
|
|
// //
|
|
// &&
|
|
// //
|
|
// conditions.isXTMStartBullishAfterNeutural
|
|
// //
|
|
// ?
|
|
// //
|
|
// !conditions.isXTDBullCrossedOverBear
|
|
// //
|
|
// :
|
|
// //
|
|
// true
|
|
// //
|
|
// )
|
|
//
|
|
;
|
|
|
|
//
|
|
bool isXCHMAUpState =
|
|
(
|
|
//
|
|
(
|
|
//
|
|
conditions.isXCHMASCFastCrossedOverSlow &&
|
|
conditions.isXCHMAMCFastOverSlow &&
|
|
conditions.isXCHMALCFastOverSlow
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
conditions.isXCHMASCFastOverSlow &&
|
|
conditions.isXCHMAMCFastCrossedOverSlow &&
|
|
conditions.isXCHMALCFastOverSlow
|
|
//
|
|
)
|
|
//
|
|
||
|
|
//
|
|
(
|
|
//
|
|
conditions.isXCHMASCFastOverSlow &&
|
|
conditions.isXCHMAMCFastOverSlow &&
|
|
conditions.isXCHMALCFastCrossedOverSlow
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
bool isXCHMAVerified =
|
|
//
|
|
isXCHMAUpState
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
//
|
|
conditions.isXLHHHSameInLength &&
|
|
conditions.isXCHMAMCFastOverSlow &&
|
|
conditions.isXLHPriceUnderSignal &&
|
|
conditions.isXTMStartBullishAfterNeutural
|
|
? !conditions.isXCHMAMCTrendsDown
|
|
: true
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
//
|
|
conditions.isXLHHHSameInLength &&
|
|
conditions.isXLHLLSameInLength
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
//
|
|
conditions.isXLHPriceOverSignal &&
|
|
conditions.isXCHMAMCFastOverSlow &&
|
|
conditions.isXCHMALCFastOverSlow &&
|
|
conditions.isXCHMASCFastCrossedOverSlow &&
|
|
MathMin(xCHMAMcFastBuffer[1], xCHMAMcSlowBuffer[1]) > MathMax(xCHMALcFastBuffer[1], xCHMALcSlowBuffer[1]) &&
|
|
MathMin(xCHMAScFastBuffer[1], xCHMAScSlowBuffer[1]) > MathMax(xCHMAMcFastBuffer[1], xCHMAMcSlowBuffer[1])
|
|
//
|
|
?
|
|
//
|
|
entry < nearHH
|
|
//
|
|
:
|
|
//
|
|
true
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
//
|
|
conditions.isXLHPriceInSignalRange
|
|
//
|
|
)
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
bool isXCHLHVerified =
|
|
//
|
|
(
|
|
//
|
|
conditions.isXCHMAMCPeak &&
|
|
conditions.isXCHMALCPeak &&
|
|
conditions.isXLHPriceOverSignal &&
|
|
conditions.isXCHMASCFastCrossedOverSlow
|
|
//
|
|
?
|
|
//
|
|
entry < nearHH
|
|
//
|
|
:
|
|
//
|
|
true
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
conditions.isXCHLHSCMCHHSame
|
|
//
|
|
?
|
|
//
|
|
entry < xCHLHMcHHBuffer[1]
|
|
//
|
|
:
|
|
//
|
|
true
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
!(
|
|
//
|
|
conditions.isXCHMASCPeak &&
|
|
conditions.isXCHMAMCPeak &&
|
|
conditions.isXCHMALCPeak &&
|
|
conditions.isXCHLHSameHHs &&
|
|
conditions.isXCHLHSCMCHHSame &&
|
|
conditions.isXCHLHSCLCHHSame &&
|
|
conditions.isXCHLHMCLCHHSame &&
|
|
conditions.isXLHPriceOverSignal
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
!(
|
|
//
|
|
xCHLHMcHHBuffer[1] == xCHLHMcHHBuffer[2] &&
|
|
xCHLHMcHHBuffer[2] == xCHLHMcHHBuffer[3] &&
|
|
xCHLHMcHHBuffer[3] == xCHLHMcHHBuffer[4] &&
|
|
xCHLHMcHHBuffer[4] == xCHLHMcHHBuffer[5] &&
|
|
//
|
|
xCHLHMcLLBuffer[1] == xCHLHMcLLBuffer[2] &&
|
|
xCHLHMcLLBuffer[2] == xCHLHMcLLBuffer[3] &&
|
|
xCHLHMcLLBuffer[3] == xCHLHMcLLBuffer[4] &&
|
|
xCHLHMcLLBuffer[4] == xCHLHMcLLBuffer[5] &&
|
|
//
|
|
xCHLHLcHHBuffer[1] == xCHLHLcHHBuffer[2] &&
|
|
xCHLHLcHHBuffer[2] == xCHLHLcHHBuffer[3] &&
|
|
xCHLHLcHHBuffer[3] == xCHLHLcHHBuffer[4] &&
|
|
xCHLHLcHHBuffer[4] == xCHLHLcHHBuffer[5] &&
|
|
//
|
|
xCHLHLcLLBuffer[1] == xCHLHLcLLBuffer[2] &&
|
|
xCHLHLcLLBuffer[2] == xCHLHLcLLBuffer[3] &&
|
|
xCHLHLcLLBuffer[3] == xCHLHLcLLBuffer[4] &&
|
|
xCHLHLcLLBuffer[4] == xCHLHLcLLBuffer[5] &&
|
|
//
|
|
xCHLHScHHBuffer[1] < xCHLHMcHHBuffer[1] &&
|
|
xCHLHScLLBuffer[1] > xCHLHMcLLBuffer[1] &&
|
|
//
|
|
conditions.isXLHPriceOverSignal &&
|
|
//
|
|
conditions.isXTDSignalUnderBear &&
|
|
//
|
|
conditions.isXCHMAMCPeak &&
|
|
conditions.isXCHMALCPeak
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
// Condition 1 ...
|
|
// this Method waits for XCHMA Short Cycle's Fast to Going down
|
|
// of all Cycles Minimum Value, then Check when its Crossed Over
|
|
// min value and then start to Open Long Trades based On Conditions,
|
|
// and Recieved Verifications from other Indicator/Oscillator(s) ...
|
|
bool customMethodCond1 =
|
|
//
|
|
conditions.isXOBDSwingLow
|
|
//
|
|
&&
|
|
//
|
|
isXTDVerified
|
|
//
|
|
&&
|
|
//
|
|
isXCHMAVerified
|
|
//
|
|
&&
|
|
//
|
|
isXCHLHVerified
|
|
//
|
|
&&
|
|
//
|
|
!(
|
|
//
|
|
conditions.isXCHLHSameHHs &&
|
|
conditions.isXLHLowAttachedLL &&
|
|
conditions.isXLHHighAttachedHH
|
|
//
|
|
)
|
|
//
|
|
&&
|
|
//
|
|
(
|
|
conditions.isXTMStartBullishAfterNeutural &&
|
|
conditions.isXTDSignalUnderBear &&
|
|
conditions.isXLHPriceOverSignal &&
|
|
conditions.isXCHMASCFastCrossedOverSlow
|
|
//
|
|
?
|
|
//
|
|
!conditions.isXCHMAMCTrendsDown
|
|
//
|
|
:
|
|
//
|
|
true
|
|
//
|
|
)
|
|
//
|
|
;
|
|
|
|
//
|
|
// Filling Methods ...
|
|
if (customMethodCond1)
|
|
{
|
|
//
|
|
ArrayResize(
|
|
methods,
|
|
ArraySize(methods) + 1);
|
|
|
|
//
|
|
methods[ArraySize(methods) - 1] = X_SIGNAL_METHOD_1;
|
|
}
|
|
|
|
//
|
|
// Condition 2 ...
|
|
// this Method waits for XCHMA Medium Cycles Fast Line Crossed Over Slow,
|
|
// then start to Open Long Trades based On Conditions, and Recieved Verifications from
|
|
// other Indicator/Oscillator(s) ...
|
|
bool customMethodCond2 =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
|
|
//
|
|
// Filling Methods ...
|
|
if (customMethodCond2)
|
|
{
|
|
//
|
|
ArrayResize(
|
|
methods,
|
|
ArraySize(methods) + 1);
|
|
|
|
//
|
|
methods[ArraySize(methods) - 1] = X_SIGNAL_METHOD_2;
|
|
}
|
|
|
|
//
|
|
// Condition 3 ...
|
|
// this Method waits for XCHMA Short Cycle's Fast to Crossed Over all Cycles max value
|
|
// and then start to Open Long Trades based On Conditions,
|
|
// and Recieved Verifications from other Indicator/Oscillator(s) ...
|
|
bool customMethodCond3 =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
|
|
//
|
|
// Filling Methods ...
|
|
if (customMethodCond3)
|
|
{
|
|
//
|
|
ArrayResize(
|
|
methods,
|
|
ArraySize(methods) + 1);
|
|
|
|
//
|
|
methods[ArraySize(methods) - 1] = X_SIGNAL_METHOD_3;
|
|
}
|
|
|
|
//
|
|
// Combine Custom Methods together ...
|
|
bool isCustomMethodHasSignal =
|
|
//
|
|
customMethodCond1
|
|
//
|
|
||
|
|
//
|
|
customMethodCond2
|
|
//
|
|
||
|
|
//
|
|
customMethodCond3
|
|
//
|
|
;
|
|
|
|
//
|
|
// END Custom Mechanism ...
|
|
//
|
|
|
|
//
|
|
result =
|
|
//
|
|
isCustomMethodHasSignal
|
|
//
|
|
;
|
|
|
|
//
|
|
if (result)
|
|
{
|
|
//
|
|
// Set Number of Occured Conditions for Increasing Volume ...
|
|
providedSignals = ArraySize(methods);
|
|
|
|
//
|
|
// TODO: Remove This for Production ...
|
|
string msg = XEU5GetConditionsString("\n");
|
|
LogMessage(msg);
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|