This commit is contained in:
2025-03-09 10:13:19 +03:30
parent a81c09e2a5
commit 202ae585dd
4 changed files with 217 additions and 50 deletions
+154 -2
View File
@@ -877,6 +877,7 @@ struct X121SMCStrategyXWZWorkingZone
//
bool DetectSignalConditions(
XBoxZone &box,
XBoxZone &holderBox,
ENUM_X_DIRECTION &dir,
ENUM_X121SMC_XWZ_PROVIDERS &signalProvider,
X121SMCStrategySignalProviderData &provider,
@@ -891,6 +892,7 @@ struct X121SMCStrategyXWZWorkingZone
//
box.Clean();
holderBox.Clean();
dir = X_DIRECTION_NONE;
signalProvider = X121SMC_XWZ_PROVIDER_NONE;
@@ -907,6 +909,11 @@ struct X121SMCStrategyXWZWorkingZone
return result;
}
//
int idx = -1;
int count = 0;
bool has = false;
//
int zIDX = barIndex;
int cIDX = zIDX + 1;
@@ -953,7 +960,7 @@ struct X121SMCStrategyXWZWorkingZone
//
// Senario 1:
// ----------
bool useSenario1 = false;
bool useSenario1 = true;
bool isSenario1Happend = false;
bool isSenario1Bullish = false;
bool isSenario1Bearish = false;
@@ -1212,15 +1219,160 @@ struct X121SMCStrategyXWZWorkingZone
box.from = pBar.time;
}
//
// Detect Holder Box ...
XBoxZone tmpBoxes[];
if (isSenario1Bullish)
{
//
// Demand Zones ...
XBoxZone tmp[];
ToBox(
provider.visionState.demandZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Order Blocks ...
ToBox(
provider.visionState.bullishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Fair Value Gaps ...
ToBox(
provider.visionState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
}
else
{
//
// Supply Zones ...
XBoxZone tmp[];
ToBox(
provider.visionState.supplyZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Order Blocks ...
ToBox(
provider.visionState.bearishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Fair Value Gaps ...
ToBox(
provider.visionState.bearishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
}
//
has = HasChild(tmpBoxes);
if (has)
{
//
while (HasChild(tmpBoxes))
{
//
idx = GetOldest(tmpBoxes);
has = IsValidIndex(idx);
if (!has)
{
break;
}
//
XBoxZone iBox = tmpBoxes[idx];
ArrayRemove(
tmpBoxes,
idx,
1 //
);
//
has = IsBoxInside(
box,
iBox //
);
if (has)
{
//
holderBox = iBox;
holderBox.to = TimeCurrent();
iBox.Clean();
break;
}
//
iBox.Clean();
}
}
//
Clean(tmpBoxes);
//
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX;
//
// Validate Conditions to Force Has Holder Box ...
// isSenario1Happend =
// holderBox.IsValid() &&
// isSenario1Happend;
// if (!isSenario1Happend)
// {
// //
// isSenario1Bullish = false;
// isSenario1Bearish = false;
// }
}
}
//
// Senario 2:
// ----------
bool useSenario2 = true;
bool useSenario2 = false;
bool isSenario2Happend = false;
bool isSenario2Bullish = false;
bool isSenario2Bearish = false;