last works ...
This commit is contained in:
@@ -4073,7 +4073,8 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
bool isBearish = false;
|
||||
double iMin = EMPTY_VALUE;
|
||||
double iMax = EMPTY_VALUE;
|
||||
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
|
||||
bool isCond1Bullish = false;
|
||||
bool isCond1Bearish = false;
|
||||
for (int i = 0; i < decisionBarsCount; i++)
|
||||
{
|
||||
//
|
||||
@@ -4092,15 +4093,21 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
//
|
||||
// Validate ...
|
||||
|
||||
//
|
||||
isCond1Bullish = decisionBars[i].IsBullish();
|
||||
|
||||
//
|
||||
isCond1Bearish = decisionBars[i].IsBearish();
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
decisionBars[i].IsBullish();
|
||||
(isCond1Bullish);
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
decisionBars[i].IsBearish();
|
||||
(isCond1Bearish);
|
||||
|
||||
//
|
||||
if (forceTouchBoundary)
|
||||
@@ -4119,24 +4126,9 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
}
|
||||
|
||||
//
|
||||
has = (isBullish && !isBearish) ||
|
||||
(isBearish && !isBullish);
|
||||
if (!has)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
iDir =
|
||||
isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: X_DIRECTION_BEARISH;
|
||||
|
||||
//
|
||||
// Validate For Dir ...
|
||||
has = !HasDirection(forDir)
|
||||
? HasDirection(iDir)
|
||||
: iDir == forDir;
|
||||
has =
|
||||
isBullish ||
|
||||
isBearish;
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
@@ -4147,7 +4139,7 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
|
||||
//
|
||||
Add(
|
||||
iDir,
|
||||
decisionBarDirs[i],
|
||||
dirs //
|
||||
);
|
||||
}
|
||||
@@ -4225,56 +4217,78 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
bool isBearish = false;
|
||||
double iMin = EMPTY_VALUE;
|
||||
double iMax = EMPTY_VALUE;
|
||||
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
|
||||
bool isCond1Bullish = false;
|
||||
bool isCond1Bearish = false;
|
||||
for (int i = 0; i < decisionBarsCount; i++)
|
||||
{
|
||||
//
|
||||
// Read Boundary Values ...
|
||||
has = GetBoundaryValues(iMin, iMax, i);
|
||||
// Read Indexed Bars Boundaries ...
|
||||
has = GetBoundaryValues(iMin, iMax, decisionBars[i].Index());
|
||||
if (!has)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
// Make Direction Opposit ...
|
||||
decisionBarDirs[i] = Opposit(decisionBarDirs[i]);
|
||||
|
||||
//
|
||||
isBullish = IsXBullish(decisionBarDirs[i]);
|
||||
isBearish = IsXBearish(decisionBarDirs[i]);
|
||||
|
||||
//
|
||||
// Check Bar Validations ...
|
||||
|
||||
//
|
||||
// Cond 1 ...
|
||||
|
||||
//
|
||||
isCond1Bullish =
|
||||
decisionBars[i].IsBearish() &&
|
||||
(decisionBars[i].low >= iMax ||
|
||||
(decisionBars[i].low <= iMax &&
|
||||
decisionBars[i].GetUp() >= iMax));
|
||||
|
||||
//
|
||||
isCond1Bearish =
|
||||
decisionBars[i].IsBullish() &&
|
||||
(decisionBars[i].high <= iMin ||
|
||||
(decisionBars[i].high >= iMin &&
|
||||
decisionBars[i].GetDown() <= iMin));
|
||||
|
||||
//
|
||||
isBullish =
|
||||
decisionBars[i].high > iMax &&
|
||||
IsXBearish(decisionBarDirs[i]);
|
||||
// &&
|
||||
// decisionBars[i].IsBullish();
|
||||
isBullish &&
|
||||
(isCond1Bullish);
|
||||
|
||||
//
|
||||
isBearish =
|
||||
decisionBars[i].low < iMin &&
|
||||
IsXBullish(decisionBarDirs[i]);
|
||||
// &&
|
||||
// decisionBars[i].IsBearish();
|
||||
isBearish &&
|
||||
(isCond1Bearish);
|
||||
|
||||
//
|
||||
// Check Direction ...
|
||||
has =
|
||||
isBullish ||
|
||||
!isBearish;
|
||||
// has = (isBullish && !isBearish) ||
|
||||
// (isBearish && !isBullish);
|
||||
if (!has)
|
||||
if (forceTouchBoundary)
|
||||
{
|
||||
continue;
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
(decisionBars[i].low >= iMax ||
|
||||
(decisionBars[i].low <= iMax &&
|
||||
decisionBars[i].GetUp() >= iMax));
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
(decisionBars[i].high <= iMin ||
|
||||
(decisionBars[i].high >= iMin &&
|
||||
decisionBars[i].GetDown() <= iMin));
|
||||
}
|
||||
|
||||
//
|
||||
iDir = isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: X_DIRECTION_BEARISH;
|
||||
|
||||
//
|
||||
// Validate For Dir ...
|
||||
has = !HasDirection(forDir)
|
||||
? HasDirection(iDir)
|
||||
: iDir == forDir;
|
||||
has =
|
||||
isBullish ||
|
||||
isBearish;
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
@@ -4285,90 +4299,14 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
|
||||
//
|
||||
Add(
|
||||
iDir,
|
||||
decisionBarDirs[i],
|
||||
dirs //
|
||||
);
|
||||
}
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// (decisionBars[i].low > iMax ||
|
||||
// decisionBars[i].GetDown() > iMax) &&
|
||||
// IsXBearish(decisionBarDirs[i]) &&
|
||||
// decisionBars[i].IsBullish();
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// (decisionBars[i].high < iMin ||
|
||||
// decisionBars[i].GetUp() < iMin) &&
|
||||
// IsXBullish(decisionBarDirs[i]) &&
|
||||
// decisionBars[i].IsBearish();
|
||||
|
||||
// //
|
||||
// if (forceTouchBoundary)
|
||||
// {
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// decisionBars[i].low < iMax &&
|
||||
// decisionBars[i].GetUp() > iMax;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// decisionBars[i].high > iMin &&
|
||||
// decisionBars[i].GetDown() < iMin;
|
||||
// }
|
||||
|
||||
// //
|
||||
// has = (isBullish && !isBearish) ||
|
||||
// (isBearish && !isBullish);
|
||||
// if (!has)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// //
|
||||
// iDir =
|
||||
// isBullish
|
||||
// ? X_DIRECTION_BULLISH
|
||||
// : X_DIRECTION_BEARISH;
|
||||
|
||||
// //
|
||||
// // Validate For Dir ...
|
||||
// has = !HasDirection(forDir)
|
||||
// ? HasDirection(iDir)
|
||||
// : iDir == forDir;
|
||||
// if (has)
|
||||
// {
|
||||
// //
|
||||
// AddRef(
|
||||
// decisionBars[i],
|
||||
// bars //
|
||||
// );
|
||||
|
||||
// //
|
||||
// Add(
|
||||
// iDir,
|
||||
// dirs //
|
||||
// );
|
||||
// }
|
||||
|
||||
//
|
||||
AddRef(
|
||||
decisionBars[i],
|
||||
bars //
|
||||
);
|
||||
|
||||
//
|
||||
Add(
|
||||
decisionBarDirs[i],
|
||||
dirs //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
result = ArraySize(bars);
|
||||
result = MathMin(ArraySize(bars), ArraySize(dirs));
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
@@ -4379,6 +4317,12 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
return result;
|
||||
}
|
||||
|
||||
int DetectXFIMAPOIBarPatterns(
|
||||
XOHCL &bars[],
|
||||
XOHCL &dirs[],
|
||||
int barIndex = 0,
|
||||
)
|
||||
|
||||
//
|
||||
// Values Retrievers ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user