This commit is contained in:
2025-03-30 01:20:09 +03:30
parent 1b93b469a1
commit ac95a26e24
10 changed files with 1798 additions and 174 deletions
+24 -163
View File
@@ -206,157 +206,23 @@ class XCX121SMCXICHSignalDetector : public XCBase
//
//
// Update Models To Time ...
UpdateTo(cTime);
// Provider XTkKumo ...
X121SMCStrategyConditionParser cParser;
hasSignalBox = cParser.HasXICHConditions(
X_CYCLE_ANALYSE,
signalBox,
signalBoxDir,
provider,
zIndex //
);
if (hasSignalBox)
{
signalProvider = X121SMC_XICH_PROVIDER_XTKKUMO;
}
//
// Here we Detect Signal Box ...
if (!hasSignalBox)
{
//
// HTF Proves ...
//
double scoreMultiplier = 1.5;
//
bool isConsolidationScoreBullish =
provider.consolidationBullishScore > (provider.consolidationBearishScore * scoreMultiplier);
//
bool isConsolidationScoreBearish =
provider.consolidationBearishScore > (provider.consolidationBullishScore * scoreMultiplier);
//
// Detect Kumo Trend ...
bool isKumoBullish = provider.decisionXConditions.isSenkouSpanAOverB;
bool isKumoBearish = provider.decisionXConditions.isSenkouSpanAUnderB;
//
// Detect Nearest Cross ...
XOHCL tkCrossedBar;
ENUM_X_DIRECTION tkCrossDir;
bool hasNearestTenkanSenKijunSenCross =
provider
.decisionCycleHelper
.DetectNearestTenKijCross(
tkCrossedBar,
tkCrossDir,
zIndex //
);
//
bool isNearestTenkensSenCrossedOverKijunSen =
hasNearestTenkanSenKijunSenCross &&
IsBullish(tkCrossDir);
//
bool isNearestTenkensSenCrossedUnderKijunSen =
hasNearestTenkanSenKijunSenCross &&
IsBearish(tkCrossDir);
//
// Detect Price in TK Zone ...
bool isBarInsideTKZone =
isNearestTenkensSenCrossedOverKijunSen
? cBar.low < provider.decisionXConditions.tenkanSenBuffer[cIndex]
: isNearestTenkensSenCrossedUnderKijunSen
? cBar.high > provider.decisionXConditions.tenkanSenBuffer[cIndex]
: false;
//
// Checking Bar Based on Positions State ...
ENUM_X_DIRECTION iBarPosDir;
bool isBarValidForDir = provider.decisionCycleHelper
.mBarAnalyser
.IsValidForPosition(
cBar,
iBarPosDir //
);
bool isBarValidForBullish =
isBarValidForDir &&
IsBullish(iBarPosDir);
bool isBarValidForBearish =
isBarValidForDir &&
IsBearish(iBarPosDir);
//
// Summarize Conditions ...
//
isBullish =
//
isKumoBullish &&
isBarInsideTKZone &&
isBarValidForBullish &&
isConsolidationScoreBullish &&
isNearestTenkensSenCrossedOverKijunSen
//
;
//
isBearish =
//
isKumoBearish &&
isBarInsideTKZone &&
isBarValidForBearish &&
isConsolidationScoreBearish &&
isNearestTenkensSenCrossedUnderKijunSen
//
;
//
result =
isBullish ||
isBearish;
if (result)
{
//
signalProvider = X121SMC_XICH_PROVIDER_XTKKUMO;
//
signalBoxDir =
isBullish
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
//
signalBox.from = pPBar.time;
signalBox.to = TimeCurrent();
signalBox.dir = signalBoxDir;
signalBox.symbol = cBar.symbol;
signalBox.period = cBar.period;
//
pivot = isBullish
? cBar.low - (points * 5)
: cBar.high + (points * 5);
//
point = GetEntry(
cBar.symbol,
signalBoxDir //
);
//
signalBox.upper =
isBullish
? point
: pivot;
//
signalBox.lower =
isBullish
? pivot
: point;
}
//
hasSignalBox = signalBox.IsValid();
//
tkCrossedBar.Clean();
}
// Update Models To Time ...
UpdateTo(cTime);
//
// Cleanup Signal if UnApproved ...
@@ -370,8 +236,11 @@ class XCX121SMCXICHSignalDetector : public XCBase
}
//
// Check Signal Conditions ...
if (hasSignalBox)
// Summarize Results ...
result = hasSignalBox;
//
if (result)
{
//
int idx = -1;
@@ -437,7 +306,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
//
// Fix rf Reward ...
rfRewar = 2;
rfRewar = 1.5;
}
//
@@ -488,18 +357,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
targets //
);
}
}
//
// Summarize Results ...
// result = hasPriority &&
// hasSignalBox &&
// hasRewardAmount;
result = hasSignalBox;
//
if (result)
{
//
Copy(
sls,
@@ -531,6 +389,9 @@ class XCX121SMCXICHSignalDetector : public XCBase
Clean(sls);
Clean(targets);
//
cParser.Clean();
//
provider.Clean();
@@ -2184,6 +2184,9 @@ struct X121SMCStrategyXWZWorkingZone
box.Clean();
}
//
cPraser.Clean();
//
return result;
}