This commit is contained in:
2025-04-06 18:45:02 +03:30
parent ffcf43067e
commit 19a7cd7629
18 changed files with 1984 additions and 567 deletions
+63 -117
View File
@@ -108,11 +108,6 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
int loopback = 10;
//
int idx = -1;
int count = 0;
bool has = false;
//
mConditions.symbol = symbol;
mConditions.period = period;
@@ -209,6 +204,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
double point = 0;
double targets[];
XBoxZone signalBox;
XBoxZone signalZone;
bool hasSignalBox = false;
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
ENUM_X121SMC_XIND_PROVIDERS signalProvider = X121SMC_XIND_PROVIDER_NONE;
@@ -219,6 +215,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
int waitingBoxesCount = UpdateWaitingBoxes(
X_CYCLE_ANALYSE,
X_CYCLE_DECISION,
provider //
);
@@ -228,27 +225,26 @@ class XCX121SMCXINDSignalDetector : public XCBase
DrawBoxes(drawer);
//
if (hasWaitingBoxes)
// Detect Signal Boxes ...
hasSignalBox = HasXINDConditions(
mWaitingBoxes,
mActivatedBoxes,
mBreakedBoxes,
X_CYCLE_DECISION,
signalBox,
signalZone,
signalBoxDir,
provider,
zIndex //
);
if (hasSignalBox)
{
//
hasSignalBox = HasXPVConditions(
mWaitingBoxes,
mActivatedBoxes,
mBreakedBoxes,
X_CYCLE_DECISION,
signalBox,
signalBoxDir,
provider,
zIndex //
);
if (hasSignalBox)
{
//
signalProvider = X121SMC_XIND_PROVIDER_XSTR;
signalProvider = X121SMC_XIND_PROVIDER_XIND;
//
MakeSignalBoxUnAvailable(signalBox);
}
//
MakeSignalBoxUnAvailable(signalBox);
MakeSignalBoxUnAvailable(signalZone);
}
//
@@ -329,7 +325,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
// Select and Provide SL Based on ...
double iAtr = 0;
if (signalProvider == X121SMC_XIND_PROVIDER_XSTR)
if (signalProvider == X121SMC_XIND_PROVIDER_XIND)
{
//
iAtr = provider.decisionXConditions.atrBuffer[1];
@@ -445,7 +441,8 @@ class XCX121SMCXINDSignalDetector : public XCBase
bool DetectSignalTrigger(
X121SMCStrategyXINDSignalConditions &conditions,
X121SMCStrategySignalProviderData &provider,
int maxAllowedSetupAge = 60)
int maxAllowedSetupAge = 60 //
)
{
//
bool result = false;
@@ -1095,6 +1092,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
*/
int UpdateWaitingBoxes(
ENUM_X_CYCLES cycle,
ENUM_X_CYCLES vCycle,
X121SMCStrategySignalProviderData &provider //
)
{
@@ -1137,113 +1135,61 @@ class XCX121SMCXINDSignalDetector : public XCBase
// Detecting New Boxes ...
//
// Checking Bullish Fair Value Gaps ...
has = cState.HasBullishFairValueGaps();
XBoxZone tmpBoxes[];
count = cState.FairValueGapsAsBox(tmpBoxes);
has = IsValidSize(count);
if (has)
{
//
XBoxZone tmpBoxes[];
ToBox(
cState.bullishFairValueGaps,
tmpBoxes //
);
//
count = ArraySize(tmpBoxes);
has = IsValidSize(count);
if (has)
for (int i = 0; i < count; i++)
{
//
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = tmpBoxes[i];
bool isValid = IsBoxValid(
iBox,
0,
iBox.period //
);
if (!isValid)
{
//
iBox.Clean();
continue;
}
XBoxZone iBox = tmpBoxes[i];
//
has = IsBoxExists(iBox);
if (!has)
{
//
AddRef(
iBox,
mWaitingBoxes //
);
}
//
iBox.Clean();
}
}
//
Clean(tmpBoxes);
}
//
// Checking Bearish Fair Value Gaps ...
has = cState.HasBearishFairValueGaps();
if (has)
{
//
XBoxZone tmpBoxes[];
ToBox(
cState.bearishFairValueGaps,
tmpBoxes //
);
//
count = ArraySize(tmpBoxes);
has = IsValidSize(count);
if (has)
{
//
for (int i = 0; i < count; i++)
// Regular Validation of Boxes ...
bool isValid = IsBoxValid(
iBox,
0,
iBox.period //
);
if (!isValid)
{
//
XBoxZone iBox = tmpBoxes[i];
bool isValid = IsBoxValid(
iBox,
0,
iBox.period //
);
if (!isValid)
{
//
iBox.Clean();
continue;
;
}
//
has = IsBoxExists(iBox);
if (!has)
{
//
AddRef(
iBox,
mWaitingBoxes //
);
}
iBox.Clean();
continue;
}
//
// Conditional Validation of FVG Boxes ...
isValid = IsFVGBoxValid(
iBox,
vCycle,
provider //
);
if (!isValid)
{
//
iBox.Clean();
continue;
}
}
//
Clean(tmpBoxes);
//
has = IsBoxExists(iBox);
if (!has)
{
//
AddRef(
iBox,
mWaitingBoxes //
);
}
//
iBox.Clean();
}
}
Clean(tmpBoxes);
//
// Update Times ...