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