This commit is contained in:
2026-01-06 02:20:25 +03:30
parent 2df090d2f3
commit fb03a1c88a
5 changed files with 1467 additions and 28 deletions
@@ -988,6 +988,29 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
return result;
}
// #region Swings/OrderFlow ...
//
// Swings ...
XBoxZone swingLow;
XBoxZone swingHigh;
bool hasSwings = poiDetector.DetectRecentSwings(
swingHigh,
swingLow,
barIndex //
);
//
// Order Flow ...
//
XBoxZone bullishOrderFlow[];
result = poiDetector.HasOrderFlow(bullishOrderFlow, barIndex, 4, X_DIRECTION_BULLISH, 15);
//
XBoxZone bearishOrderFlow[];
result = poiDetector.HasOrderFlow(bearishOrderFlow, barIndex, 4, X_DIRECTION_BEARISH, 15);
// #endregion
// #region Reading Conditions and Scoring ...
//
// ATR ...
@@ -1150,24 +1173,96 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
}
//
if (result)
{
// DebugBreak();
}
// Select Operational Zone ...
ENUM_X_DIRECTION patternsDir[];
ENUM_X_BAR_PATTERN patterns[];
//
// Select Operational Zone ...
GetAllBarPatters(patterns, patternsDir);
//
// XAUUSD ...
// //
// // FVG ...
// Add(X_BAR_PATTERN_FVG, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
// //
// // Piercing ...
// Add(X_BAR_PATTERN_PIERCING, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
//
// EURUSD ...
//
// Add(X_BAR_PATTERN_STAR, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
// //
// Add(X_BAR_PATTERN_SUPPORT, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
// //
// Add(X_BAR_PATTERN_RESISTANCE, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
//
// Add(X_BAR_PATTERN_SIGNALKEY, patterns);
// Add(X_DIRECTION_NONE, patternsDir);
//
int nearestOrderFlowIDX = -1;
if (isBullish)
{
//
// Looking Bar Patterns to Detect Zone ...
poiDetector.HasRecentPatternTouched(zone, iBar.close, barIndex, 5, 5, iBar.period, X_DIRECTION_BULLISH);
isBullish =
isBullish &&
HasChild(bullishOrderFlow) &&
poiDetector.HasNearZone(
nearestOrderFlowIDX,
iBar.close,
5,
bullishOrderFlow //
) &&
poiDetector.HasRecentPatternTouched(
zone,
patterns,
patternsDir,
iBar.close,
barIndex,
5,
5,
iBar.period,
X_DIRECTION_BULLISH //
);
}
else if (isBearish)
{
//
// Looking Bar Patterns to Detect Zone ...
poiDetector.HasRecentPatternTouched(zone, iBar.close, barIndex, 5, 5, iBar.period, X_DIRECTION_BEARISH);
isBearish =
isBearish &&
HasChild(bearishOrderFlow) &&
poiDetector.HasNearZone(
nearestOrderFlowIDX,
iBar.close,
5,
bearishOrderFlow //
) &&
poiDetector.HasRecentPatternTouched(
zone,
patterns,
patternsDir,
iBar.close,
barIndex,
5,
5,
iBar.period,
X_DIRECTION_BEARISH //
);
}
//
@@ -1293,13 +1388,45 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
}
//
config.Clean();
if (swingLow.IsValid())
{
//
drawn++;
poiDrawer.DrawZone(swingLow, config);
}
//
if (swingHigh.IsValid())
{
//
drawn++;
poiDrawer.DrawZone(swingHigh, config);
}
//
if (HasChild(bullishOrderFlow))
{
//
drawn += ArraySize(bullishOrderFlow);
poiDrawer.DrawZones(bullishOrderFlow, config);
}
//
if (HasChild(bearishOrderFlow))
{
//
drawn += ArraySize(bearishOrderFlow);
poiDrawer.DrawZones(bearishOrderFlow, config);
}
//
if (drawn > 0)
{
// DebugBreak();
}
//
config.Clean();
}
//
@@ -1311,20 +1438,12 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
: X_DIRECTION_NONE;
result = result &&
HasDirection(dir);
if (!result)
{
//
iBar.Clean();
//
return result;
}
//
// Prepare Zone ...
double entry = GetEntry(iBar.symbol, dir);
if (result)
{
//
// Prepare Zone ...
double entry = GetEntry(iBar.symbol, dir);
//
double upper = isBullish
? entry
@@ -1348,12 +1467,15 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
);
}
// #region Preparing Target ...
// #endregion
//
// Cleanup Resources ...
iBar.Clean();
swingLow.Clean();
XClean(patterns);
swingHigh.Clean();
XClean(patternsDir);
XClean(bullishOrderFlow);
XClean(bearishOrderFlow);
//
result =
@@ -1371,7 +1493,8 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
*
* @return ( bool )
*/
bool Strategy2HasSignal(
bool
Strategy2HasSignal(
XOHCL &bar,
XBoxZone &zone,
XTarget &targets[],