This commit is contained in:
2025-03-09 10:13:19 +03:30
parent a81c09e2a5
commit 202ae585dd
4 changed files with 217 additions and 50 deletions
+25 -11
View File
@@ -1139,27 +1139,41 @@ bool IsBoxActivated(
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
int activatedFVGIDX = -1;
int activatedZoneIDX = -1;
bool hasWaitingZones = false;
//
// Remove Invalidate Zones ...
if (hasWaitingZones)
{
//
// Validate Waiting Zones ...
workingZone.ValidateWaitingZones(zIndex);
hasWaitingZones = workingZone.HasWaitingZones();
}
//
// Detect Zones and Boxes ...
// hasWaitingZones = workingZone.DetectZone(
// provider //
// );
//
hasWaitingBoxes = workingZone.HasWaitingBoxes();
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
@@ -164,15 +164,12 @@ class XCX121SMCXWZSignalDetector : public XCBase
double targets[]; double targets[];
double reward = 0; double reward = 0;
XBoxZone signalBox; XBoxZone signalBox;
XBoxZone signalHolderBox;
bool hasPriority = false; bool hasPriority = false;
int activatedFVGIDX = -1;
int activatedZoneIDX = -1;
double amountPercent = -1; double amountPercent = -1;
bool hasSignalBox = false; bool hasSignalBox = false;
bool hasWaitingZones = false;
bool hasWaitingBoxes = false; bool hasWaitingBoxes = false;
bool hasRewardAmount = false; bool hasRewardAmount = false;
bool isSignalBoxReversal = false;
bool hasWorkingZoneOveralDirection = false; bool hasWorkingZoneOveralDirection = false;
ENUM_X_DIRECTION wzOveralDir = X_DIRECTION_NONE; ENUM_X_DIRECTION wzOveralDir = X_DIRECTION_NONE;
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE; ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
@@ -214,15 +211,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
hasWorkingZoneOveralDirection = workingZone hasWorkingZoneOveralDirection = workingZone
.DetectOveralDirection(wzOveralDir); .DetectOveralDirection(wzOveralDir);
//
// Detect Zones and Boxes ...
// hasWaitingZones = workingZone.DetectZone(
// provider //
// );
//
hasWaitingBoxes = workingZone.HasWaitingBoxes();
// //
// Checking Working Zone Destory or not ... // Checking Working Zone Destory or not ...
bool isWorkingZoneDestroyed = workingZone.IsDestroyed( bool isWorkingZoneDestroyed = workingZone.IsDestroyed(
@@ -284,6 +272,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
hasWorkingZone && hasWorkingZone &&
workingZone.DetectSignalConditions( workingZone.DetectSignalConditions(
signalBox, signalBox,
signalHolderBox,
signalBoxDir, signalBoxDir,
signalProvider, signalProvider,
provider, provider,
@@ -327,16 +316,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
// //
// //
//
// Remove Invalidate Zones ...
if (hasWaitingZones)
{
//
// Validate Waiting Zones ...
workingZone.ValidateWaitingZones(zIndex);
hasWaitingZones = workingZone.HasWaitingZones();
}
// //
// Remove InValidate Boxes ... // Remove InValidate Boxes ...
if (hasWaitingBoxes) if (hasWaitingBoxes)
@@ -357,6 +336,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
{ {
// //
signalBox.Clean(); signalBox.Clean();
signalHolderBox.Clean();
signalBoxDir = X_DIRECTION_NONE; signalBoxDir = X_DIRECTION_NONE;
} }
@@ -387,20 +367,37 @@ class XCX121SMCXWZSignalDetector : public XCBase
bool has = false; bool has = false;
// //
XCBoxObject *iObj; // Draw Signal Box ...
XCBoxObject *iSignalBoxObj;
has = drawer.DrawBox( has = drawer.DrawBox(
signalBox, signalBox,
iObj // iSignalBoxObj //
); );
if (has) if (has)
{ {
// //
iObj.BoxWidth(1); iSignalBoxObj.BoxWidth(1);
iObj.BoxColor(clrYellow); iSignalBoxObj.BoxColor(clrYellow);
iObj.BoxStyle(STYLE_SOLID); iSignalBoxObj.BoxStyle(STYLE_SOLID);
// //
workingZone.mDrawnObjects.Add(iObj); workingZone.mDrawnObjects.Add(iSignalBoxObj);
}
//
// Draw Signal Holder Box if Exists ...
if (signalHolderBox.IsValid())
{
//
XCBoxObject *iSignalHolderBoxObj;
has = drawer.DrawBox(
signalHolderBox,
iSignalHolderBoxObj //
);
if (has)
{
workingZone.mDrawnObjects.Add(iSignalHolderBoxObj);
}
} }
// //
@@ -847,6 +844,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
// //
signalBox.Clean(); signalBox.Clean();
signalHolderBox.Clean();
consolidationZBar.Clean(); consolidationZBar.Clean();
// //
+154 -2
View File
@@ -877,6 +877,7 @@ struct X121SMCStrategyXWZWorkingZone
// //
bool DetectSignalConditions( bool DetectSignalConditions(
XBoxZone &box, XBoxZone &box,
XBoxZone &holderBox,
ENUM_X_DIRECTION &dir, ENUM_X_DIRECTION &dir,
ENUM_X121SMC_XWZ_PROVIDERS &signalProvider, ENUM_X121SMC_XWZ_PROVIDERS &signalProvider,
X121SMCStrategySignalProviderData &provider, X121SMCStrategySignalProviderData &provider,
@@ -891,6 +892,7 @@ struct X121SMCStrategyXWZWorkingZone
// //
box.Clean(); box.Clean();
holderBox.Clean();
dir = X_DIRECTION_NONE; dir = X_DIRECTION_NONE;
signalProvider = X121SMC_XWZ_PROVIDER_NONE; signalProvider = X121SMC_XWZ_PROVIDER_NONE;
@@ -907,6 +909,11 @@ struct X121SMCStrategyXWZWorkingZone
return result; return result;
} }
//
int idx = -1;
int count = 0;
bool has = false;
// //
int zIDX = barIndex; int zIDX = barIndex;
int cIDX = zIDX + 1; int cIDX = zIDX + 1;
@@ -953,7 +960,7 @@ struct X121SMCStrategyXWZWorkingZone
// //
// Senario 1: // Senario 1:
// ---------- // ----------
bool useSenario1 = false; bool useSenario1 = true;
bool isSenario1Happend = false; bool isSenario1Happend = false;
bool isSenario1Bullish = false; bool isSenario1Bullish = false;
bool isSenario1Bearish = false; bool isSenario1Bearish = false;
@@ -1212,15 +1219,160 @@ struct X121SMCStrategyXWZWorkingZone
box.from = pBar.time; box.from = pBar.time;
} }
//
// Detect Holder Box ...
XBoxZone tmpBoxes[];
if (isSenario1Bullish)
{
//
// Demand Zones ...
XBoxZone tmp[];
ToBox(
provider.visionState.demandZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Order Blocks ...
ToBox(
provider.visionState.bullishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Fair Value Gaps ...
ToBox(
provider.visionState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
}
else
{
//
// Supply Zones ...
XBoxZone tmp[];
ToBox(
provider.visionState.supplyZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Order Blocks ...
ToBox(
provider.visionState.bearishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Fair Value Gaps ...
ToBox(
provider.visionState.bearishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
}
//
has = HasChild(tmpBoxes);
if (has)
{
//
while (HasChild(tmpBoxes))
{
//
idx = GetOldest(tmpBoxes);
has = IsValidIndex(idx);
if (!has)
{
break;
}
//
XBoxZone iBox = tmpBoxes[idx];
ArrayRemove(
tmpBoxes,
idx,
1 //
);
//
has = IsBoxInside(
box,
iBox //
);
if (has)
{
//
holderBox = iBox;
holderBox.to = TimeCurrent();
iBox.Clean();
break;
}
//
iBox.Clean();
}
}
//
Clean(tmpBoxes);
// //
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX; signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX;
//
// Validate Conditions to Force Has Holder Box ...
// isSenario1Happend =
// holderBox.IsValid() &&
// isSenario1Happend;
// if (!isSenario1Happend)
// {
// //
// isSenario1Bullish = false;
// isSenario1Bearish = false;
// }
} }
} }
// //
// Senario 2: // Senario 2:
// ---------- // ----------
bool useSenario2 = true; bool useSenario2 = false;
bool isSenario2Happend = false; bool isSenario2Happend = false;
bool isSenario2Bullish = false; bool isSenario2Bullish = false;
bool isSenario2Bearish = false; bool isSenario2Bearish = false;
@@ -42,6 +42,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// //
// Props ... // Props ...
bool useXWZSignal; bool useXWZSignal;
bool useXWZSignalGuard;
XCX121SMCXWZSignalDetector *mXWZSignalDetector; XCX121SMCXWZSignalDetector *mXWZSignalDetector;
X121SMCStrategySignalProviderData cycleProvider; X121SMCStrategySignalProviderData cycleProvider;
@@ -414,7 +415,8 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// //
// XWZ Guard Detection ... // XWZ Guard Detection ...
if (useXWZSignal) if (useXWZSignal &&
useXWZSignalGuard)
{ {
// //
X121SMCGuard xwzGuards[]; X121SMCGuard xwzGuards[];
@@ -690,6 +692,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
{ {
// //
useXWZSignal = true; useXWZSignal = true;
useXWZSignalGuard = false;
// //
string symbol = GetSymbol(); string symbol = GetSymbol();
@@ -788,7 +791,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// //
// XPV ... // XPV ...
x121Inputs.xpvInputs.showSar = showAll || true; x121Inputs.xpvInputs.showSar = showAll || false;
x121Inputs.xpvInputs.showPeaks = showAll || true; x121Inputs.xpvInputs.showPeaks = showAll || true;
x121Inputs.xpvInputs.showVales = showAll || true; x121Inputs.xpvInputs.showVales = showAll || true;
x121Inputs.xpvInputs.showGoldenZones = showAll || true; x121Inputs.xpvInputs.showGoldenZones = showAll || true;
@@ -797,8 +800,8 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// XHK ... // XHK ...
// //
x121Inputs.xhkInputs.drawRawXHKCandles = showAll || true; x121Inputs.xhkInputs.drawRawXHKCandles = showAll || false;
x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || true; x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || false;
// //
// XATR ... // XATR ...
@@ -813,10 +816,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// //
// XCHE ... // XCHE ...
x121Inputs.xcheInputs.showLE1 = showAll || true; x121Inputs.xcheInputs.showLE1 = showAll || false;
x121Inputs.xcheInputs.showLE2 = showAll || true; x121Inputs.xcheInputs.showLE2 = showAll || false;
x121Inputs.xcheInputs.showSE1 = showAll || true; x121Inputs.xcheInputs.showSE1 = showAll || false;
x121Inputs.xcheInputs.showSE2 = showAll || true; x121Inputs.xcheInputs.showSE2 = showAll || false;
// //
// XDON ... // XDON ...