This commit is contained in:
2025-03-18 23:41:12 +03:30
parent 3e82c26a3d
commit 9f0ebd1afe
6 changed files with 1328 additions and 1327 deletions
+180 -2
View File
@@ -1399,7 +1399,7 @@ class XCBarAnalyser : public XCBase
// //
// Select OB Candidate Bars ... // Select OB Candidate Bars ...
XOHCL sameBar; XOHCL sameBar;
XOHCL rootBar; XOHCL rootBar;
XOHCL rootPBar; XOHCL rootPBar;
@@ -1553,7 +1553,7 @@ class XCBarAnalyser : public XCBase
// //
// Cleanup Resource ... // Cleanup Resource ...
// //
sBar.Clean(); sBar.Clean();
rootBar.Clean(); rootBar.Clean();
@@ -2448,6 +2448,184 @@ class XCBarAnalyser : public XCBase
return result; return result;
} }
//
//
//
/**
* Check a Bar is Valid for Specified Direction of Positions ...
*
* @param bar: XOHCL instance, Start Bar ...
* @param dir: ENUM_X_DIRECTION member, Provide Direction ...
*
* @return ( bool )
*/
bool IsValidForPosition(
XOHCL &bar,
ENUM_X_DIRECTION &dir //
)
{
//
bool result = false;
//
int loopback = 3;
dir = X_DIRECTION_NONE;
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
// DOJI ...
ENUM_X_DIRECTION dojiDir;
bool isDoji = IsDoji(
bar,
dojiDir //
);
bool isBullishDoji =
isDoji &&
IsBullish(dojiDir);
bool isBearishDoji =
isDoji &&
IsBearish(dojiDir);
//
// SWING ...
ENUM_X_DIRECTION swingDir;
bool isSwing = IsSwing(
bar,
swingDir //
);
bool isBullishSwing =
isSwing &&
IsBullish(swingDir);
bool isBearishSwing =
isSwing &&
IsBearish(swingDir);
//
// HAMMER ...
ENUM_X_DIRECTION hammerDir;
bool isHammer = IsHammer(
bar,
hammerDir //
);
bool isBullishHammer =
isHammer &&
IsBullish(hammerDir);
bool isBearishHammer =
isHammer &&
IsBearish(hammerDir);
//
// ENGULF ...
ENUM_X_DIRECTION engulfDir;
bool isEngulfed = IsEngulfed(
bar,
engulfDir //
);
bool isBullishEngulfed =
isEngulfed &&
IsBullish(engulfDir);
bool isBearishEngulfed =
isEngulfed &&
IsBearish(engulfDir);
//
// REJECTED ...
ENUM_X_DIRECTION rejectedDir;
bool isRejected = IsRejected(
bar,
rejectedDir //
);
bool isBullishRejected =
isRejected &&
IsBullish(rejectedDir);
bool isBearishRejected =
isRejected &&
IsBearish(rejectedDir);
//
// MOMENTUM ...
ENUM_X_DIRECTION momentumDir;
bool isMomentum = IsMomentum(
bar,
momentumDir //
);
bool isBullishMomentum =
isMomentum &&
IsBullish(momentumDir);
bool isBearishMomentum =
isMomentum &&
IsBearish(momentumDir);
//
// PULLBACK ...
ENUM_X_DIRECTION pullbackDir;
bool isPullback = IsPullback(
bar,
pullbackDir //
);
bool isBullishPullback =
isPullback &&
IsBullish(pullbackDir);
bool isBearishPullback =
isPullback &&
IsBearish(pullbackDir);
//
// Summarize Conditions ...
//
bool isBullishOr =
isBullishDoji ||
isBullishSwing ||
isBullishHammer ||
isBullishEngulfed ||
isBullishRejected ||
isBullishMomentum ||
isBullishPullback;
//
bool isBearishOr =
isBearishDoji ||
isBearishSwing ||
isBearishHammer ||
isBearishEngulfed ||
isBearishRejected ||
isBearishMomentum ||
isBearishPullback;
//
bool isBullish =
isBullishOr &&
!isBearishOr;
//
bool isBearish =
!isBullishOr &&
isBearishOr;
//
result = isBullish ||
isBearish;
if (result)
{
//
dir =
isBullish
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
}
//
return result;
}
// //
protected: protected:
// //
+543
View File
@@ -0,0 +1,543 @@
//
bool HasSenario1Conditions(
ENUM_X_CYCLES cycle,
XBoxZone &box,
XBoxZone &holderBox,
ENUM_X_DIRECTION &dir,
X121SMCStrategySignalProviderData &provider,
ENUM_X_CYCLES holderCycle = X_CYCLE_NONE,
int barIndex = 0 //
)
{
//
bool result = false;
//
// Fil Selected Data ...
XPOIState cState;
X121Conditions cXConditions;
XC121SMCCycleHelper *cHelper;
X121SMCCycleConditions cConditions;
result = provider.SelectCycle(
cycle,
cState,
cXConditions,
cHelper,
cConditions //
);
if (!result)
{
//
cState.Clean();
ZeroMemory(cHelper);
cConditions.Clean();
cXConditions.Clean();
//
return result;
}
Parse(cXConditions);
//
// Fil Selected Data ...
XPOIState chState;
X121Conditions chXConditions;
XC121SMCCycleHelper *chHelper;
X121SMCCycleConditions chConditions;
if (holderCycle != X_CYCLE_NONE)
{
//
result = provider.SelectCycle(
holderCycle,
chState,
chXConditions,
chHelper,
chConditions //
);
if (!result)
{
//
chState.Clean();
ZeroMemory(chHelper);
chConditions.Clean();
chXConditions.Clean();
//
return result;
}
//
Parse(chXConditions);
}
//
// Normalize Args ...
//
box.Clean();
holderBox.Clean();
dir = X_DIRECTION_NONE;
//
if (barIndex < 0)
{
barIndex = 0;
}
//
int idx = -1;
int count = 0;
bool has = false;
//
int zIDX = barIndex;
int cIDX = zIDX + 1;
int pIDX = cIDX + 1;
//
bool isBullish = false;
bool isBearish = false;
//
XOHCL zBar;
XOHCL cBar;
XOHCL pBar;
//
// Initial Bars ...
result = zBar.Init(
cState.symbol,
cState.period,
barIndex //
);
result =
result &&
zBar.GetPreviousBar(cBar);
result =
result &&
cBar.GetPreviousBar(pBar);
if (!result)
{
//
zBar.Clean();
cBar.Clean();
pBar.Clean();
cState.Clean();
chState.Clean();
ZeroMemory(cHelper);
cConditions.Clean();
cXConditions.Clean();
ZeroMemory(chHelper);
chConditions.Clean();
chXConditions.Clean();
//
return result;
}
//
// Detecting Signal Conditions ...
//
bool isX3MAFastRejectUp =
//
cBar.low < cXConditions.x3maFastBuffer[cIDX] &&
cBar.GetDown() > cXConditions.x3maFastBuffer[cIDX]
//
;
//
bool isX3MAFastRejectDown =
//
cBar.high > cXConditions.x3maFastBuffer[cIDX] &&
cBar.GetUp() < cXConditions.x3maFastBuffer[cIDX]
//
;
//
// Find Breaker Bar ...
datetime nearCloseOverX3MAFast = cHelper.GetNearestCloseOverX3MAFast(cBar);
datetime nearCloseUnderX3MAFast = cHelper.GetNearestCloseUnderX3MAFast(cBar);
bool hasNearestCloseOverX3MAFast =
IsValid(nearCloseOverX3MAFast) &&
IsValid(nearCloseUnderX3MAFast)
? nearCloseOverX3MAFast > nearCloseUnderX3MAFast
: IsValid(nearCloseOverX3MAFast)
? true
: false;
bool hasNearestCloseUnderX3MAFast =
IsValid(nearCloseOverX3MAFast) &&
IsValid(nearCloseUnderX3MAFast)
? nearCloseUnderX3MAFast > nearCloseOverX3MAFast
: IsValid(nearCloseUnderX3MAFast)
? true
: false;
//
// Bullish Conditions ...
isBullish =
//
// Base Condition ...
(
//
cBar.IsBullish() &&
isX3MAFastRejectUp &&
cXConditions.isSMHKBullish &&
hasNearestCloseOverX3MAFast &&
cXConditions.xhkSMOpenBuffer[cIDX] < cXConditions.x3maMidBuffer[cIDX]
//
)
//
;
//
// Bearish Conditions ...
isBearish =
//
// Base Condition ...
(
//
cBar.IsBearish() &&
isX3MAFastRejectDown &&
cXConditions.isSMHKBearish &&
hasNearestCloseUnderX3MAFast &&
cXConditions.xhkSMOpenBuffer[cIDX] > cXConditions.x3maMidBuffer[cIDX]
//
)
//
;
//
// Filling Requirements ...
result =
isBullish ||
isBearish;
if (result)
{
//
dir =
isBullish
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
//
box.dir = dir;
box.to = TimeCurrent();
box.symbol = cXConditions.symbol;
box.period = cXConditions.period;
//
int fromIDX = -1;
if (isBullish)
{
//
fromIDX = GetBarIndex(
cBar.symbol,
cBar.period,
nearCloseOverX3MAFast //
);
}
else
{
//
fromIDX = GetBarIndex(
cBar.symbol,
cBar.period,
nearCloseUnderX3MAFast //
);
}
//
if (IsValidIndex(fromIDX))
{
//
box.from = iTime(
zBar.symbol,
zBar.period,
fromIDX //
);
}
else
{
box.from = pBar.time;
}
//
// Detect Holder Box ...
XBoxZone tmpBoxes[];
if (chState.IsValid())
{
//
if (isBullish)
{
//
// Demand Zones ...
XBoxZone tmp[];
ToBox(
chState.demandZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Order Blocks ...
ToBox(
chState.bullishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bullish Fair Value Gaps ...
ToBox(
chState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
}
else
{
//
// Supply Zones ...
XBoxZone tmp[];
ToBox(
chState.supplyZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Order Blocks ...
ToBox(
chState.bearishOrderBlocks,
tmp //
);
Copy(
tmp,
tmpBoxes,
false //
);
Clean(tmp);
//
// Bearish Fair Value Gaps ...
ToBox(
chState.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);
//
// Fix Box Upper and Lower based on Strategy ...
//
double points = GetPoints(box.symbol);
double minPointsDiff = points * 20;
//
double prefferSL = 0;
//
// Other SL Conditions ...
if (prefferSL <= 0)
{
//
prefferSL = cHelper
.mX121Helper
.xhkHelper
.GetSMHKOpen(fromIDX);
}
//
if (prefferSL > 0)
{
//
box.upper =
isBullish
? zBar.open
: prefferSL;
//
box.lower =
isBullish
? prefferSL
: zBar.open;
}
//
if (box.IsValid())
{
//
XCBoxObject *iObj;
bool isCreated = cHelper.mPOIDrawer.DrawBox(
box,
iObj //
);
if (isCreated)
{
//
iObj.BoxWidth(2);
iObj.BoxFill(true);
iObj.BoxStyle(STYLE_DOT);
//
Print("Signal ...");
}
}
//
// Validate Conditions to Force Has Holder Box ...
// //
// result =
// result &&
// holderBox.IsValid() &&
// dir == holderBox.dir;
// //
// if (!result)
// {
// //
// isBullish = false;
// isBearish = false;
// }
}
//
// Check All Conditions ...
result =
box.IsValid() &&
HasDirection(dir) &&
(isBullish ||
isBearish);
//
// Cleanup Resources ...
zBar.Clean();
cBar.Clean();
pBar.Clean();
cState.Clean();
chState.Clean();
ZeroMemory(cHelper);
cConditions.Clean();
cXConditions.Clean();
ZeroMemory(chHelper);
chConditions.Clean();
chXConditions.Clean();
//
return result;
}
///////////////////////////////////////////////////////////////
//
// Detecting Signal Conditions ...
//
// Bullish Conditions ...
isBullish =
//
// Base Condition ...
(
//
provider.visionXConditions.isSMHKBullish &&
provider.decisionXConditions.isSarBullish &&
provider.decisionXConditions.isVWapFastBullish &&
provider.decisionXConditions.isX3MaFastBullish &&
provider.consolidationXConditions.isSMHKBullish &&
provider.decisionXConditions.isSMHKSwitchedToBullish
//
)
//
;
//
// Bearish Conditions ...
isBearish =
//
// Base Condition ...
(
//
provider.visionXConditions.isSMHKBearish &&
provider.decisionXConditions.isSarBearish &&
provider.decisionXConditions.isVWapFastBearish &&
provider.decisionXConditions.isX3MaFastBearish &&
provider.consolidationXConditions.isSMHKBearish &&
provider.decisionXConditions.isSMHKSwitchedToBearish
//
)
//
;
File diff suppressed because it is too large Load Diff
@@ -224,7 +224,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
// Detectiong Signal Boxes ... // Detectiong Signal Boxes ...
hasWaitingBoxes = workingZone hasWaitingBoxes = workingZone
.DetectSignalBoxes( .DetectSignalBoxes(
X_CYCLE_ANALYSE, X_CYCLE_DECISION,
provider, provider,
zIndex // zIndex //
); );
@@ -464,58 +464,59 @@ class XCX121SMCXWZSignalDetector : public XCBase
// //
// Select and Provide SL Based on ... // Select and Provide SL Based on ...
double iAtr = 0; double iAtr = 0;
if (signalProvider == X121SMC_XWZ_PROVIDER_ACTIVATED_MA) if (signalProvider == X121SMC_XWZ_PROVIDER_XHKMA)
{ {
// //
iAtr = provider.decisionXConditions.atrBuffer[1]; iAtr = provider.decisionXConditions.atrBuffer[1];
iAtr *= 1.5; iAtr *= 0;
} }
else if (signalProvider == X121SMC_XWZ_PROVIDER_ACTIVATED_BOX) // else
{ // if (signalProvider == X121SMC_XWZ_PROVIDER_ACTIVATED_BOX)
// // {
iAtr = provider.decisionXConditions.atrBuffer[1]; // //
iAtr *= 1.5; // iAtr = provider.decisionXConditions.atrBuffer[1];
// iAtr *= 1.5;
// // // // //
// if (isBullish) // // if (isBullish)
// { // // {
// // // // //
// iSL = MathMin( // // iSL = MathMin(
// provider.decisionXConditions.le1Buffer[1], // // provider.decisionXConditions.le1Buffer[1],
// provider.decisionXConditions.le2Buffer[1] // // // provider.decisionXConditions.le2Buffer[1] //
// ); // // );
// if (iSL > 0) // // if (iSL > 0)
// { // // {
// // // // //
// Add( // // Add(
// iSL, // // iSL,
// sls // // // sls //
// ); // // );
// } // // }
// } // // }
// else // // else
// { // // {
// // // // //
// iSL = MathMax( // // iSL = MathMax(
// provider.decisionXConditions.se1Buffer[1], // // provider.decisionXConditions.se1Buffer[1],
// provider.decisionXConditions.se2Buffer[1] // // // provider.decisionXConditions.se2Buffer[1] //
// ); // // );
// if (iSL > 0) // // if (iSL > 0)
// { // // {
// // // // //
// Add( // // Add(
// iSL, // // iSL,
// sls // // // sls //
// ); // // );
// } // // }
// } // // }
} // }
else if (signalProvider == X121SMC_XWZ_PROVIDER_ACTIVATED_AREA) // else if (signalProvider == X121SMC_XWZ_PROVIDER_ACTIVATED_AREA)
{ // {
// // //
iAtr = provider.decisionXConditions.atrBuffer[1]; // iAtr = provider.decisionXConditions.atrBuffer[1];
iAtr *= 1.5; // iAtr *= 1.5;
} // }
// //
// Select Condition SL ... // Select Condition SL ...
+308 -93
View File
@@ -31,10 +31,7 @@
enum ENUM_X121SMC_XWZ_PROVIDERS enum ENUM_X121SMC_XWZ_PROVIDERS
{ {
X121SMC_XWZ_PROVIDER_NONE, X121SMC_XWZ_PROVIDER_NONE,
X121SMC_XWZ_PROVIDER_PVHK, X121SMC_XWZ_PROVIDER_XHKMA,
X121SMC_XWZ_PROVIDER_ACTIVATED_MA,
X121SMC_XWZ_PROVIDER_ACTIVATED_BOX,
X121SMC_XWZ_PROVIDER_ACTIVATED_AREA,
}; };
// //
@@ -478,6 +475,11 @@ struct X121SMCStrategyXWZWorkingZone
// //
bool result = false; bool result = false;
//
int idx = -1;
int count = 0;
bool has = false;
// //
if (barIndex < 0) if (barIndex < 0)
{ {
@@ -487,12 +489,14 @@ struct X121SMCStrategyXWZWorkingZone
// //
// Select Cycle ... // Select Cycle ...
XPOIState cState; XPOIState cState;
XPOIStateEvents cStateEvents;
X121Conditions cXConditions; X121Conditions cXConditions;
XC121SMCCycleHelper *cHelper; XC121SMCCycleHelper *cHelper;
X121SMCCycleConditions cConditions; X121SMCCycleConditions cConditions;
result = provider.SelectCycle( result = provider.SelectCycle(
cycle, cycle,
cState, cState,
cStateEvents,
cXConditions, cXConditions,
cHelper, cHelper,
cConditions // cConditions //
@@ -503,6 +507,7 @@ struct X121SMCStrategyXWZWorkingZone
cState.Clean(); cState.Clean();
ZeroMemory(cHelper); ZeroMemory(cHelper);
cConditions.Clean(); cConditions.Clean();
cStateEvents.Clean();
cXConditions.Clean(); cXConditions.Clean();
// //
@@ -510,30 +515,231 @@ struct X121SMCStrategyXWZWorkingZone
} }
// //
// Select Validate Rejection Boxes ... // Select Rejection Boxes ...
XBoxZone rejections[];
int count = cHelper // //
.DetectRejections( // // Select Validate Rejection Boxes ...
rejections, // XBoxZone rejections[];
barIndex // // int count = cHelper
); // .DetectRejections(
// rejections,
// barIndex //
// );
// //
// result = IsValidSize(count);
// if (result)
// {
// //
// for (int i = 0; i < count; i++)
// {
// //
// has = IsExists(rejections[i]);
// if (!has)
// {
// //
// AddRef(
// rejections[i],
// waitingBoxes //
// );
// }
// }
// }
// //
result = IsValidSize(count); // Select Order Blocks ...
if (result) // if (cStateEvents.hasNewOrderBlock)
// {
// //
// idx = GetYoungest(cState.orderBlocks);
// has = IsValidIndex(idx);
// if (has)
// {
// //
// XCOrderBlock *iOB = cState.orderBlocks[idx];
// //
// XBoxZone iBox;
// has = ToBox(
// iBox,
// iOB //
// );
// if (has)
// {
// //
// has = IsExists(iBox);
// if (!has)
// {
// //
// AddRef(
// iBox,
// waitingBoxes //
// );
// }
// }
// }
// }
//
// Select Fair Value Gaps ...
// if (cStateEvents.hasNewFairValueGap)
// {
// //
// idx = GetYoungest(cState.fairValueGaps);
// has = IsValidIndex(idx);
// if (has)
// {
// //
// XCFVG *iOB = cState.fairValueGaps[idx];
// //
// XBoxZone iBox;
// has = ToBox(
// iBox,
// iOB //
// );
// if (has)
// {
// //
// has = IsExists(iBox);
// if (!has)
// {
// //
// AddRef(
// iBox,
// waitingBoxes //
// );
// }
// }
// }
// }
//
// Select Supply/Demand Zones ...
// if (cStateEvents.hasNewSupplyZone)
// {
// //
// idx = GetYoungest(cState.supplyZones);
// has = IsValidIndex(idx);
// if (has)
// {
// //
// XCSupplyZone *iSupply = cState.supplyZones[idx];
// //
// XBoxZone iBox;
// has = ToBox(
// iBox,
// iSupply //
// );
// if (has)
// {
// //
// has = IsExists(iBox);
// if (!has)
// {
// //
// AddRef(
// iBox,
// waitingBoxes //
// );
// }
// }
// }
// }
// if (cStateEvents.hasNewDemandZone)
// {
// //
// idx = GetYoungest(cState.demandZones);
// has = IsValidIndex(idx);
// if (has)
// {
// //
// XCDemandZone *iDemand = cState.demandZones[idx];
// //
// XBoxZone iBox;
// has = ToBox(
// iBox,
// iDemand //
// );
// if (has)
// {
// //
// has = IsExists(iBox);
// if (!has)
// {
// //
// AddRef(
// iBox,
// waitingBoxes //
// );
// }
// }
// }
// }
//
// Select Support/Resistance Zones ...
if (cStateEvents.hasNewSupportZone)
{ {
// //
for (int i = 0; i < count; i++) idx = GetYoungest(cState.supportZones);
has = IsValidIndex(idx);
if (has)
{ {
// //
bool has = IsExists(rejections[i]); XCSupportZone *iSupport = cState.supportZones[idx];
if (!has)
//
XBoxZone iBox;
has = ToBox(
iBox,
iSupport //
);
if (has)
{ {
// //
AddRef( has = IsExists(iBox);
rejections[i], if (!has)
waitingBoxes // {
); //
AddRef(
iBox,
waitingBoxes //
);
}
}
}
}
if (cStateEvents.hasNewResistanceZone)
{
//
idx = GetYoungest(cState.resistanceZones);
has = IsValidIndex(idx);
if (has)
{
//
XCResistanceZone *iResistance = cState.resistanceZones[idx];
//
XBoxZone iBox;
has = ToBox(
iBox,
iResistance //
);
if (has)
{
//
has = IsExists(iBox);
if (!has)
{
//
AddRef(
iBox,
waitingBoxes //
);
}
} }
} }
} }
@@ -550,6 +756,7 @@ struct X121SMCStrategyXWZWorkingZone
ZeroMemory(cHelper); ZeroMemory(cHelper);
cConditions.Clean(); cConditions.Clean();
cXConditions.Clean(); cXConditions.Clean();
cStateEvents.Clean();
// //
return result; return result;
@@ -765,6 +972,13 @@ struct X121SMCStrategyXWZWorkingZone
return result; return result;
} }
/**
* Detect Trend Based On Boxes ...
*
* @param dir: ENUM_X_DIRECTION ember ...
*
* @return ( bool )
*/
bool DetectTreand( bool DetectTreand(
ENUM_X_DIRECTION &dir // ENUM_X_DIRECTION &dir //
) )
@@ -1014,6 +1228,7 @@ struct X121SMCStrategyXWZWorkingZone
box, box,
holderBox, holderBox,
dir, dir,
waitingBoxes,
provider, provider,
X_CYCLE_ANALYSE, X_CYCLE_ANALYSE,
barIndex // barIndex //
@@ -1032,7 +1247,7 @@ struct X121SMCStrategyXWZWorkingZone
// //
if (isSenario1Happend) if (isSenario1Happend)
{ {
signalProvider = X121SMC_XWZ_PROVIDER_PVHK; signalProvider = X121SMC_XWZ_PROVIDER_XHKMA;
} }
} }
@@ -1045,50 +1260,50 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario2Happend = false; bool isSenario2Happend = false;
bool isSenario2Bullish = false; bool isSenario2Bullish = false;
bool isSenario2Bearish = false; bool isSenario2Bearish = false;
if (useSenario2) // if (useSenario2)
{ // {
// // //
// Senario 2 Working Based on // // Senario 2 Working Based on
// Breaked Boxes ... // // Breaked Boxes ...
// Since we Works only // // Since we Works only
// when Has UnAvailable Boxes ... // // when Has UnAvailable Boxes ...
has = HasBreakedBoxes(); // has = HasBreakedBoxes();
if (has) // if (has)
{ // {
// // //
ENUM_X_DIRECTION overalTrend; // ENUM_X_DIRECTION overalTrend;
bool hasTrend = DetectOveralDirection(overalTrend); // bool hasTrend = DetectOveralDirection(overalTrend);
if (hasTrend) // if (hasTrend)
{ // {
// // //
isSenario2Happend = cParser.HasSenario2Conditions( // isSenario2Happend = cParser.HasSenario2Conditions(
X_CYCLE_DECISION, // X_CYCLE_DECISION,
breakedBoxes, // breakedBoxes,
box, // box,
dir, // dir,
provider, // provider,
barIndex // // barIndex //
); // );
// // //
isSenario2Bullish = // isSenario2Bullish =
isSenario2Happend && // isSenario2Happend &&
IsBullish(dir); // IsBullish(dir);
// // //
isSenario2Bearish = // isSenario2Bearish =
isSenario2Happend && // isSenario2Happend &&
IsBearish(dir); // IsBearish(dir);
// // //
if (isSenario2Happend) // if (isSenario2Happend)
{ // {
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX; // signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX;
} // }
} // }
} // }
} // }
// //
// Senario 3: // Senario 3:
@@ -1098,9 +1313,9 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario3Happend = false; bool isSenario3Happend = false;
bool isSenario3Bullish = false; bool isSenario3Bullish = false;
bool isSenario3Bearish = false; bool isSenario3Bearish = false;
if (useSenario3) // if (useSenario3)
{ // {
} // }
// //
// Senario 4: // Senario 4:
@@ -1111,35 +1326,35 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario4Happend = false; bool isSenario4Happend = false;
bool isSenario4Bullish = false; bool isSenario4Bullish = false;
bool isSenario4Bearish = false; bool isSenario4Bearish = false;
if (useSenario4) // if (useSenario4)
{ // {
// // //
isSenario4Happend = cParser.HasSenario4Conditions( // isSenario4Happend = cParser.HasSenario4Conditions(
X_CYCLE_ANALYSE, // X_CYCLE_ANALYSE,
box, // box,
holderBox, // holderBox,
dir, // dir,
provider, // provider,
X_CYCLE_CONSOLIDATION, // X_CYCLE_CONSOLIDATION,
barIndex // // barIndex //
); // );
// // //
isSenario4Bullish = // isSenario4Bullish =
isSenario4Happend && // isSenario4Happend &&
IsBullish(dir); // IsBullish(dir);
// // //
isSenario4Bearish = // isSenario4Bearish =
isSenario4Happend && // isSenario4Happend &&
IsBearish(dir); // IsBearish(dir);
// // //
if (isSenario4Happend) // if (isSenario4Happend)
{ // {
signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX; // signalProvider = X121SMC_XWZ_PROVIDER_ACTIVATED_BOX;
} // }
} // }
// //
// Senario 5: // Senario 5:
@@ -1149,9 +1364,9 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario5Happend = false; bool isSenario5Happend = false;
bool isSenario5Bullish = false; bool isSenario5Bullish = false;
bool isSenario5Bearish = false; bool isSenario5Bearish = false;
if (useSenario5) // if (useSenario5)
{ // {
} // }
// //
// Summarize All Senario(s) Conditions ... // Summarize All Senario(s) Conditions ...
+13 -13
View File
@@ -786,27 +786,27 @@ 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 || false;
x121Inputs.xpvInputs.showVales = showAll || true; x121Inputs.xpvInputs.showVales = showAll || false;
x121Inputs.xpvInputs.showSupports = showAll || true; x121Inputs.xpvInputs.showSupports = showAll || false;
x121Inputs.xpvInputs.showResistances = showAll || true; x121Inputs.xpvInputs.showResistances = showAll || false;
x121Inputs.xpvInputs.showGoldenZones = showAll || true; x121Inputs.xpvInputs.showGoldenZones = showAll || false;
// //
// XHK ... // XHK ...
// //
x121Inputs.xhkInputs.drawRawXHKCandles = showAll || false; x121Inputs.xhkInputs.drawRawXHKCandles = showAll || false;
x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || true; x121Inputs.xhkInputs.drawSmoothedXHKCandles = showAll || false;
// //
// XMAS ... // XMAS ...
// //
x121Inputs.xmasInputs.showUpper = showAll || true; x121Inputs.xmasInputs.showUpper = showAll || false;
x121Inputs.xmasInputs.showMid = showAll || true; x121Inputs.xmasInputs.showMid = showAll || false;
x121Inputs.xmasInputs.showLower = showAll || true; x121Inputs.xmasInputs.showLower = showAll || false;
// //
// XATR ... // XATR ...
@@ -841,9 +841,9 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
// //
// X3MA ... // X3MA ...
x121Inputs.x3maInputs.showX3MaFast = showAll || false; x121Inputs.x3maInputs.showX3MaFast = showAll || true;
x121Inputs.x3maInputs.showX3MaMid = showAll || false; x121Inputs.x3maInputs.showX3MaMid = showAll || true;
x121Inputs.x3maInputs.showX3MaSlow = showAll || false; x121Inputs.x3maInputs.showX3MaSlow = showAll || true;
// //
// Initialize Cycle Helpers ... // Initialize Cycle Helpers ...