last ...
This commit is contained in:
@@ -414,67 +414,31 @@ bool DetectX121SMCXPZSiganlSetup(
|
||||
|
||||
//
|
||||
// Consolidation ...
|
||||
ENUM_X_DIRECTION consolidationMarketDir;
|
||||
bool hasConsolidationMarketDir = consolidationCycleHelper
|
||||
.DetectMarketStructure(consolidationMarketDir);
|
||||
|
||||
//
|
||||
bool hasConsolidationBullishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBullish(consolidationMarketDir);
|
||||
if (decisionXConditions.isTrendSwirchedToBearish)
|
||||
{
|
||||
Print("Trend Switced To Bearish ...");
|
||||
}
|
||||
|
||||
//
|
||||
bool hasConsolidationBearishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBearish(consolidationMarketDir);
|
||||
bool hasConsolidationBullishTrend = consolidationXConditions.isTrendBullish;
|
||||
bool hasConsolidationBearishTrend = consolidationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Verification ...
|
||||
ENUM_X_DIRECTION verificationMarketDir;
|
||||
bool hasVerificationMarketDir = verificationCycleHelper
|
||||
.DetectMarketStructure(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBullishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBullish(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBearishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBearish(verificationMarketDir);
|
||||
bool hasVerificationBullishTrend = verificationXConditions.isTrendBullish;
|
||||
bool hasVerificationBearishTrend = verificationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Analyse ...
|
||||
ENUM_X_DIRECTION analyseMarketDir;
|
||||
bool hasAnalyseMarketDir = analyseCycleHelper
|
||||
.DetectMarketStructure(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBullishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBullish(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBearishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBearish(analyseMarketDir);
|
||||
bool hasAnalyseBullishTrend = analyseXConditions.isTrendBullish;
|
||||
bool hasAnalyseBearishTrend = analyseXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Decision ...
|
||||
ENUM_X_DIRECTION decisionMarketDir;
|
||||
bool hasDecisionMarketDir = decisionCycleHelper
|
||||
.DetectMarketStructure(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBullishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBullish(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBearishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBearish(decisionMarketDir);
|
||||
bool hasDecisionBullishTrend = decisionXConditions.isTrendBullish;
|
||||
bool hasDecisionBearishTrend = decisionXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Detect Bar State ...
|
||||
|
||||
@@ -33,7 +33,8 @@ enum ENUM_X121_SMC_XRSPVI_CONDITIONS
|
||||
X121_SMC_XRSPVI_CONDITION_1,
|
||||
X121_SMC_XRSPVI_CONDITION_2,
|
||||
X121_SMC_XRSPVI_CONDITION_3,
|
||||
X121_SMC_XRSPVI_CONDITION_4
|
||||
X121_SMC_XRSPVI_CONDITION_4,
|
||||
X121_SMC_XRSPVI_CONDITION_5,
|
||||
};
|
||||
|
||||
//
|
||||
@@ -70,6 +71,7 @@ struct X121SMCStrategyXRSPVISignalConditions
|
||||
bool isPriceZoneValidForVale;
|
||||
|
||||
//
|
||||
XPVPivot pivotZone;
|
||||
XConsolidationZone consolidationZone;
|
||||
|
||||
//
|
||||
@@ -194,6 +196,7 @@ struct X121SMCStrategyXRSPVISignalConditions
|
||||
point = 0;
|
||||
|
||||
//
|
||||
pivotZone.Clean();
|
||||
priceZone.Clean();
|
||||
consolidationZone.Clean();
|
||||
isPriceZoneValidForPeak = false;
|
||||
@@ -214,6 +217,13 @@ X121SMCStrategyXRSPVISignalConditions mXRSPVIConditionsCollection[];
|
||||
//
|
||||
// Extension Functions ...
|
||||
|
||||
//
|
||||
double X121SMCXRSPVIPivotPeak;
|
||||
double X121SMCXRSPVIPivotVale;
|
||||
datetime X121SMCXRSPVIPivotEnd;
|
||||
datetime X121SMCXRSPVIPivotStart;
|
||||
ENUM_XPV_PIVOTS X121SMCXRSPVIPivotType = XPV_NONE;
|
||||
|
||||
//
|
||||
// Detect Setup Conditions ...
|
||||
bool DetectX121SMCXRSPVISiganlSetup(
|
||||
@@ -435,67 +445,25 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
|
||||
//
|
||||
// Consolidation ...
|
||||
ENUM_X_DIRECTION consolidationMarketDir;
|
||||
bool hasConsolidationMarketDir = consolidationCycleHelper
|
||||
.DetectMarketStructure(consolidationMarketDir);
|
||||
|
||||
//
|
||||
bool hasConsolidationBullishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBullish(consolidationMarketDir);
|
||||
|
||||
//
|
||||
bool hasConsolidationBearishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBearish(consolidationMarketDir);
|
||||
bool hasConsolidationBullishTrend = consolidationXConditions.isTrendBullish;
|
||||
bool hasConsolidationBearishTrend = consolidationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Verification ...
|
||||
ENUM_X_DIRECTION verificationMarketDir;
|
||||
bool hasVerificationMarketDir = verificationCycleHelper
|
||||
.DetectMarketStructure(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBullishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBullish(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBearishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBearish(verificationMarketDir);
|
||||
bool hasVerificationBullishTrend = verificationXConditions.isTrendBullish;
|
||||
bool hasVerificationBearishTrend = verificationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Analyse ...
|
||||
ENUM_X_DIRECTION analyseMarketDir;
|
||||
bool hasAnalyseMarketDir = analyseCycleHelper
|
||||
.DetectMarketStructure(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBullishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBullish(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBearishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBearish(analyseMarketDir);
|
||||
bool hasAnalyseBullishTrend = analyseXConditions.isTrendBullish;
|
||||
bool hasAnalyseBearishTrend = analyseXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Decision ...
|
||||
ENUM_X_DIRECTION decisionMarketDir;
|
||||
bool hasDecisionMarketDir = decisionCycleHelper
|
||||
.DetectMarketStructure(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBullishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBullish(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBearishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBearish(decisionMarketDir);
|
||||
bool hasDecisionBullishTrend = decisionXConditions.isTrendBullish;
|
||||
bool hasDecisionBearishTrend = decisionXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Detect Bar State ...
|
||||
@@ -614,6 +582,8 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
bool isDecisionPriceZoneBearish = false;
|
||||
bool isDecisionPriceZoneValidForPeak = false;
|
||||
bool isDecisionPriceZoneValidForVale = false;
|
||||
|
||||
//
|
||||
if (hasDecisionPriceZone)
|
||||
{
|
||||
//
|
||||
@@ -660,6 +630,8 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
bool isAnalysePriceZoneBearish = false;
|
||||
bool isAnalysePriceZoneValidForPeak = false;
|
||||
bool isAnalysePriceZoneValidForVale = false;
|
||||
|
||||
//
|
||||
if (hasAnalysePriceZone)
|
||||
{
|
||||
//
|
||||
@@ -706,6 +678,8 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
bool isVerificationPriceZoneBearish = false;
|
||||
bool isVerificationPriceZoneValidForPeak = false;
|
||||
bool isVerificationPriceZoneValidForVale = false;
|
||||
|
||||
//
|
||||
if (hasVerificationPriceZone)
|
||||
{
|
||||
//
|
||||
@@ -890,6 +864,314 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
// Detect PV Pivot ...
|
||||
|
||||
//
|
||||
bool isPivotPeakZoneRejected = false;
|
||||
bool isPivotPeakZoneBreakedUp = false;
|
||||
bool isPivotPeakZoneBreakedDown = false;
|
||||
bool isPivotValeZoneRejected = false;
|
||||
bool isPivotValeZoneBreakedUp = false;
|
||||
bool isPivotValeZoneBreakedDown = false;
|
||||
bool hasPivot = conditions.pivotZone.IsValid();
|
||||
if (!hasPivot)
|
||||
{
|
||||
//
|
||||
hasPivot = IsValid(X121SMCXRSPVIPivotStart);
|
||||
if (!hasPivot)
|
||||
{
|
||||
//
|
||||
bool isNewVale = decisionXConditions.isNewVale;
|
||||
bool isNewValeOverLast = decisionXConditions.isNewValeOverLast;
|
||||
bool isNewValeUnderLast = decisionXConditions.isNewValeUnderLast;
|
||||
bool isSameVales = decisionXConditions.valesBuffer[1] ==
|
||||
decisionXConditions.valesBuffer[2] &&
|
||||
decisionXConditions.valesBuffer[2] ==
|
||||
decisionXConditions.valesBuffer[3];
|
||||
bool isSameCycleVales = decisionXConditions.valesBuffer[1] ==
|
||||
analyseXConditions.valesBuffer[1] &&
|
||||
analyseXConditions.valesBuffer[1] ==
|
||||
verificationXConditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
bool isNewPeak = decisionXConditions.isNewPeak;
|
||||
bool isNewPeakOverLast = decisionXConditions.isNewPeakOverLast;
|
||||
bool isNewPeakUnderLast = decisionXConditions.isNewPeakUnderLast;
|
||||
bool isSamePeaks = decisionXConditions.peaksBuffer[1] ==
|
||||
decisionXConditions.peaksBuffer[2] &&
|
||||
decisionXConditions.peaksBuffer[2] ==
|
||||
decisionXConditions.peaksBuffer[3];
|
||||
bool isSameCyclePeaks = decisionXConditions.peaksBuffer[1] ==
|
||||
analyseXConditions.peaksBuffer[1] &&
|
||||
analyseXConditions.peaksBuffer[1] ==
|
||||
verificationXConditions.peaksBuffer[1];
|
||||
|
||||
//
|
||||
bool isValeStart =
|
||||
// isSameVales;
|
||||
isSameVales &&
|
||||
isSameCycleVales;
|
||||
bool isPeakStart =
|
||||
// isSamePeaks;
|
||||
isSamePeaks &&
|
||||
isSameCyclePeaks;
|
||||
|
||||
//
|
||||
bool isStart = isPeakStart ||
|
||||
isValeStart;
|
||||
if (isStart)
|
||||
{
|
||||
//
|
||||
X121SMCXRSPVIPivotStart = cTime;
|
||||
X121SMCXRSPVIPivotType =
|
||||
isPeakStart
|
||||
? XPV_PEAK
|
||||
: XPV_VALE;
|
||||
|
||||
//
|
||||
X121SMCXRSPVIPivotPeak = decisionXConditions.peaksBuffer[1];
|
||||
X121SMCXRSPVIPivotVale = decisionXConditions.valesBuffer[1];
|
||||
}
|
||||
|
||||
//
|
||||
hasPivot = IsValid(X121SMCXRSPVIPivotStart);
|
||||
|
||||
//
|
||||
// Create XPVPivot instance ...
|
||||
if (hasPivot)
|
||||
{
|
||||
//
|
||||
conditions.pivotZone.symbol = symbol;
|
||||
conditions.pivotZone.period = period;
|
||||
|
||||
//
|
||||
conditions.pivotZone.to = cTime;
|
||||
conditions.pivotZone.repetition = 3;
|
||||
|
||||
//
|
||||
conditions.pivotZone.upper = X121SMCXRSPVIPivotPeak;
|
||||
conditions.pivotZone.lower = X121SMCXRSPVIPivotVale;
|
||||
|
||||
//
|
||||
conditions.pivotZone.type = X121SMCXRSPVIPivotType;
|
||||
conditions.pivotZone.from = X121SMCXRSPVIPivotStart;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (hasPivot)
|
||||
{
|
||||
//
|
||||
bool isBreaked = X121SMCXRSPVIPivotType == XPV_PEAK
|
||||
? decisionXConditions.isBreakedUpPrevPeak
|
||||
: decisionXConditions.isBreakedDownPrevVale;
|
||||
|
||||
//
|
||||
if (!isBreaked)
|
||||
{
|
||||
//
|
||||
X121SMCXRSPVIPivotPeak = decisionXConditions.peaksBuffer[1];
|
||||
X121SMCXRSPVIPivotVale = decisionXConditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
conditions.pivotZone.to = cTime;
|
||||
conditions.pivotZone.repetition++;
|
||||
conditions.pivotZone.upper = X121SMCXRSPVIPivotPeak;
|
||||
conditions.pivotZone.lower = X121SMCXRSPVIPivotVale;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
X121SMCXRSPVIPivotEnd = cTime;
|
||||
conditions.pivotZone.to = cTime;
|
||||
}
|
||||
|
||||
//
|
||||
// Fill Pivot State ...
|
||||
|
||||
//
|
||||
XPOIState analysePivotState;
|
||||
DetectPivotPOIs(
|
||||
conditions.pivotZone,
|
||||
analyseState,
|
||||
analysePivotState //
|
||||
);
|
||||
|
||||
//
|
||||
XPOIState decisionPivotState;
|
||||
DetectPivotPOIs(
|
||||
conditions.pivotZone,
|
||||
decisionState,
|
||||
decisionPivotState //
|
||||
);
|
||||
|
||||
//
|
||||
// Combine two State ...
|
||||
XPOIState combinedPivotState;
|
||||
XPOIState iStates[];
|
||||
AddRef(
|
||||
analysePivotState,
|
||||
iStates //
|
||||
);
|
||||
AddRef(
|
||||
decisionPivotState,
|
||||
iStates //
|
||||
);
|
||||
CombineStates(
|
||||
combinedPivotState,
|
||||
iStates //
|
||||
);
|
||||
combinedPivotState = decisionPivotState;
|
||||
|
||||
//
|
||||
ArrayFree(iStates);
|
||||
|
||||
//
|
||||
combinedPivotState.time = decisionPivotState.time;
|
||||
combinedPivotState.symbol = decisionPivotState.symbol;
|
||||
combinedPivotState.period = decisionPivotState.period;
|
||||
|
||||
//
|
||||
// Hold Only Areas Which on Upper or Lower bondary of Pivot Zone ...
|
||||
FilterPivotState(
|
||||
conditions.pivotZone,
|
||||
combinedPivotState //
|
||||
);
|
||||
|
||||
//
|
||||
conditions.pivotZone.state = combinedPivotState;
|
||||
|
||||
//
|
||||
double peakUpper = 0;
|
||||
double peakLower = 0;
|
||||
double valeUpper = 0;
|
||||
double valeLower = 0;
|
||||
|
||||
//
|
||||
datetime peakTo = NULL;
|
||||
datetime valeTo = NULL;
|
||||
datetime peakFrom = NULL;
|
||||
datetime valeFrom = NULL;
|
||||
|
||||
//
|
||||
bool hasBoxData = DetectPivotStateBoxData(
|
||||
conditions.pivotZone,
|
||||
peakUpper,
|
||||
peakLower,
|
||||
peakFrom,
|
||||
peakTo,
|
||||
valeUpper,
|
||||
valeLower,
|
||||
valeFrom,
|
||||
valeTo //
|
||||
);
|
||||
|
||||
//
|
||||
// Calculate Pivot Tick Zones ...
|
||||
|
||||
//
|
||||
int ticksLevels = decisionCycleHelper
|
||||
.mPOIDetector
|
||||
.TicksRangeZoneLevel();
|
||||
int ticksRange = decisionCycleHelper
|
||||
.mPOIDetector
|
||||
.TicksRangeZoneRange();
|
||||
|
||||
//
|
||||
CalculatePivotTickZone(
|
||||
conditions.pivotZone,
|
||||
ticksLevels,
|
||||
ticksRange //
|
||||
);
|
||||
|
||||
//
|
||||
isPivotPeakZoneRejected =
|
||||
hasBoxData &&
|
||||
(
|
||||
//
|
||||
IsBarReject(
|
||||
peakLower,
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
IsBarReject(
|
||||
peakUpper,
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
)
|
||||
//
|
||||
);
|
||||
isPivotPeakZoneBreakedUp =
|
||||
hasBoxData &&
|
||||
IsBarBreak(
|
||||
peakUpper,
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
isPivotPeakZoneBreakedDown =
|
||||
hasBoxData &&
|
||||
IsBarBreak(
|
||||
peakLower,
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
isPivotValeZoneRejected =
|
||||
hasBoxData &&
|
||||
(
|
||||
//
|
||||
IsBarReject(
|
||||
valeLower,
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
IsBarReject(
|
||||
valeUpper,
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
)
|
||||
//
|
||||
);
|
||||
isPivotValeZoneBreakedUp =
|
||||
hasBoxData &&
|
||||
IsBarBreak(
|
||||
valeUpper,
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
isPivotValeZoneBreakedDown =
|
||||
hasBoxData &&
|
||||
IsBarBreak(
|
||||
valeLower,
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
bool isPivotEnded = IsValid(X121SMCXRSPVIPivotEnd);
|
||||
if (isPivotEnded)
|
||||
{
|
||||
//
|
||||
X121SMCXRSPVIPivotPeak = 0;
|
||||
X121SMCXRSPVIPivotVale = 0;
|
||||
X121SMCXRSPVIPivotEnd = NULL;
|
||||
X121SMCXRSPVIPivotStart = NULL;
|
||||
X121SMCXRSPVIPivotType = XPV_NONE;
|
||||
|
||||
//
|
||||
conditions.pivotZone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Summarize Conditions ...
|
||||
|
||||
@@ -1109,7 +1391,7 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
|
||||
//
|
||||
// Manipulate Conditions Pivot ...
|
||||
|
||||
|
||||
//
|
||||
double pivot = decisionXConditions.sarBuffer[1];
|
||||
pivot = (decisionXConditions.sarBuffer[1] + decisionXConditions.strBuffer[1]) / 2;
|
||||
@@ -1191,19 +1473,45 @@ bool DetectX121SMCXRSPVISiganlSetup(
|
||||
: pzPeak;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
//
|
||||
bool isCond5Bullish =
|
||||
//
|
||||
hasDecisionBullishTrend &&
|
||||
isPivotValeZoneRejected
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isCond5Bearish =
|
||||
//
|
||||
hasDecisionBearishTrend &&
|
||||
isPivotPeakZoneRejected
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool hasCond5Conditions = isCond5Bullish ||
|
||||
isCond5Bearish;
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isCond1Bullish ||
|
||||
isCond2Bullish ||
|
||||
isCond3Bullish ||
|
||||
isCond4Bullish;
|
||||
isCond5Bullish &&
|
||||
(isCond1Bullish ||
|
||||
isCond2Bullish ||
|
||||
isCond3Bullish ||
|
||||
isCond4Bullish);
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isCond1Bearish ||
|
||||
isCond2Bearish ||
|
||||
isCond3Bearish ||
|
||||
isCond4Bearish;
|
||||
isCond5Bearish &&
|
||||
(isCond1Bearish ||
|
||||
isCond2Bearish ||
|
||||
isCond3Bearish ||
|
||||
isCond4Bearish);
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
|
||||
@@ -412,68 +412,26 @@ bool DetectX121SMCXSTRPVSiganlSetup(
|
||||
|
||||
//
|
||||
// Consolidation ...
|
||||
ENUM_X_DIRECTION consolidationMarketDir;
|
||||
bool hasConsolidationMarketDir = consolidationCycleHelper
|
||||
.DetectMarketStructure(consolidationMarketDir);
|
||||
|
||||
//
|
||||
bool hasConsolidationBullishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBullish(consolidationMarketDir);
|
||||
|
||||
//
|
||||
bool hasConsolidationBearishTrend =
|
||||
hasConsolidationMarketDir &&
|
||||
IsBearish(consolidationMarketDir);
|
||||
bool hasConsolidationBullishTrend = consolidationXConditions.isTrendBullish;
|
||||
bool hasConsolidationBearishTrend = consolidationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Verification ...
|
||||
ENUM_X_DIRECTION verificationMarketDir;
|
||||
bool hasVerificationMarketDir = verificationCycleHelper
|
||||
.DetectMarketStructure(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBullishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBullish(verificationMarketDir);
|
||||
|
||||
//
|
||||
bool hasVerificationBearishTrend =
|
||||
hasVerificationMarketDir &&
|
||||
IsBearish(verificationMarketDir);
|
||||
bool hasVerificationBullishTrend = verificationXConditions.isTrendBullish;
|
||||
bool hasVerificationBearishTrend = verificationXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Analyse ...
|
||||
ENUM_X_DIRECTION analyseMarketDir;
|
||||
bool hasAnalyseMarketDir = analyseCycleHelper
|
||||
.DetectMarketStructure(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBullishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBullish(analyseMarketDir);
|
||||
|
||||
//
|
||||
bool hasAnalyseBearishTrend =
|
||||
hasAnalyseMarketDir &&
|
||||
IsBearish(analyseMarketDir);
|
||||
bool hasAnalyseBullishTrend = analyseXConditions.isTrendBullish;
|
||||
bool hasAnalyseBearishTrend = analyseXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Decision ...
|
||||
ENUM_X_DIRECTION decisionMarketDir;
|
||||
bool hasDecisionMarketDir = decisionCycleHelper
|
||||
.DetectMarketStructure(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBullishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBullish(decisionMarketDir);
|
||||
|
||||
//
|
||||
bool hasDecisionBearishTrend =
|
||||
hasDecisionMarketDir &&
|
||||
IsBearish(decisionMarketDir);
|
||||
|
||||
bool hasDecisionBullishTrend = decisionXConditions.isTrendBullish;
|
||||
bool hasDecisionBearishTrend = decisionXConditions.isTrendBearish;
|
||||
|
||||
//
|
||||
// Detect Bar State ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user