Initial Commit ...
This commit is contained in:
@@ -0,0 +1,407 @@
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user