last works ...

This commit is contained in:
2025-10-05 23:39:29 +03:30
parent 03d215c9fa
commit 2b48fa569e
4 changed files with 320 additions and 140 deletions
+73 -129
View File
@@ -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 ...