Fix Order Blocks ...

This commit is contained in:
2025-03-17 23:02:12 +03:30
parent 48c78e1256
commit 3f26a75e2e
4 changed files with 146 additions and 56 deletions
+101 -4
View File
@@ -1336,6 +1336,24 @@ class XCBarAnalyser : public XCBase
return result;
}
//
XOHCL sBar;
if (bar.Index() == 0)
{
//
result = bar.GetPreviousBar(sBar);
if (!result)
{
//
sBar.Clean();
return result;
}
}
else
{
sBar = bar;
}
//
// First Step We Have to Check Same Bars ...
int spikeRootIDX = -1;
@@ -1365,7 +1383,7 @@ class XCBarAnalyser : public XCBase
spikeRootIDX, // Spike Root Index ...
X_PRICE_CLOSE, // Price Type ...
true, // Force Body ...
1.0, // Range Extend Multiplier ...
1.5, // Range Extend Multiplier ...
sameBars //
);
result =
@@ -1380,12 +1398,69 @@ class XCBarAnalyser : public XCBase
}
//
// Select Order Block Bar ...
result = ob.Init(
// Select OB Candidate Bars ...
XOHCL sameBar;
XOHCL rootBar;
XOHCL rootPBar;
result = sameBar.Init(
bar.symbol,
bar.period,
sameBarsIndex + 1 //
);
if (!result)
{
//
sBar.Clean();
sameBar.Clean();
return result;
}
result = rootBar.Init(
bar.symbol,
bar.period,
spikeRootIDX //
);
if (!result)
{
//
sBar.Clean();
rootBar.Clean();
sameBar.Clean();
return result;
}
result = rootBar.GetPreviousBar(rootPBar);
if (!result)
{
//
sBar.Clean();
rootBar.Clean();
sameBar.Clean();
rootPBar.Clean();
return result;
}
//
// Select ob Bar ...
if (rootBar.GetDirection() == Opposit(dir))
{
ob = rootBar;
}
else if (rootPBar.GetDirection() == Opposit(dir))
{
ob = rootPBar;
}
else if (sameBar.GetDirection() == Opposit(dir))
{
ob = sameBar;
}
else
{
ob.Clean();
}
//
// Select Order Block Bar ...
result = ob.IsValid();
ENUM_X_DIRECTION obDir = ob.GetDirection();
result =
result &&
@@ -1393,7 +1468,12 @@ class XCBarAnalyser : public XCBase
if (!result)
{
//
ob.Clean();
sBar.Clean();
rootBar.Clean();
sameBar.Clean();
rootPBar.Clean();
//
return result;
}
@@ -1432,7 +1512,15 @@ class XCBarAnalyser : public XCBase
//
if (!result)
{
//
ob.Clean();
sBar.Clean();
rootBar.Clean();
sameBar.Clean();
rootPBar.Clean();
//
return result;
}
}
@@ -1463,6 +1551,15 @@ class XCBarAnalyser : public XCBase
fromBar.Clean();
}
//
// Cleanup Resource ...
//
sBar.Clean();
rootBar.Clean();
sameBar.Clean();
rootPBar.Clean();
//
return result;
}