This commit is contained in:
2025-02-17 18:51:14 +03:30
parent a6b05d349e
commit 8d24dce5d2
3 changed files with 1939 additions and 1206 deletions
+152 -306
View File
@@ -225,139 +225,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Setup Conditions ...
//
XOHCL decisionZBar;
XOHCL decisionCBar;
XOHCL decisionPBar;
double decisionCBarBullishZoneChechValue = 0;
double decisionCBarBearishZoneChechValue = 0;
//
result = decisionZBar.Init(
decisionState.symbol,
decisionState.period,
0 //
);
if (!result)
{
//
Clean(visionPoiEvents);
Clean(analysePoiEvents);
Clean(decisionPoiEvents);
Clean(visionCycleEvents);
Clean(analyseCycleEvents);
Clean(decisionCycleEvents);
Clean(consolidationPoiEvents);
Clean(consolidationCycleEvents);
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
visionXConditions.Clean();
consolidationState.Clean();
decisionConditions.Clean();
analyseXConditions.Clean();
decisionXConditions.Clean();
consolidationConditions.Clean();
consolidationXConditions.Clean();
//
mConditions.Clean();
//
return result;
}
//
result = decisionZBar
.GetPreviousBar(decisionCBar);
if (!result)
{
//
Clean(visionPoiEvents);
Clean(analysePoiEvents);
Clean(decisionPoiEvents);
Clean(visionCycleEvents);
Clean(analyseCycleEvents);
Clean(decisionCycleEvents);
Clean(consolidationPoiEvents);
Clean(consolidationCycleEvents);
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
visionXConditions.Clean();
consolidationState.Clean();
decisionConditions.Clean();
analyseXConditions.Clean();
decisionXConditions.Clean();
consolidationConditions.Clean();
consolidationXConditions.Clean();
//
mConditions.Clean();
//
return result;
}
//
result = decisionCBar
.GetPreviousBar(decisionPBar);
if (!result)
{
//
Clean(visionPoiEvents);
Clean(analysePoiEvents);
Clean(decisionPoiEvents);
Clean(visionCycleEvents);
Clean(analyseCycleEvents);
Clean(decisionCycleEvents);
Clean(consolidationPoiEvents);
Clean(consolidationCycleEvents);
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
visionXConditions.Clean();
consolidationState.Clean();
decisionConditions.Clean();
analyseXConditions.Clean();
decisionXConditions.Clean();
consolidationConditions.Clean();
consolidationXConditions.Clean();
//
mConditions.Clean();
//
return result;
}
//
decisionCBarBullishZoneChechValue = decisionCBar
.GetZoneCheckValue(X_DIRECTION_BULLISH);
decisionCBarBearishZoneChechValue = decisionCBar
.GetZoneCheckValue(X_DIRECTION_BEARISH);
//
// Check Working Zone ...
bool hasWorkingZone = mConditions.HasWorkingZone();
@@ -389,9 +256,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
@@ -448,9 +312,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
@@ -500,9 +361,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
@@ -526,28 +384,11 @@ class XCX121SMCXWZSignalDetector : public XCBase
}
//
// Detect Start Zones ...
bool hasStartZone = mConditions.HasStartZones();
if (!hasStartZone)
{
//
hasStartZone = mConditions.DetectStartZones(
trend,
analyseState,
decisionCycleHelper //
);
//
if (hasStartZone)
{
//
mConditions.UpdateTo(cTime);
DrawConditions(
mConditions,
visionCycleHelper.mPOIDrawer //
);
}
}
bool hasStartZone = mConditions.DetectStartZones(
trend,
analyseState,
decisionCycleHelper //
);
//
mConditions.UpdateTo(cTime);
@@ -586,93 +427,59 @@ class XCX121SMCXWZSignalDetector : public XCBase
// - What we looking for: Long or Short ...
// - Priority ...
//
double pivot = 0;
double point = 0;
ENUM_X_DIRECTION conditionsDir = X_DIRECTION_NONE;
//
// Detect Start Zone Conditions ...
bool hasConditions = mConditions
.HasConditions(
pivot,
point,
conditionsDir,
decisionState,
zIndex,
decisionState.period //
);
result = hasConditions;
if (!result)
{
//
Clean(visionPoiEvents);
Clean(analysePoiEvents);
Clean(decisionPoiEvents);
Clean(visionCycleEvents);
Clean(analyseCycleEvents);
Clean(decisionCycleEvents);
Clean(consolidationPoiEvents);
Clean(consolidationCycleEvents);
//
visionState.Clean();
analyseState.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
visionXConditions.Clean();
consolidationState.Clean();
decisionConditions.Clean();
analyseXConditions.Clean();
decisionXConditions.Clean();
consolidationConditions.Clean();
consolidationXConditions.Clean();
//
return result;
}
//
DrawConditions(
mConditions,
visionCycleHelper.mPOIDrawer //
);
//
double pivot = 0;
double point = 0;
bool hasCondition = false;
ENUM_X_DIRECTION conditionsDir = X_DIRECTION_NONE;
//
// Detect Start Zone Conditions ...
hasCondition = mConditions
.HasConditions(
conditionsDir,
decisionState,
zIndex,
decisionState.period //
);
if (hasCondition)
{
// //
// XBoxZone startZoneBox;
// bool hasBox = mConditions.startZone.AsBox(startZoneBox);
// if (hasBox)
// {
// //
// bool isBullish = IsBullish(conditionsDir);
// //
// pivot =
// isBullish
// ? startZoneBox.lower
// : startZoneBox.upper;
// //
// point =
// isBullish
// ? startZoneBox.upper
// : startZoneBox.lower;
// }
}
// //
// // Detect Supply and Deman Zone Based Conditions ...
// if (!hasCondition)
// {
// //
// bool isPriceInsideSupplyZone =
// bearishPriority == X121SMC_XWZ_PRIORITY_STRONG_HIGH;
// //
// bool isPriceInsideDemandZone =
// bullishPriority == X121SMC_XWZ_PRIORITY_STRONG_HIGH;
// //
// bool isPriceInsideSupDem = isPriceInsideSupplyZone ||
// isPriceInsideDemandZone;
// if (isPriceInsideSupDem)
// {
// //
// hasCondition = mConditions.HasWorkingZoneConditions(
// conditionsDir,
// decisionState //
// );
// //
// if (hasCondition)
// {
// //
// if (IsBullish(conditionsDir))
// {
// //
// pivot = mConditions.demandZone.Lower();
// point = mConditions.demandZone.Upper();
// }
// else if (IsBearish(conditionsDir))
// {
// //
// pivot = mConditions.supplyZone.Upper();
// point = mConditions.supplyZone.Lower();
// }
// }
// }
// }
//
isBullish = IsBullish(conditionsDir);
isBearish = IsBearish(conditionsDir);
@@ -690,6 +497,52 @@ class XCX121SMCXWZSignalDetector : public XCBase
amountPercent //
);
//
// Apply Traget ...
switch (priority)
{
//
case X121SMC_XWZ_PRIORITY_STRONG_HIGH:
//
target =
isBullish
? mConditions.workingZone.quarter3
: mConditions.workingZone.quarter1;
break;
//
case X121SMC_XWZ_PRIORITY_HIGH:
//
target =
isBullish
? mConditions.workingZone.quarter3
: mConditions.workingZone.quarter1;
break;
//
case X121SMC_XWZ_PRIORITY_REGULAR:
//
target =
isBullish
? mConditions.workingZone.quarter2
: mConditions.workingZone.quarter2;
break;
//
case X121SMC_XWZ_PRIORITY_LOW:
//
target =
isBullish
? mConditions.workingZone.quarter1
: mConditions.workingZone.quarter3;
break;
//
default:
target = 0;
break;
}
//
bool hasLastBullishConsolidationZone = false;
bool hasLastBearishConsolidationZone = false;
@@ -699,6 +552,10 @@ class XCX121SMCXWZSignalDetector : public XCBase
XConsolidationZone lastBearishConsolidationZone;
XConsolidationZone prevBullishConsolidationZone;
XConsolidationZone prevBearishConsolidationZone;
bool isLastBullishConsolidationZoneInsidePivot = false;
bool isPrevBullishConsolidationZoneInsidePivot = false;
bool isLastBearishConsolidationZoneInsidePivot = false;
bool isPrevBearishConsolidationZoneInsidePivot = false;
bool hasConsolidationZones = decisionCycleHelper.HasConsolidationZones();
if (hasConsolidationZones)
{
@@ -747,6 +604,38 @@ class XCX121SMCXWZSignalDetector : public XCBase
hasLastBearishConsolidationZone = lastBearishConsolidationZone.IsValid();
hasPrevBullishConsolidationZone = prevBullishConsolidationZone.IsValid();
hasPrevBearishConsolidationZone = prevBearishConsolidationZone.IsValid();
//
isLastBullishConsolidationZoneInsidePivot =
//
hasLastBullishConsolidationZone &&
(lastBullishConsolidationZone.lower < point &&
lastBullishConsolidationZone.upper > pivot)
//
;
isPrevBullishConsolidationZoneInsidePivot =
//
hasPrevBullishConsolidationZone &&
(prevBullishConsolidationZone.lower < point &&
prevBullishConsolidationZone.upper > pivot)
//
;
//
isLastBearishConsolidationZoneInsidePivot =
//
hasLastBearishConsolidationZone &&
(lastBearishConsolidationZone.upper > point &&
lastBearishConsolidationZone.lower < pivot)
//
;
isPrevBearishConsolidationZoneInsidePivot =
//
hasPrevBearishConsolidationZone &&
(prevBearishConsolidationZone.upper > point &&
prevBearishConsolidationZone.lower < pivot)
//
;
}
//
@@ -823,15 +712,26 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
bool isConsolidationZonePassed =
isBullish
//
? (point > 0 &&
pivot > 0 &&
pivot < point &&
hasPrevBullishConsolidationZone &&
point >= prevBullishConsolidationZone.upper)
point > prevBullishConsolidationZone.upper &&
(isLastBullishConsolidationZoneInsidePivot ||
isPrevBullishConsolidationZoneInsidePivot))
: (point > 0 &&
pivot > 0 &&
pivot > point &&
hasPrevBearishConsolidationZone &&
point <= prevBearishConsolidationZone.lower);
point < prevBearishConsolidationZone.lower &&
(isLastBearishConsolidationZoneInsidePivot ||
isPrevBearishConsolidationZoneInsidePivot))
//
;
//
result = hasCondition &&
result = hasConditions &&
hasRewardAmount &&
isPriorityPassed &&
trend == conditionsDir &&
@@ -851,9 +751,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
@@ -878,52 +775,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
return result;
}
//
// Apply Traget ...
switch (priority)
{
//
case X121SMC_XWZ_PRIORITY_STRONG_HIGH:
//
target =
isBullish
? mConditions.workingZone.quarter3
: mConditions.workingZone.quarter1;
break;
//
case X121SMC_XWZ_PRIORITY_HIGH:
//
target =
isBullish
? mConditions.workingZone.quarter3
: mConditions.workingZone.quarter1;
break;
//
case X121SMC_XWZ_PRIORITY_REGULAR:
//
target =
isBullish
? mConditions.workingZone.quarter2
: mConditions.workingZone.quarter2;
break;
//
case X121SMC_XWZ_PRIORITY_LOW:
//
target =
isBullish
? mConditions.workingZone.quarter1
: mConditions.workingZone.quarter3;
break;
//
default:
target = 0;
break;
}
//
mConditions.pivot = pivot;
mConditions.point = point;
@@ -956,9 +807,6 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
visionState.Clean();
analyseState.Clean();
decisionZBar.Clean();
decisionCBar.Clean();
decisionPBar.Clean();
decisionState.Clean();
visionConditions.Clean();
analyseConditions.Clean();
@@ -1148,18 +996,16 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
isBullish =
//
isBullish
// &&
// isPointBreaked
isBullish &&
isPointBreaked
//
;
//
isBearish =
//
isBearish
// &&
// isPointBreaked
isBearish &&
isPointBreaked
//
;