This commit is contained in:
2025-02-19 00:16:57 +03:30
parent 6ab805765c
commit 8bb5a6cb06
4 changed files with 644 additions and 107 deletions
+161 -96
View File
@@ -6099,6 +6099,12 @@ struct XOBFVG
//
ZeroMemory(ob);
ZeroMemory(fvg);
//
Clean(supplyZones);
Clean(demandZones);
Clean(supportZones);
Clean(resistanceZones);
}
//
@@ -6181,13 +6187,15 @@ struct XOBFVG
bool has = false;
//
if (HasOB())
has = HasOB();
if (has)
{
ob.To(value);
}
//
if (HasFVG())
has = HasFVG();
if (has)
{
fvg.To(value);
}
@@ -6199,7 +6207,7 @@ struct XOBFVG
{
//
count = CountSupplyZones();
for (int i = 0; count; i++)
for (int i = 0; i < count; i++)
{
supplyZones[i].To(value);
}
@@ -6212,7 +6220,7 @@ struct XOBFVG
{
//
count = CountDemandZones();
for (int i = 0; count; i++)
for (int i = 0; i < count; i++)
{
demandZones[i].To(value);
}
@@ -6225,7 +6233,7 @@ struct XOBFVG
{
//
count = CountSupportZones();
for (int i = 0; count; i++)
for (int i = 0; i < count; i++)
{
supportZones[i].To(value);
}
@@ -6238,7 +6246,7 @@ struct XOBFVG
{
//
count = CountResistanceZones();
for (int i = 0; count; i++)
for (int i = 0; i < count; i++)
{
resistanceZones[i].To(value);
}
@@ -8365,6 +8373,7 @@ int GetLowest(
* @param applyFromFilter: Filter Sorted Zones based on Occured Date ...
* @param applyPlaceFilter: Filter Sorted Zones based on Occured Place ...
* @param ignoreInside: Ignore Inside Sides of POI(s) Zones in Related to Order Block ...
* @param applyFromFilterForPOIs: Apply From Filter for Other POI(s) ...
*
* @return ( int )
*/
@@ -8397,7 +8406,11 @@ int ExtractOBFVGZones(
bool applyFromFilter = true,
bool applyPlaceFilter = true,
//
bool ignoreInside = true
bool ignoreInside = true,
//
bool detectInsideOBPOIs = true,
bool detectInsideFVGPOIs = true,
bool applyFromFilterForPOIs = true
//
)
{
@@ -9008,7 +9021,11 @@ int ExtractOBFVGZones(
//
// Detecting Other POI(s) ...
has = HasChild(dest);
if (has)
bool canDetectPOIs =
detectInsideOBPOIs ||
detectInsideFVGPOIs;
if (has &&
canDetectPOIs)
{
//
count = ArraySize(dest);
@@ -9024,27 +9041,15 @@ int ExtractOBFVGZones(
{
//
bool isInsideOB = IsInsideDiff(
stfState.supplyZones[j],
dest[i].ob,
false //
) ||
IsInsideDiff(
stfState.supplyZones[j],
dest[i].ob,
true //
);
stfState.supplyZones[j],
dest[i].ob //
);
//
bool isInsideFVG = IsInsideDiff(
stfState.supplyZones[j],
dest[i].fvg,
false //
) ||
IsInsideDiff(
stfState.supplyZones[j],
dest[i].fvg,
true //
);
stfState.supplyZones[j],
dest[i].fvg //
);
//
bool isInside = isInsideOB ||
@@ -9052,10 +9057,34 @@ int ExtractOBFVGZones(
if (isInside)
{
//
Add(
stfState.supplyZones[j],
dest[i].supplyZones //
);
bool isPassed =
detectInsideOBPOIs
? isInsideOB
: detectInsideFVGPOIs
? isInsideFVG
: false;
if (isPassed)
{
//
isPassed =
!applyFromFilterForPOIs
? isPassed
: isInsideOB
? stfState.supplyZones[j].From() > dest[i].ob.From()
: isInsideFVG
? stfState.supplyZones[j].From() > dest[i].fvg.From()
: false;
}
//
if (isPassed)
{
//
Add(
stfState.supplyZones[j],
dest[i].supplyZones //
);
}
}
}
}
@@ -9070,27 +9099,15 @@ int ExtractOBFVGZones(
{
//
bool isInsideOB = IsInsideDiff(
stfState.demandZones[j],
dest[i].ob,
false //
) ||
IsInsideDiff(
stfState.demandZones[j],
dest[i].ob,
true //
);
stfState.demandZones[j],
dest[i].ob //
);
//
bool isInsideFVG = IsInsideDiff(
stfState.demandZones[j],
dest[i].fvg,
false //
) ||
IsInsideDiff(
stfState.demandZones[j],
dest[i].fvg,
true //
);
stfState.demandZones[j],
dest[i].fvg //
);
//
bool isInside = isInsideOB ||
@@ -9098,10 +9115,34 @@ int ExtractOBFVGZones(
if (isInside)
{
//
Add(
stfState.demandZones[j],
dest[i].demandZones //
);
bool isPassed =
detectInsideOBPOIs
? isInsideOB
: detectInsideFVGPOIs
? isInsideFVG
: false;
if (isPassed)
{
//
isPassed =
!applyFromFilterForPOIs
? isPassed
: isInsideOB
? stfState.demandZones[j].From() > dest[i].ob.From()
: isInsideFVG
? stfState.demandZones[j].From() > dest[i].fvg.From()
: false;
}
//
if (isPassed)
{
//
Add(
stfState.demandZones[j],
dest[i].demandZones //
);
}
}
}
}
@@ -9116,27 +9157,15 @@ int ExtractOBFVGZones(
{
//
bool isInsideOB = IsInsideDiff(
stfState.supportZones[j],
dest[i].ob,
false //
) ||
IsInsideDiff(
stfState.supportZones[j],
dest[i].ob,
true //
);
stfState.supportZones[j],
dest[i].ob //
);
//
bool isInsideFVG = IsInsideDiff(
stfState.supportZones[j],
dest[i].fvg,
false //
) ||
IsInsideDiff(
stfState.supportZones[j],
dest[i].fvg,
true //
);
stfState.supportZones[j],
dest[i].fvg //
);
//
bool isInside = isInsideOB ||
@@ -9144,10 +9173,34 @@ int ExtractOBFVGZones(
if (isInside)
{
//
Add(
stfState.supportZones[j],
dest[i].supportZones //
);
bool isPassed =
detectInsideOBPOIs
? isInsideOB
: detectInsideFVGPOIs
? isInsideFVG
: false;
if (isPassed)
{
//
isPassed =
!applyFromFilterForPOIs
? isPassed
: isInsideOB
? stfState.supportZones[j].From() > dest[i].ob.From()
: isInsideFVG
? stfState.supportZones[j].From() > dest[i].fvg.From()
: false;
}
//
if (isPassed)
{
//
Add(
stfState.supportZones[j],
dest[i].supportZones //
);
}
}
}
}
@@ -9162,27 +9215,15 @@ int ExtractOBFVGZones(
{
//
bool isInsideOB = IsInsideDiff(
stfState.resistanceZones[j],
dest[i].ob,
false //
) ||
IsInsideDiff(
stfState.resistanceZones[j],
dest[i].ob,
true //
);
stfState.resistanceZones[j],
dest[i].ob //
);
//
bool isInsideFVG = IsInsideDiff(
stfState.resistanceZones[j],
dest[i].fvg,
false //
) ||
IsInsideDiff(
stfState.resistanceZones[j],
dest[i].fvg,
true //
);
stfState.resistanceZones[j],
dest[i].fvg //
);
//
bool isInside = isInsideOB ||
@@ -9190,10 +9231,34 @@ int ExtractOBFVGZones(
if (isInside)
{
//
Add(
stfState.resistanceZones[j],
dest[i].resistanceZones //
);
bool isPassed =
detectInsideOBPOIs
? isInsideOB
: detectInsideFVGPOIs
? isInsideFVG
: false;
if (isPassed)
{
//
isPassed =
!applyFromFilterForPOIs
? isPassed
: isInsideOB
? stfState.resistanceZones[j].From() > dest[i].ob.From()
: isInsideFVG
? stfState.resistanceZones[j].From() > dest[i].fvg.From()
: false;
}
//
if (isPassed)
{
//
Add(
stfState.resistanceZones[j],
dest[i].resistanceZones //
);
}
}
}
}