last ...
This commit is contained in:
@@ -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();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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 ...
|
||||||
|
|||||||
Reference in New Issue
Block a user