Files
MQL5Data/Documents/BKP/1/3.mq5
T
2025-01-13 12:31:09 +03:30

320 lines
8.5 KiB
Plaintext

//
// 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) {
}
}
}
//
// Method 1 ...
// VWap Switch Start ...
//
bool bullishMethod1 =
//
isSarBullish &&
isStrBullish &&
isSlopesBullish &&
hasBullishTrend &&
cBar.IsBullish() &&
isAtrBullishSlope &&
isPVBullishFormed &&
isRsiBullishFormed &&
isVWapBullishFormed
//
;
//
bool bearishMethod1 =
//
isSarBearish &&
isStrBearish &&
isSlopesBearish &&
hasBearishTrend &&
cBar.IsBearish() &&
isAtrBearishSlope &&
isPVBearishFormed &&
isRsiBearishFormed &&
isVWapBearishFormed
//
;