last ...
This commit is contained in:
@@ -4255,7 +4255,6 @@ class XCMarketPatternDetector : public XCBase
|
|||||||
XOHCL &bar,
|
XOHCL &bar,
|
||||||
XBoxZone &zones[],
|
XBoxZone &zones[],
|
||||||
bool validateZones = true,
|
bool validateZones = true,
|
||||||
bool removeUsedZones = true,
|
|
||||||
bool containsOBs = true,
|
bool containsOBs = true,
|
||||||
bool containsFVGs = true,
|
bool containsFVGs = true,
|
||||||
bool containsSupports = true,
|
bool containsSupports = true,
|
||||||
@@ -4411,15 +4410,6 @@ class XCMarketPatternDetector : public XCBase
|
|||||||
RemoveBreakedZones(zones, true);
|
RemoveBreakedZones(zones, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Remove Filled Zones ...
|
|
||||||
if (removeUsedZones)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Remove all Filled Zones ...
|
|
||||||
RemoveFilledZones(zones);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Apply Sorting ...
|
// Apply Sorting ...
|
||||||
Sort(zones, sortBy, sortDir);
|
Sort(zones, sortBy, sortDir);
|
||||||
|
|||||||
@@ -1917,6 +1917,9 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Validator Flags ...
|
// Validator Flags ...
|
||||||
|
bool validateByZones = true;
|
||||||
|
bool validateByPinBar = true;
|
||||||
|
bool validateByBarPatterns = true;
|
||||||
bool validateByCyclesTrend = true;
|
bool validateByCyclesTrend = true;
|
||||||
bool validateByMaFastSlowGrows = true;
|
bool validateByMaFastSlowGrows = true;
|
||||||
|
|
||||||
@@ -2083,6 +2086,150 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
result = isBullish || isBearish;
|
result = isBullish || isBearish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Validate Has a PinBar ...
|
||||||
|
if (result && validateByPinBar)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool isPBarIsPinBar = poiDetector.IsPinnedBar(pBar, dir);
|
||||||
|
bool isPBarIsPinBarBullish = isPBarIsPinBar && IsXBullish(dir);
|
||||||
|
bool isPBarIsPinBarBearish = isPBarIsPinBar && IsXBearish(dir);
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isP2BarIsPinBar = poiDetector.IsPinnedBar(p2Bar, dir);
|
||||||
|
bool isP2BarIsPinBarBullish = isP2BarIsPinBar && IsXBullish(dir);
|
||||||
|
bool isP2BarIsPinBarBearish = isP2BarIsPinBar && IsXBearish(dir);
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isBullishPin = isPBarIsPinBarBullish || isP2BarIsPinBarBullish;
|
||||||
|
bool isBearishPin = isPBarIsPinBarBearish || isP2BarIsPinBarBearish;
|
||||||
|
|
||||||
|
//
|
||||||
|
isBullish =
|
||||||
|
isBullish &&
|
||||||
|
isBullishPin;
|
||||||
|
|
||||||
|
//
|
||||||
|
isBearish =
|
||||||
|
isBearish &&
|
||||||
|
isBearishPin;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = isBullish || isBearish;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Validate By Bar Patterns ...
|
||||||
|
if (result && validateByBarPatterns)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int count = 0;
|
||||||
|
int bullishCount = 0;
|
||||||
|
int bearishCount = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
count = pBarPatterns.Count(X_DIRECTION_BULLISH);
|
||||||
|
bullishCount += count;
|
||||||
|
|
||||||
|
//
|
||||||
|
count = p2BarPatterns.Count(X_DIRECTION_BULLISH);
|
||||||
|
bullishCount += count;
|
||||||
|
|
||||||
|
//
|
||||||
|
count = pBarPatterns.Count(X_DIRECTION_BEARISH);
|
||||||
|
bearishCount += count;
|
||||||
|
|
||||||
|
//
|
||||||
|
count = p2BarPatterns.Count(X_DIRECTION_BEARISH);
|
||||||
|
bearishCount += count;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool hasBullishScore = IsValidSize(bullishCount) &&
|
||||||
|
bullishCount > bearishCount;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool hasBearishScore = IsValidSize(bearishCount) &&
|
||||||
|
bearishCount > bullishCount;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Reading Bar Patterns ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Bullish ...
|
||||||
|
bool isPBarHasBullishPatterns =
|
||||||
|
(pBarPatterns.HasPattern(X_BAR_PATTERN_FLAG, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_STAR, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_PINNED, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_RISING, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_ENGULFED, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_MOMENTUM, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_PIERCING, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_SIGNALKEY, X_DIRECTION_BULLISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_TRUE_GAPED, X_DIRECTION_BULLISH));
|
||||||
|
bool isP2BarHasBullishPatterns =
|
||||||
|
(p2BarPatterns.HasPattern(X_BAR_PATTERN_FLAG, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_STAR, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_PINNED, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_RISING, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_ENGULFED, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_MOMENTUM, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_PIERCING, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_SIGNALKEY, X_DIRECTION_BULLISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_TRUE_GAPED, X_DIRECTION_BULLISH));
|
||||||
|
bool hasBullishPatterns = isPBarHasBullishPatterns || isP2BarHasBullishPatterns;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Bearish ...
|
||||||
|
bool isPBarHasBearishPatterns =
|
||||||
|
(pBarPatterns.HasPattern(X_BAR_PATTERN_FLAG, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_STAR, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_PINNED, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_RISING, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_ENGULFED, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_MOMENTUM, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_PIERCING, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_SIGNALKEY, X_DIRECTION_BEARISH) ||
|
||||||
|
pBarPatterns.HasPattern(X_BAR_PATTERN_TRUE_GAPED, X_DIRECTION_BEARISH));
|
||||||
|
bool isP2BarHasBearishPatterns =
|
||||||
|
(p2BarPatterns.HasPattern(X_BAR_PATTERN_FLAG, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_STAR, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_PINNED, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_RISING, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_ENGULFED, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_MOMENTUM, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_PIERCING, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_SIGNALKEY, X_DIRECTION_BEARISH) ||
|
||||||
|
p2BarPatterns.HasPattern(X_BAR_PATTERN_TRUE_GAPED, X_DIRECTION_BEARISH));
|
||||||
|
bool hasBearishPatterns = isPBarHasBearishPatterns || isP2BarHasBearishPatterns;
|
||||||
|
|
||||||
|
//
|
||||||
|
isBullish =
|
||||||
|
isBullish &&
|
||||||
|
hasBullishScore &&
|
||||||
|
hasBullishPatterns;
|
||||||
|
|
||||||
|
//
|
||||||
|
isBearish =
|
||||||
|
isBearish &&
|
||||||
|
hasBearishScore &&
|
||||||
|
hasBearishPatterns;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = isBullish || isBearish;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Validate By Zones ...
|
||||||
|
if (result && validateByZones) {
|
||||||
|
//
|
||||||
|
XBoxZone zones[];
|
||||||
|
int count = poiDetector.DetectZones(
|
||||||
|
pBar,
|
||||||
|
zones,
|
||||||
|
true, // Validate Zones ...
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user