last ...
This commit is contained in:
@@ -0,0 +1,285 @@
|
||||
|
||||
//
|
||||
// Reading Previous Conditions ...
|
||||
ENUM_XPOI_EVENTS consolidationPoiEventsPrev[];
|
||||
ENUM_X_CYCLE_EVENTS consolidationCycleEventsPrev[];
|
||||
X121SMCCycleConditions consolidationConditionsPrev;
|
||||
result = consolidationCycleHelper.GetConditions(
|
||||
consolidationCycleEventsPrev,
|
||||
consolidationPoiEventsPrev,
|
||||
consolidationConditionsPrev,
|
||||
cIndex,
|
||||
loopback //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
X121SMCCycleConditions conditionState = consolidationConditions;
|
||||
X121SMCCycleConditions conditionStatePrev = consolidationConditionsPrev;
|
||||
|
||||
//
|
||||
XOHCL cCBar;
|
||||
result = cCBar.Init(
|
||||
conditionState.symbol,
|
||||
conditionState.period,
|
||||
cIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL cPBar;
|
||||
result = cCBar.GetPreviousBar(cPBar);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Engulf ...
|
||||
ENUM_X_DIRECTION cCBarEngulfDir;
|
||||
bool isCCBarEngulfed = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsEngulfBar(
|
||||
cCBar,
|
||||
cCBarEngulfDir,
|
||||
0 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishEngulfed =
|
||||
isCCBarEngulfed &&
|
||||
IsBullish(cCBarEngulfDir);
|
||||
bool isCCBarBearishEngulfed =
|
||||
isCCBarEngulfed &&
|
||||
IsBearish(cCBarEngulfDir);
|
||||
|
||||
//
|
||||
// Momentum ...
|
||||
ENUM_X_DIRECTION cCBarMomentumDir;
|
||||
bool isCCBarMomentum = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsMomentumBar(
|
||||
cCBar,
|
||||
cCBarMomentumDir,
|
||||
1 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishMomentum =
|
||||
isCCBarMomentum &&
|
||||
IsBullish(cCBarMomentumDir);
|
||||
bool isCCBarBearishMomentum =
|
||||
isCCBarMomentum &&
|
||||
IsBearish(cCBarMomentumDir);
|
||||
|
||||
//
|
||||
// Reject ...
|
||||
ENUM_X_DIRECTION cCBarRejectDir;
|
||||
bool isCCBarRejected = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsRejectionBar(
|
||||
cCBar,
|
||||
cCBarRejectDir,
|
||||
1 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishRejected =
|
||||
isCCBarRejected &&
|
||||
IsBullish(cCBarRejectDir);
|
||||
bool isCCBarBearishRejected =
|
||||
isCCBarRejected &&
|
||||
IsBearish(cCBarRejectDir);
|
||||
|
||||
//
|
||||
// Bar Checking Summary ...
|
||||
|
||||
//
|
||||
// Bullish ...
|
||||
bool isCCBarPassedBullish =
|
||||
//
|
||||
isCCBarBullishEngulfed ||
|
||||
isCCBarBullishMomentum ||
|
||||
isCCBarBullishRejected
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
// Bearish ...
|
||||
bool isCCBarPassedBearish =
|
||||
//
|
||||
isCCBarBearishEngulfed ||
|
||||
isCCBarBearishMomentum ||
|
||||
isCCBarBearishRejected
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
double cPeakPrev = conditionStatePrev.x121Conditions.peaksBuffer[0];
|
||||
double cValePrev = conditionStatePrev.x121Conditions.valesBuffer[0];
|
||||
|
||||
//
|
||||
double cPeak = conditionState.x121Conditions.peaksBuffer[1];
|
||||
double cVale = conditionState.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
bool isCPeakSame = cPeak == cPeakPrev;
|
||||
bool isCValeSame = cVale == cValePrev;
|
||||
|
||||
//
|
||||
bool isCNewPeakPrev = conditionStatePrev.x121Conditions.isNewPeak;
|
||||
bool isCNewPeakOverLastPrev = conditionStatePrev.x121Conditions.isNewPeakOverLast;
|
||||
bool isCNewPeakUnderLastPrev = conditionStatePrev.x121Conditions.isNewPeakUnderLast;
|
||||
|
||||
//
|
||||
bool isCNewValePrev = conditionStatePrev.x121Conditions.isNewVale;
|
||||
bool isCNewValeOverLastPrev = conditionStatePrev.x121Conditions.isNewValeOverLast;
|
||||
bool isCNewValeUnderLastPrev = conditionStatePrev.x121Conditions.isNewValeUnderLast;
|
||||
|
||||
//
|
||||
bool isCRSIOverSold = conditionState.x121Conditions.isRSIOverSold;
|
||||
bool isCRSICrossedOverOverSold = conditionState.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isCRSICrossedUnderOverSold = conditionState.x121Conditions.isRSICrossedUnderOverSold;
|
||||
|
||||
//
|
||||
bool isCRSIOverBought = conditionState.x121Conditions.isRSIOverBought;
|
||||
bool isCRSICrossedOverOverBought = conditionState.x121Conditions.isRSICrossedOverOverBought;
|
||||
bool isCRSICrossedUnderOverBought = conditionState.x121Conditions.isRSICrossedUnderOverBought;
|
||||
|
||||
//
|
||||
bool isCRSIOverSoldPrev = conditionStatePrev.x121Conditions.isRSIOverSold;
|
||||
bool isCRSICrossedOverOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isCRSICrossedUnderOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverSold;
|
||||
|
||||
//
|
||||
bool isCRSIOverBoughtPrev = conditionStatePrev.x121Conditions.isRSIOverBought;
|
||||
bool isCRSICrossedOverOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverBought;
|
||||
bool isCRSICrossedUnderOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverBought;
|
||||
|
||||
//
|
||||
isBullish =
|
||||
//
|
||||
isCNewValePrev &&
|
||||
isCCBarPassedBullish
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
//
|
||||
isCNewPeakPrev &&
|
||||
isCCBarPassedBearish
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.pivot =
|
||||
isBullish
|
||||
? conditionState.x121Conditions.valesBuffer[1]
|
||||
: conditionState.x121Conditions.peaksBuffer[1];
|
||||
|
||||
//
|
||||
double peak = analyseConditions.x121Conditions.peaksBuffer[1];
|
||||
double vale = analyseConditions.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
double strUpper = analyseConditions.x121Conditions.strUpBuffer[1];
|
||||
double strLower = analyseConditions.x121Conditions.strDownBuffer[1];
|
||||
|
||||
//
|
||||
bool isStrSwitchedToBullish = analyseConditions.x121Conditions.isStrSwitchedToBullish;
|
||||
bool isStrSwitchedToBearish = analyseConditions.x121Conditions.isStrSwitchedToBearish;
|
||||
|
||||
//
|
||||
isBullish = isStrSwitchedToBullish;
|
||||
isBearish = isStrSwitchedToBearish;
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.pivot =
|
||||
isBullish
|
||||
? peak
|
||||
: vale;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Looking For Sar Change ...
|
||||
|
||||
//
|
||||
double sar = analyseConditions.x121Conditions.sarBuffer[1];
|
||||
|
||||
//
|
||||
double peak = analyseConditions.x121Conditions.peaksBuffer[1];
|
||||
double vale = analyseConditions.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
bool isSarEqualsToPeak = analyseConditions.x121Conditions.isSarEqualsToPeak;
|
||||
bool isSarEqualsToVale = analyseConditions.x121Conditions.isSarEqualsToVale;
|
||||
|
||||
//
|
||||
bool isSarSwitchedToBullish = analyseConditions.x121Conditions.isSarSwitchedToBullish;
|
||||
bool isSarSwitchedToBearish = analyseConditions.x121Conditions.isSarSwitchedToBearish;
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
isSarEqualsToPeak &&
|
||||
isSarSwitchedToBullish;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
isSarEqualsToVale &&
|
||||
isSarSwitchedToBearish;
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
Print("Sar Switched ...");
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Detect a Zone Arround Price Zone ...
|
||||
int supplyZonesCount = consolidationState.CountSupplyZones();
|
||||
if (IsValidSize(supplyZonesCount)) {
|
||||
//
|
||||
for (int i = 0; i < supplyZonesCount; i++) {
|
||||
//
|
||||
XCSupplyZone *iZone = consolidationState.supplyZones[i];
|
||||
|
||||
//
|
||||
bool isOver = iZone.Lower() > pzUpper;
|
||||
bool isUnder = iZone.Upper() < pzLower;
|
||||
|
||||
//
|
||||
bool isValid =
|
||||
isOver ||
|
||||
isUnder;
|
||||
if (isValid) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user