Fix Order Blocks ...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user