apply XWZ Signals in Quarters ...
required to apply R2R and Targets ... required to Apply Max Allowed TP ... required to Apply Guards ... required to Apply Tragets ...
This commit is contained in:
@@ -34,6 +34,7 @@ enum ENUM_X121SMC_XWZ_PRIORITY
|
||||
X121SMC_XWZ_PRIORITY_LOW,
|
||||
X121SMC_XWZ_PRIORITY_REGULAR,
|
||||
X121SMC_XWZ_PRIORITY_HIGH,
|
||||
X121SMC_XWZ_PRIORITY_STRONG_HIGH,
|
||||
};
|
||||
|
||||
//
|
||||
@@ -2879,6 +2880,134 @@ struct X121SMCStrategyXWZSignalConditions
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
void DetectPriority(
|
||||
ENUM_X121SMC_XWZ_PRIORITY &bullish,
|
||||
ENUM_X121SMC_XWZ_PRIORITY &bearish,
|
||||
int barIndex = 0,
|
||||
ENUM_TIMEFRAMES forPeriod = NULL //
|
||||
)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_NONE;
|
||||
bearish = X121SMC_XWZ_PRIORITY_NONE;
|
||||
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
if (!IsValid(forPeriod))
|
||||
{
|
||||
forPeriod = period;
|
||||
}
|
||||
|
||||
//
|
||||
bool hasWorkingZone = HasWorkingZone();
|
||||
if (!hasWorkingZone)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL zBar;
|
||||
bool isInited = zBar.Init(
|
||||
symbol,
|
||||
forPeriod,
|
||||
barIndex //
|
||||
);
|
||||
if (!isInited)
|
||||
{
|
||||
//
|
||||
zBar.Clean();
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL cBar;
|
||||
isInited = zBar.GetPreviousBar(cBar);
|
||||
if (!isInited)
|
||||
{
|
||||
//
|
||||
zBar.Clean();
|
||||
cBar.Clean();
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// ZoneUpper, Upper ...
|
||||
if (cBar.low > workingZone.upper &&
|
||||
cBar.high < workingZone.zoneUpper &&
|
||||
zBar.low > workingZone.upper &&
|
||||
zBar.high < workingZone.zoneUpper)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_NONE;
|
||||
bearish = X121SMC_XWZ_PRIORITY_STRONG_HIGH;
|
||||
}
|
||||
//
|
||||
// Upper, Quarter1 ...
|
||||
else if (cBar.low > workingZone.quarter1 &&
|
||||
cBar.high < workingZone.upper &&
|
||||
zBar.low > workingZone.quarter1 &&
|
||||
zBar.high < workingZone.upper)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_WEAK;
|
||||
bearish = X121SMC_XWZ_PRIORITY_HIGH;
|
||||
}
|
||||
//
|
||||
// Quarter1, Quarter2 ...
|
||||
else if (cBar.low > workingZone.quarter2 &&
|
||||
cBar.high < workingZone.quarter1 &&
|
||||
zBar.low > workingZone.quarter2 &&
|
||||
zBar.high < workingZone.quarter1)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_LOW;
|
||||
bearish = X121SMC_XWZ_PRIORITY_REGULAR;
|
||||
}
|
||||
//
|
||||
// Quarter2, Quarter3 ...
|
||||
else if (cBar.low > workingZone.quarter3 &&
|
||||
cBar.high < workingZone.quarter2 &&
|
||||
zBar.low > workingZone.quarter3 &&
|
||||
zBar.high < workingZone.quarter2)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_REGULAR;
|
||||
bearish = X121SMC_XWZ_PRIORITY_LOW;
|
||||
}
|
||||
//
|
||||
// Quarter3, Lower ...
|
||||
else if (cBar.low > workingZone.lower &&
|
||||
cBar.high < workingZone.quarter3 &&
|
||||
zBar.low > workingZone.lower &&
|
||||
zBar.high < workingZone.quarter3)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_HIGH;
|
||||
bearish = X121SMC_XWZ_PRIORITY_WEAK;
|
||||
}
|
||||
//
|
||||
// Lower, ZoneLower ...
|
||||
else if (cBar.low > workingZone.zoneLower &&
|
||||
cBar.high < workingZone.lower &&
|
||||
zBar.low > workingZone.zoneLower &&
|
||||
zBar.high < workingZone.lower)
|
||||
{
|
||||
//
|
||||
bullish = X121SMC_XWZ_PRIORITY_STRONG_HIGH;
|
||||
bearish = X121SMC_XWZ_PRIORITY_NONE;
|
||||
}
|
||||
|
||||
//
|
||||
zBar.Clean();
|
||||
cBar.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
double GetEntry()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user