add support of Consolidation Zone ibside XPOIDetector and XPOIState ...

This commit is contained in:
2025-02-26 22:34:40 +03:30
parent 476bcaece8
commit af9c398338
14 changed files with 1993 additions and 1986 deletions
+223 -223
View File
@@ -489,172 +489,172 @@ bool DetectX121SMCGuards(
//
//
//
// Detect Consolidation Zone ...
// //
// // Detect Consolidation Zone ...
//
// Detect Consolidation Zones ...
// //
// // Detect Consolidation Zones ...
//
XBoxZone lastBullishBox;
XBoxZone prevLastBullishBox;
bool hasLastBullishBox = false;
bool hasPrevLastBullishBox = false;
XConsolidationZone lastBullishZone;
bool isLastBullishAbovePrev = false;
bool isLastBullishBelowPrev = false;
XConsolidationZone prevLastBullishZone;
// //
// XBoxZone lastBullishBox;
// XBoxZone prevLastBullishBox;
// bool hasLastBullishBox = false;
// bool hasPrevLastBullishBox = false;
// XConsolidationZone lastBullishZone;
// bool isLastBullishAbovePrev = false;
// bool isLastBullishBelowPrev = false;
// XConsolidationZone prevLastBullishZone;
//
XBoxZone lastBearishBox;
XBoxZone prevLastBearishBox;
bool hasLastBearishBox = false;
bool hasPrevLastBearishBox = false;
XConsolidationZone lastBearishZone;
bool isLastBearishAbovePrev = false;
bool isLastBearishBelowPrev = false;
XConsolidationZone prevLastBearishZone;
// //
// XBoxZone lastBearishBox;
// XBoxZone prevLastBearishBox;
// bool hasLastBearishBox = false;
// bool hasPrevLastBearishBox = false;
// XConsolidationZone lastBearishZone;
// bool isLastBearishAbovePrev = false;
// bool isLastBearishBelowPrev = false;
// XConsolidationZone prevLastBearishZone;
//
int bullishConsolidationZonesCount = 0;
int bearishConsolidationZonesCount = 0;
bool hasBullishConsolidationZones = false;
bool hasBearishConsolidationZones = false;
XConsolidationZone bullishConsolidationZones[];
XConsolidationZone bearishConsolidationZones[];
bool hasConsolidationZones = decisionCycleHelper.HasConsolidationZones();
int consolidationZonesCount = decisionCycleHelper.CountConsolidationZones();
if (hasConsolidationZones)
{
//
bullishConsolidationZonesCount = decisionCycleHelper
.FillConsolidationZones(
X_DIRECTION_BULLISH,
bullishConsolidationZones //
);
hasBullishConsolidationZones = IsValidSize(bullishConsolidationZonesCount);
// //
// int bullishConsolidationZonesCount = 0;
// int bearishConsolidationZonesCount = 0;
// bool hasBullishConsolidationZones = false;
// bool hasBearishConsolidationZones = false;
// XConsolidationZone bullishConsolidationZones[];
// XConsolidationZone bearishConsolidationZones[];
// bool hasConsolidationZones = decisionCycleHelper.HasConsolidationZones();
// int consolidationZonesCount = decisionCycleHelper.CountConsolidationZones();
// if (hasConsolidationZones)
// {
// //
// bullishConsolidationZonesCount = decisionCycleHelper
// .FillConsolidationZones(
// X_DIRECTION_BULLISH,
// bullishConsolidationZones //
// );
// hasBullishConsolidationZones = IsValidSize(bullishConsolidationZonesCount);
//
bearishConsolidationZonesCount = decisionCycleHelper
.FillConsolidationZones(
X_DIRECTION_BEARISH,
bearishConsolidationZones //
);
hasBearishConsolidationZones = IsValidSize(bearishConsolidationZonesCount);
// //
// bearishConsolidationZonesCount = decisionCycleHelper
// .FillConsolidationZones(
// X_DIRECTION_BEARISH,
// bearishConsolidationZones //
// );
// hasBearishConsolidationZones = IsValidSize(bearishConsolidationZonesCount);
//
//
//
// //
// //
// //
//
if (hasBullishConsolidationZones &&
bullishConsolidationZonesCount >= 2)
{
//
lastBullishZone = bullishConsolidationZones[bullishConsolidationZonesCount - 1];
prevLastBullishZone = bullishConsolidationZones[bullishConsolidationZonesCount - 2];
// //
// if (hasBullishConsolidationZones &&
// bullishConsolidationZonesCount >= 2)
// {
// //
// lastBullishZone = bullishConsolidationZones[bullishConsolidationZonesCount - 1];
// prevLastBullishZone = bullishConsolidationZones[bullishConsolidationZonesCount - 2];
//
hasLastBullishBox = ToBox(
lastBullishBox,
lastBullishZone //
);
hasPrevLastBullishBox = ToBox(
prevLastBullishBox,
prevLastBullishZone //
);
// //
// hasLastBullishBox = ToBox(
// lastBullishBox,
// lastBullishZone //
// );
// hasPrevLastBullishBox = ToBox(
// prevLastBullishBox,
// prevLastBullishZone //
// );
//
isLastBullishAbovePrev = hasLastBullishBox &&
hasPrevLastBullishBox &&
IsBoxAbove(
lastBullishBox,
prevLastBullishBox //
);
// //
// isLastBullishAbovePrev = hasLastBullishBox &&
// hasPrevLastBullishBox &&
// IsBoxAbove(
// lastBullishBox,
// prevLastBullishBox //
// );
//
isLastBullishBelowPrev = hasLastBullishBox &&
hasPrevLastBullishBox &&
IsBoxBelow(
lastBullishBox,
prevLastBullishBox //
);
}
// //
// isLastBullishBelowPrev = hasLastBullishBox &&
// hasPrevLastBullishBox &&
// IsBoxBelow(
// lastBullishBox,
// prevLastBullishBox //
// );
// }
//
if (hasBearishConsolidationZones &&
bearishConsolidationZonesCount >= 2)
{
//
lastBearishZone = bearishConsolidationZones[bearishConsolidationZonesCount - 1];
prevLastBearishZone = bearishConsolidationZones[bearishConsolidationZonesCount - 2];
// //
// if (hasBearishConsolidationZones &&
// bearishConsolidationZonesCount >= 2)
// {
// //
// lastBearishZone = bearishConsolidationZones[bearishConsolidationZonesCount - 1];
// prevLastBearishZone = bearishConsolidationZones[bearishConsolidationZonesCount - 2];
//
hasLastBearishBox = ToBox(
lastBearishBox,
lastBearishZone //
);
hasPrevLastBearishBox = ToBox(
prevLastBearishBox,
prevLastBearishZone //
);
// //
// hasLastBearishBox = ToBox(
// lastBearishBox,
// lastBearishZone //
// );
// hasPrevLastBearishBox = ToBox(
// prevLastBearishBox,
// prevLastBearishZone //
// );
//
isLastBearishAbovePrev = hasLastBearishBox &&
hasPrevLastBearishBox &&
IsBoxAbove(
lastBearishBox,
prevLastBearishBox //
);
// //
// isLastBearishAbovePrev = hasLastBearishBox &&
// hasPrevLastBearishBox &&
// IsBoxAbove(
// lastBearishBox,
// prevLastBearishBox //
// );
//
isLastBearishBelowPrev = hasLastBearishBox &&
hasPrevLastBearishBox &&
IsBoxBelow(
lastBearishBox,
prevLastBearishBox //
);
}
// //
// isLastBearishBelowPrev = hasLastBearishBox &&
// hasPrevLastBearishBox &&
// IsBoxBelow(
// lastBearishBox,
// prevLastBearishBox //
// );
// }
//
}
// //
// }
//
// Detect High Probability Swings ...
bool isSwingLow =
//
cBar.low > pBar.low &&
ppBar.low > pBar.low &&
//
zBar.low > pBar.low
//
;
bool isSwingHigh =
//
cBar.high < pBar.high &&
ppBar.high < pBar.high &&
//
zBar.high < pBar.high
//
;
bool isStrongSwingLow =
pBar.IsBullish() &&
pBar.GetLowShadow() >= pBar.GetBody() * 2;
bool isStrongSwingHigh =
pBar.IsBearish() &&
pBar.GetHighShadow() >= pBar.GetBody() * 2;
// bool isSwingLow =
// //
// cBar.low > pBar.low &&
// ppBar.low > pBar.low &&
// //
// zBar.low > pBar.low
// //
// ;
// bool isSwingHigh =
// //
// cBar.high < pBar.high &&
// ppBar.high < pBar.high &&
// //
// zBar.high < pBar.high
// //
// ;
// bool isStrongSwingLow =
// pBar.IsBullish() &&
// pBar.GetLowShadow() >= pBar.GetBody() * 2;
// bool isStrongSwingHigh =
// pBar.IsBearish() &&
// pBar.GetHighShadow() >= pBar.GetBody() * 2;
//
bool isStrongSwingLowAboveLastBullishBox =
isStrongSwingLow &&
hasLastBullishBox &&
pBar.low > lastBullishBox.upper;
// //
// bool isStrongSwingLowAboveLastBullishBox =
// isStrongSwingLow &&
// hasLastBullishBox &&
// pBar.low > lastBullishBox.upper;
//
bool isStrongSwingHighBelowLastBearishBox =
isStrongSwingHigh &&
hasLastBearishBox &&
pBar.high < lastBearishBox.lower;
// //
// bool isStrongSwingHighBelowLastBearishBox =
// isStrongSwingHigh &&
// hasLastBearishBox &&
// pBar.high < lastBearishBox.lower;
//
// Here We Have all Requirements for Guarding Positions ...
@@ -822,82 +822,82 @@ bool DetectX121SMCGuards(
// - occures two same type consolidation zones in order of positions type;
// - occures a swing in order of consolidation zones ...
//
bool canTrailBasedOnTwoZone =
isLong
? isLastBullishAbovePrev
: isLastBearishBelowPrev;
if (canTrailBasedOnTwoZone)
{
//
trailedStop =
isLong
? prevLastBullishBox.lower
: prevLastBearishBox.upper;
}
// //
// bool canTrailBasedOnTwoZone =
// isLong
// ? isLastBullishAbovePrev
// : isLastBearishBelowPrev;
// if (canTrailBasedOnTwoZone)
// {
// //
// trailedStop =
// isLong
// ? prevLastBullishBox.lower
// : prevLastBearishBox.upper;
// }
//
bool canTrailBasedOnZoneSwing =
trailedStop <= 0 &&
(isLong
? isStrongSwingLowAboveLastBullishBox
: isStrongSwingHighBelowLastBearishBox);
if (canTrailBasedOnZoneSwing)
{
//
trailedStop =
isLong
? pBar.low
: pBar.high;
}
// //
// bool canTrailBasedOnZoneSwing =
// trailedStop <= 0 &&
// (isLong
// ? isStrongSwingLowAboveLastBullishBox
// : isStrongSwingHighBelowLastBearishBox);
// if (canTrailBasedOnZoneSwing)
// {
// //
// trailedStop =
// isLong
// ? pBar.low
// : pBar.high;
// }
//
bool canDoTrailStop =
trailedStop > 0 &&
(
//
iPosition.sl == 0
? (isLong
? trailedStop > iPosition.entry &&
trailedStop < iPosition.price
: trailedStop < iPosition.entry &&
trailedStop > iPosition.price)
: (isLong
? trailedStop > iPosition.sl &&
trailedStop > iPosition.entry &&
trailedStop < iPosition.price
: trailedStop < iPosition.sl &&
trailedStop < iPosition.entry &&
trailedStop > iPosition.price)
//
)
//
;
// //
// bool canDoTrailStop =
// trailedStop > 0 &&
// (
// //
// iPosition.sl == 0
// ? (isLong
// ? trailedStop > iPosition.entry &&
// trailedStop < iPosition.price
// : trailedStop < iPosition.entry &&
// trailedStop > iPosition.price)
// : (isLong
// ? trailedStop > iPosition.sl &&
// trailedStop > iPosition.entry &&
// trailedStop < iPosition.price
// : trailedStop < iPosition.sl &&
// trailedStop < iPosition.entry &&
// trailedStop > iPosition.price)
// //
// )
// //
// ;
//
if (canDoTrailStop)
{
//
X121SMCGuard iGuard;
// //
// if (canDoTrailStop)
// {
// //
// X121SMCGuard iGuard;
//
iGuard.time = cTime;
iGuard.symbol = symbol;
iGuard.provider = provider;
iGuard.action = X_121_SMC_GUARD_ACTION_TRAIL_STOP;
// //
// iGuard.time = cTime;
// iGuard.symbol = symbol;
// iGuard.provider = provider;
// iGuard.action = X_121_SMC_GUARD_ACTION_TRAIL_STOP;
//
iGuard.ticket = iPosition.ticket;
// //
// iGuard.ticket = iPosition.ticket;
//
iGuard.sl = trailedStop;
// //
// iGuard.sl = trailedStop;
//
AddGuard(
iGuard,
guards //
);
}
// //
// AddGuard(
// iGuard,
// guards //
// );
// }
}
}
@@ -956,14 +956,14 @@ bool DetectX121SMCGuards(
consolidationXConditions.Clean();
//
lastBullishBox.Clean();
lastBearishBox.Clean();
lastBullishZone.Clean();
lastBearishZone.Clean();
prevLastBullishBox.Clean();
prevLastBearishBox.Clean();
prevLastBullishZone.Clean();
prevLastBearishZone.Clean();
// lastBullishBox.Clean();
// lastBearishBox.Clean();
// lastBullishZone.Clean();
// lastBearishZone.Clean();
// prevLastBullishBox.Clean();
// prevLastBearishBox.Clean();
// prevLastBullishZone.Clean();
// prevLastBearishZone.Clean();
//
count = ArraySize(guards);