Files
xMQL5/BKPS/Series2/Temp/xe5.longs.conditions.txt
T
2024-01-25 04:09:42 +03:30

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;
}