This commit is contained in:
2026-02-12 18:01:52 +03:30
parent da2ca0e1ad
commit 7a26df1194
4 changed files with 209 additions and 2 deletions
@@ -533,12 +533,13 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
//
// Signaller Flags ...
bool useSignaller1 = true;
bool useSignaller1 = false;
bool useSignaller2 = false;
bool useSignaller3 = false;
bool useSignaller4 = false;
bool useSignaller5 = false;
bool useSignaller6 = false;
bool useSignaller7 = true;
//
XBoxZone tmpZone;
@@ -552,6 +553,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
bool signaller4HasSignal = false;
bool signaller5HasSignal = false;
bool signaller6HasSignal = false;
bool signaller7HasSignal = false;
//
// Validator Flags ...
@@ -772,6 +774,39 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
tmpDir = X_DIRECTION_NONE;
}
//
// Signaller 7 ...
// Supply and Demand ...
if (useSignaller7)
{
//
signaller7HasSignal = Strategy7HasSignal(
bar,
tmpZone,
targets,
tmpDir //
);
//
if (signaller7HasSignal)
{
//
provider += ToXString(X121_XKI_STRATEGY_7);
//
if (!zone.IsValid())
{
//
dir = tmpDir;
zone = tmpZone;
}
}
//
tmpZone.Clean();
tmpDir = X_DIRECTION_NONE;
}
//
// Summarize Signallers Result ...
result = signaller1HasSignal ||
@@ -779,7 +814,8 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
signaller3HasSignal ||
signaller4HasSignal ||
signaller5HasSignal ||
signaller6HasSignal;
signaller6HasSignal ||
signaller7HasSignal;
//
// Signal Validating ...
@@ -1688,6 +1724,92 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
//
return result;
}
/**
* Check Bar Has Signal Based on Strategy 7 ...
* ُSupply and Demand ...
*
* @return ( bool )
*/
bool Strategy7HasSignal(
XOHCL &bar,
XBoxZone &zone,
XTarget &targets[],
ENUM_X_DIRECTION &dir //
)
{
//
bool result = false;
//
zone.Clean();
XClean(targets);
dir = X_DIRECTION_NONE;
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
int barIndex = bar.Index() + 1;
//
// Retrieve Base Conditions ...
bool isBullish = false;
bool isBearish = false;
//
XBoxZone demandZones[];
int demandZonesCount = poiDetector.DetectDemands(
demandZones,
barIndex,
bar.symbol,
bar.period,
100,
4,
2,
100 //
);
//
// Validate Conditions ...
result = isBullish || isBearish;
if (!result)
{
return result;
}
//
// Do Validation and Filtering Market Structure if required ...
//
// Check and Prepare Direction ...
dir =
isBullish
? X_DIRECTION_BULLISH
: isBearish ? X_DIRECTION_BEARISH
: X_DIRECTION_NONE;
result = HasDirection(dir);
if (!result)
{
return result;
}
//
// Prepare Zone ...
//
result =
result &&
zone.IsValid() &&
HasDirection(dir);
//
return result;
}
// #endregion
// #region TF Patterns ...