This commit is contained in:
2025-03-07 11:53:51 +03:30
parent 5534bde7e5
commit f050a00b44
5 changed files with 1119 additions and 68 deletions
@@ -164,12 +164,14 @@ class XCX121SMCXWZSignalDetector : public XCBase
double targets[];
double reward = 0;
XBoxZone signalBox;
int activatedFVGIDX = 0;
int activatedZoneIDX = 0;
double amountPercent = 0;
bool hasPriority = false;
int activatedFVGIDX = -1;
int activatedBoxIDX = -1;
int activatedZoneIDX = -1;
double amountPercent = -1;
bool hasSignalBox = false;
bool hasWaitingZones = false;
bool hasWaitingBoxes = false;
bool hasRewardAmount = false;
bool isSignalBoxReversal = false;
bool hasWorkingZoneOveralDirection = false;
@@ -214,10 +216,14 @@ class XCX121SMCXWZSignalDetector : public XCBase
.DetectOveralDirection(wzOveralDir);
//
// Detect Zones and Boxes ...
hasWaitingZones = workingZone.DetectZone(
provider //
);
//
hasWaitingBoxes = workingZone.HasWaitingBoxes();
//
// Checking Working Zone Destory or not ...
bool isWorkingZoneDestroyed = workingZone.IsDestroyed(
@@ -264,8 +270,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
true, // Draw Supply Zone ...
true, // Draw Demand Zone ...
true, // Draw Waiting Zones ...
true // Draw Waiting Zones Box Area ...
true // Draw Waiting Zones ...
//
);
}
@@ -276,7 +281,9 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Detect Signal Box ...
hasSignalBox =
//
bool isZoneActivated =
hasWorkingZone &&
hasWaitingZones &&
workingZone.IsZoneActivated(
@@ -285,23 +292,38 @@ class XCX121SMCXWZSignalDetector : public XCBase
provider,
zIndex //
);
//
bool isBoxActivated =
hasWorkingZone &&
hasWaitingBoxes &&
workingZone.IsBoxActivated(
activatedBoxIDX,
provider,
zIndex //
);
//
hasSignalBox =
isBoxActivated ||
isZoneActivated;
if (hasSignalBox)
{
//
signalBox.Clean();
//
XOBFVG iOBFVG = workingZone.waitingZones[activatedZoneIDX];
XCFVG *activatedFVG = iOBFVG.fvgs[activatedFVGIDX];
hasSignalBox = ToBox(
signalBox,
activatedFVG //
);
if (hasSignalBox)
if (isZoneActivated)
{
//
signalBox.to = cTime;
signalBoxDir = signalBox.dir;
XOBFVG iOBFVG = workingZone.waitingZones[activatedZoneIDX];
XCFVG *activatedFVG = iOBFVG.fvgs[activatedFVGIDX];
hasSignalBox = ToBox(
signalBox,
activatedFVG //
);
//
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_ZONE;
//
@@ -326,13 +348,48 @@ class XCX121SMCXWZSignalDetector : public XCBase
1 //
);
}
//
iOBFVG.Clean();
ZeroMemory(activatedFVG);
}
//
iOBFVG.Clean();
ZeroMemory(activatedFVG);
if (isBoxActivated)
{
//
signalBox = workingZone.waitingBoxes[activatedBoxIDX];
//
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX;
//
AddRef(
signalBox,
workingZone.unavailableBoxes //
);
//
ArrayRemove(
workingZone.waitingBoxes,
activatedBoxIDX,
1 //
);
}
//
if (hasSignalBox)
{
//
signalBox.to = cTime;
signalBoxDir = signalBox.dir;
}
}
//
//
//
//
// Remove Invalidate Zones ...
if (hasWaitingZones)
@@ -343,6 +400,16 @@ class XCX121SMCXWZSignalDetector : public XCBase
hasWaitingZones = workingZone.HasWaitingZones();
}
//
// Remove InValidate Boxes ...
if (hasWaitingBoxes)
{
//
// Validate Waiting Boxes ...
workingZone.ValidateWaitingBoxes(zIndex);
hasWaitingBoxes = workingZone.HasWaitingBoxes();
}
//
//
//
@@ -413,6 +480,12 @@ class XCX121SMCXWZSignalDetector : public XCBase
? signalBox.upper
: signalBox.lower;
//
double entry = GetEntry(
signalBox.symbol,
signalBoxDir //
);
//
double iSL = 0;
@@ -432,6 +505,11 @@ class XCX121SMCXWZSignalDetector : public XCBase
// }
//
double iAtr = provider.decisionXConditions.atrBuffer[1];
iAtr *= 1.5;
//
// Default SL ...
iSL = pivot;
//
@@ -443,19 +521,13 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Select Condition SL ...
//
double entry = GetEntry(
signalBox.symbol,
signalBoxDir //
);
//
double slsMin = GetMin(sls);
double slsMax = GetMax(sls);
//
double longSL = slsMin;
double shortSL = slsMax;
double longSL = slsMin - iAtr;
double shortSL = slsMax + iAtr;
//
sl = isBullish