This commit is contained in:
2025-04-26 22:28:02 +03:30
parent 94878bdea2
commit a34ca8272a
7 changed files with 1379 additions and 528 deletions
+224 -4
View File
@@ -246,6 +246,34 @@ struct X121X3MAConditions
bool isMediumCrossedOverSlow; bool isMediumCrossedOverSlow;
bool isMediumCrossedUnderSlow; bool isMediumCrossedUnderSlow;
//
bool is3MaBullishOrdered;
bool is3MaBearishOrdered;
//
bool is3MaSwitchedToBullishOrdered;
bool is3MaSwitchedToBearishOrdered;
//
bool is3MaBullishState;
bool is3MaBearishState;
//
bool is3MaSwitchedToBullishState;
bool is3MaSwitchedToBearishState;
//
bool is3MaBullish;
bool is3MaBearish;
//
bool is3MaSwitchedToBullish;
bool is3MaSwitchedToBearish;
//
bool is3MaFinishedFromBullish;
bool is3MaFinishedFromBearish;
// //
// Constructor ... // Constructor ...
X121X3MAConditions() X121X3MAConditions()
@@ -312,6 +340,34 @@ struct X121X3MAConditions
// //
isMediumCrossedOverSlow = false; isMediumCrossedOverSlow = false;
isMediumCrossedUnderSlow = false; isMediumCrossedUnderSlow = false;
//
is3MaBullishOrdered = false;
is3MaBearishOrdered = false;
//
is3MaSwitchedToBullishOrdered = false;
is3MaSwitchedToBearishOrdered = false;
//
is3MaBullishState = false;
is3MaBearishState = false;
//
is3MaSwitchedToBullishState = false;
is3MaSwitchedToBearishState = false;
//
is3MaBullish = false;
is3MaBearish = false;
//
is3MaSwitchedToBullish = false;
is3MaSwitchedToBearish = false;
//
is3MaFinishedFromBullish = false;
is3MaFinishedFromBearish = false;
} }
/** /**
@@ -360,6 +416,36 @@ struct X121X3MAConditions
bullishScore += score; bullishScore += score;
} }
//
if (is3MaBullish)
{
bullishScore += minScore;
}
if (is3MaBullishState)
{
bullishScore += minScore;
}
if (is3MaBullishOrdered)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullish)
{
bullishScore += minScore;
}
if (is3MaFinishedFromBearish)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishState)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishOrdered)
{
bullishScore += minScore;
}
// //
if (isFastUnderSlow) if (isFastUnderSlow)
{ {
@@ -385,6 +471,36 @@ struct X121X3MAConditions
{ {
bearishScore += score; bearishScore += score;
} }
//
if (is3MaBearish)
{
bearishScore += minScore;
}
if (is3MaBearishState)
{
bearishScore += minScore;
}
if (is3MaBearishOrdered)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearish)
{
bearishScore += minScore;
}
if (is3MaFinishedFromBullish)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishState)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishOrdered)
{
bearishScore += minScore;
}
} }
/** /**
@@ -453,6 +569,20 @@ struct X121X3MAConditions
ToString("isMediumUnderSlow", isMediumUnderSlow, ignoreFalseConditions, separator) + ToString("isMediumUnderSlow", isMediumUnderSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedOverSlow", isMediumCrossedOverSlow, ignoreFalseConditions, separator) + ToString("isMediumCrossedOverSlow", isMediumCrossedOverSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedUnderSlow", isMediumCrossedUnderSlow, ignoreFalseConditions, separator) + ToString("isMediumCrossedUnderSlow", isMediumCrossedUnderSlow, ignoreFalseConditions, separator) +
ToString("is3MaBullishOrdered", is3MaBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBearishOrdered", is3MaBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishOrdered", is3MaSwitchedToBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishOrdered", is3MaSwitchedToBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBullishState", is3MaBullishState, ignoreFalseConditions, separator) +
ToString("is3MaBearishState", is3MaBearishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishState", is3MaSwitchedToBullishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishState", is3MaSwitchedToBearishState, ignoreFalseConditions, separator) +
ToString("is3MaBullish", is3MaBullish, ignoreFalseConditions, separator) +
ToString("is3MaBearish", is3MaBearish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullish", is3MaSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearish", is3MaSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBullish", is3MaFinishedFromBullish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBearish", is3MaFinishedFromBearish, ignoreFalseConditions, separator) +
// //
"" ""
// //
@@ -1151,18 +1281,108 @@ class XCX121X3MAHelper : public XCBaseHelper
!isMediumUnderSlowPrev; !isMediumUnderSlowPrev;
// //
bool is3MaBullishOrdered =
isFastOverMedium &&
isMediumOverSlow;
bool is3MaBullishOrderedPrev =
isFastOverMediumPrev &&
isMediumOverSlowPrev;
//
bool is3MaBearishOrdered =
isFastUnderMedium &&
isMediumUnderSlow;
bool is3MaBearishOrderedPrev =
isFastUnderMediumPrev &&
isMediumUnderSlowPrev;
//
bool is3MaSwitchedToBullishOrdered = is3MaBullishOrdered &&
!is3MaBullishOrderedPrev;
bool is3MaSwitchedToBearishOrdered = is3MaBearishOrdered &&
!is3MaBearishOrderedPrev;
//
bool is3MaBullishState =
cFastState > 0 &&
cMediumState > 0 &&
cSlowState > 0;
bool is3MaBullishStatePrev =
pFastState > 0 &&
pMediumState > 0 &&
pSlowState > 0;
//
bool is3MaBearishState =
cFastState < 0 &&
cMediumState < 0 &&
cSlowState < 0;
bool is3MaBearishStatePrev =
pFastState < 0 &&
pMediumState < 0 &&
pSlowState < 0;
//
bool is3MaSwitchedToBullishState = is3MaBullishState &&
!is3MaBullishStatePrev;
bool is3MaSwitchedToBearishState = is3MaBearishState &&
!is3MaBearishStatePrev;
//
bool is3MaBullish =
is3MaBullishState &&
is3MaBullishOrdered;
bool is3MaBullishPrev =
is3MaBullishStatePrev &&
is3MaBullishOrderedPrev;
//
bool is3MaBearish =
is3MaBearishState &&
is3MaBearishOrdered;
bool is3MaBearishPrev =
is3MaBearishStatePrev &&
is3MaBearishOrderedPrev;
//
bool is3MaSwitchedToBullish = is3MaBullish &&
!is3MaBullishPrev;
bool is3MaSwitchedToBearish = is3MaBearish &&
!is3MaBearishPrev;
//
bool is3MaFinishedFromBullish = !is3MaBullish &&
is3MaBullishPrev;
bool is3MaFinishedFromBearish = !is3MaBearish &&
is3MaBearishPrev;
//
conditions.is3MaBullish = is3MaBullish;
conditions.is3MaBearish = is3MaBearish;
conditions.isFastOverSlow = isFastOverSlow; conditions.isFastOverSlow = isFastOverSlow;
conditions.isFastUnderSlow = isFastUnderSlow; conditions.isFastUnderSlow = isFastUnderSlow;
conditions.isFastOverMedium = isFastOverMedium; conditions.isFastOverMedium = isFastOverMedium;
conditions.isMediumOverSlow = isMediumOverSlow; conditions.isMediumOverSlow = isMediumOverSlow;
conditions.isFastUnderMedium = isFastUnderMedium; conditions.isFastUnderMedium = isFastUnderMedium;
conditions.isMediumUnderSlow = isMediumUnderSlow; conditions.isMediumUnderSlow = isMediumUnderSlow;
conditions.is3MaBullishState = is3MaBullishState;
conditions.is3MaBearishState = is3MaBearishState;
conditions.is3MaBullishOrdered = is3MaBullishOrdered;
conditions.is3MaBearishOrdered = is3MaBearishOrdered;
conditions.isFastCrossedOverSlow = isFastCrossedOverSlow; conditions.isFastCrossedOverSlow = isFastCrossedOverSlow;
conditions.is3MaSwitchedToBullish = is3MaSwitchedToBullish;
conditions.is3MaSwitchedToBearish = is3MaSwitchedToBearish;
conditions.isFastCrossedUnderSlow = isFastCrossedUnderSlow; conditions.isFastCrossedUnderSlow = isFastCrossedUnderSlow;
conditions.isFastCrossedOverMedium = isFastCrossedOverMedium; conditions.isFastCrossedOverMedium = isFastCrossedOverMedium;
conditions.isMediumCrossedOverSlow = isMediumCrossedOverSlow; conditions.isMediumCrossedOverSlow = isMediumCrossedOverSlow;
conditions.is3MaFinishedFromBullish = is3MaFinishedFromBullish;
conditions.is3MaFinishedFromBearish = is3MaFinishedFromBearish;
conditions.isFastCrossedUnderMedium = isFastCrossedUnderMedium; conditions.isFastCrossedUnderMedium = isFastCrossedUnderMedium;
conditions.isMediumCrossedUnderSlow = isMediumCrossedUnderSlow; conditions.isMediumCrossedUnderSlow = isMediumCrossedUnderSlow;
conditions.is3MaSwitchedToBullishState = is3MaSwitchedToBullishState;
conditions.is3MaSwitchedToBearishState = is3MaSwitchedToBearishState;
conditions.is3MaSwitchedToBullishOrdered = is3MaSwitchedToBullishOrdered;
conditions.is3MaSwitchedToBearishOrdered = is3MaSwitchedToBearishOrdered;
// //
Cleanup(); Cleanup();
@@ -1226,7 +1446,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_FAST_STATE, X121_X3MA_FAST_STATE,
barIndex, barIndex,
maxRequiredBars, maxRequiredBars,
mediumBuffer // fastStateBuffer //
); );
// //
@@ -1238,7 +1458,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_MEDIUM, X121_X3MA_MEDIUM,
barIndex, barIndex,
maxRequiredBars, maxRequiredBars,
mediumStateBuffer // mediumBuffer //
); );
// //
@@ -1247,7 +1467,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_MEDIUM_STATE, X121_X3MA_MEDIUM_STATE,
barIndex, barIndex,
maxRequiredBars, maxRequiredBars,
slowStateBuffer // mediumStateBuffer //
); );
// //
@@ -1268,7 +1488,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_SLOW_STATE, X121_X3MA_SLOW_STATE,
barIndex, barIndex,
maxRequiredBars, maxRequiredBars,
fastStateBuffer // slowStateBuffer //
); );
} }
+2 -2
View File
@@ -65,8 +65,8 @@ input bool applyColor = false;
// //
input bool showFast = true; // Show Fast input bool showFast = true; // Show Fast
input bool showSlow = true; // Show Medium input bool showMedium = true; // Show Medium
input bool showMedium = true; // Show Slow input bool showSlow = true; // Show Slow
// //
// Buffers ... // Buffers ...
File diff suppressed because it is too large Load Diff
+252 -82
View File
@@ -40,6 +40,7 @@ class XCXCAEAPOIDrawer : public XCBase
// //
bool ignoreUpdateOSCTos; bool ignoreUpdateOSCTos;
bool drawTrendPivotsOnlySelectedFVG;
// //
// Drawers ... // Drawers ...
@@ -54,8 +55,8 @@ class XCXCAEAPOIDrawer : public XCBase
bool drawFVGBearishPivots; bool drawFVGBearishPivots;
bool drawValeSupSWLPivots; bool drawValeSupSWLPivots;
bool drawPeakResSWHPivots; bool drawPeakResSWHPivots;
bool drawPVFVGBullishPivots; bool drawTrendBullishPivots;
bool drawPVFVGBearishPivots; bool drawTrendBearishPivots;
bool drawRSICrossedOverOSPivots; bool drawRSICrossedOverOSPivots;
bool drawRSICrossedUnderOBPivots; bool drawRSICrossedUnderOBPivots;
bool drawCCICrossedOverOSPivots; bool drawCCICrossedOverOSPivots;
@@ -81,13 +82,13 @@ class XCXCAEAPOIDrawer : public XCBase
color peakResSWHPivotsColor; color peakResSWHPivotsColor;
color trendLineBullishColor; color trendLineBullishColor;
color trendLineBearishColor; color trendLineBearishColor;
color pvFVGBullishPivotsColor; color trendBullishPivotsColor;
color pvFVGBearishPivotsColor; color trendBearishPivotsColor;
color rsiCrossedOverOSPivotsColor; color rsiCrossedOverOSPivotsColor;
color rsiCrossedUnderOBPivotsColor; color rsiCrossedUnderOBPivotsColor;
color cciCrossedOverOSPivotsColor; color cciCrossedOverOSPivotsColor;
color cciCrossedUnderOBPivotsColor; color cciCrossedUnderOBPivotsColor;
// //
// Width ... // Width ...
@@ -108,8 +109,8 @@ class XCXCAEAPOIDrawer : public XCBase
int peakResSWHPivotsWidth; int peakResSWHPivotsWidth;
int trendLineBullishWidth; int trendLineBullishWidth;
int trendLineBearishWidth; int trendLineBearishWidth;
int pvFVGBullishPivotsWidth; int trendBullishPivotsWidth;
int pvFVGBearishPivotsWidth; int trendBearishPivotsWidth;
int rsiCrossedOverOSPivotsWidth; int rsiCrossedOverOSPivotsWidth;
int rsiCrossedUnderOBPivotsWidth; int rsiCrossedUnderOBPivotsWidth;
int cciCrossedOverOSPivotsWidth; int cciCrossedOverOSPivotsWidth;
@@ -135,8 +136,8 @@ class XCXCAEAPOIDrawer : public XCBase
ENUM_LINE_STYLE peakResSWHPivotsStyle; ENUM_LINE_STYLE peakResSWHPivotsStyle;
ENUM_LINE_STYLE trendLineBullishStyle; ENUM_LINE_STYLE trendLineBullishStyle;
ENUM_LINE_STYLE trendLineBearishStyle; ENUM_LINE_STYLE trendLineBearishStyle;
ENUM_LINE_STYLE pvFVGBullishPivotsStyle; ENUM_LINE_STYLE trendBullishPivotsStyle;
ENUM_LINE_STYLE pvFVGBearishPivotsStyle; ENUM_LINE_STYLE trendBearishPivotsStyle;
ENUM_LINE_STYLE rsiCrossedOverOSPivotsStyle; ENUM_LINE_STYLE rsiCrossedOverOSPivotsStyle;
ENUM_LINE_STYLE rsiCrossedUnderOBPivotsStyle; ENUM_LINE_STYLE rsiCrossedUnderOBPivotsStyle;
ENUM_LINE_STYLE cciCrossedOverOSPivotsStyle; ENUM_LINE_STYLE cciCrossedOverOSPivotsStyle;
@@ -188,6 +189,7 @@ class XCXCAEAPOIDrawer : public XCBase
{ {
// //
ignoreUpdateOSCTos = true; ignoreUpdateOSCTos = true;
drawTrendPivotsOnlySelectedFVG = true;
// //
drawTrendLine = false; drawTrendLine = false;
@@ -201,8 +203,8 @@ class XCXCAEAPOIDrawer : public XCBase
drawFVGBearishPivots = false; drawFVGBearishPivots = false;
drawValeSupSWLPivots = false; drawValeSupSWLPivots = false;
drawPeakResSWHPivots = false; drawPeakResSWHPivots = false;
drawPVFVGBullishPivots = false; drawTrendBullishPivots = false;
drawPVFVGBearishPivots = false; drawTrendBearishPivots = false;
drawRSICrossedOverOSPivots = false; drawRSICrossedOverOSPivots = false;
drawRSICrossedUnderOBPivots = false; drawRSICrossedUnderOBPivots = false;
drawCCICrossedOverOSPivots = false; drawCCICrossedOverOSPivots = false;
@@ -222,73 +224,73 @@ class XCXCAEAPOIDrawer : public XCBase
fvgBullishPivotsColor = defaultBullishColor; fvgBullishPivotsColor = defaultBullishColor;
valeSupSWLPivotsColor = defaultBullishColor; valeSupSWLPivotsColor = defaultBullishColor;
trendLineBullishColor = defaultBullishColor; trendLineBullishColor = defaultBullishColor;
pvFVGBullishPivotsColor = defaultBullishColor; trendBullishPivotsColor = defaultBullishColor;
rsiCrossedOverOSPivotsColor = defaultBullishColor; rsiCrossedOverOSPivotsColor = defaultBullishColor;
cciCrossedOverOSPivotsColor = defaultBullishColor; cciCrossedOverOSPivotsColor = defaultBullishColor;
// //
rsiPeakPivotsColor = defaultBearishColor; rsiPeakPivotsColor = defaultBearishColor;
cciPeakPivotsColor = defaultBearishColor; cciPeakPivotsColor = defaultBearishColor;
fvgBearishPivotsColor = defaultBearishColor; fvgBearishPivotsColor = defaultBearishColor;
peakResSWHPivotsColor = defaultBearishColor; peakResSWHPivotsColor = defaultBearishColor;
trendLineBearishColor = defaultBearishColor; trendLineBearishColor = defaultBearishColor;
pvFVGBearishPivotsColor = defaultBearishColor; trendBearishPivotsColor = defaultBearishColor;
rsiCrossedUnderOBPivotsColor = defaultBearishColor; rsiCrossedUnderOBPivotsColor = defaultBearishColor;
cciCrossedUnderOBPivotsColor = defaultBearishColor; cciCrossedUnderOBPivotsColor = defaultBearishColor;
// //
defaultBullishWidth = 1; defaultBullishWidth = 1;
defaultBearishWidth = 1; defaultBearishWidth = 1;
// //
tickPivotsWidth = defaultBullishWidth; tickPivotsWidth = defaultBullishWidth;
volumePivotsWidth = defaultBearishWidth; volumePivotsWidth = defaultBearishWidth;
// //
rsiValePivotsWidth = defaultBullishWidth; rsiValePivotsWidth = defaultBullishWidth;
cciValePivotsWidth = defaultBullishWidth; cciValePivotsWidth = defaultBullishWidth;
fvgBullishPivotsWidth = defaultBullishWidth; fvgBullishPivotsWidth = defaultBullishWidth;
valeSupSWLPivotsWidth = defaultBullishWidth; valeSupSWLPivotsWidth = defaultBullishWidth;
trendLineBullishWidth = defaultBullishWidth; trendLineBullishWidth = defaultBullishWidth;
pvFVGBullishPivotsWidth = defaultBullishWidth; trendBullishPivotsWidth = defaultBullishWidth;
rsiCrossedOverOSPivotsWidth = defaultBullishWidth; rsiCrossedOverOSPivotsWidth = defaultBullishWidth;
cciCrossedOverOSPivotsWidth = defaultBullishWidth; cciCrossedOverOSPivotsWidth = defaultBullishWidth;
// //
rsiPeakPivotsWidth = defaultBearishWidth; rsiPeakPivotsWidth = defaultBearishWidth;
cciPeakPivotsWidth = defaultBearishWidth; cciPeakPivotsWidth = defaultBearishWidth;
fvgBearishPivotsWidth = defaultBearishWidth; fvgBearishPivotsWidth = defaultBearishWidth;
peakResSWHPivotsWidth = defaultBearishWidth; peakResSWHPivotsWidth = defaultBearishWidth;
trendLineBearishWidth = defaultBearishWidth; trendLineBearishWidth = defaultBearishWidth;
pvFVGBearishPivotsWidth = defaultBearishWidth; trendBearishPivotsWidth = defaultBearishWidth;
rsiCrossedUnderOBPivotsWidth = defaultBearishWidth; rsiCrossedUnderOBPivotsWidth = defaultBearishWidth;
cciCrossedUnderOBPivotsWidth = defaultBearishWidth; cciCrossedUnderOBPivotsWidth = defaultBearishWidth;
// //
defaultBullishStyle = STYLE_SOLID; defaultBullishStyle = STYLE_SOLID;
defaultBearishStyle = STYLE_SOLID; defaultBearishStyle = STYLE_SOLID;
// //
tickPivotsStyle = defaultBullishStyle; tickPivotsStyle = defaultBullishStyle;
volumePivotsStyle = defaultBearishStyle; volumePivotsStyle = defaultBearishStyle;
// //
rsiValePivotsStyle = defaultBullishStyle; rsiValePivotsStyle = defaultBullishStyle;
cciValePivotsStyle = defaultBullishStyle; cciValePivotsStyle = defaultBullishStyle;
fvgBullishPivotsStyle = defaultBullishStyle; fvgBullishPivotsStyle = defaultBullishStyle;
valeSupSWLPivotsStyle = defaultBullishStyle; valeSupSWLPivotsStyle = defaultBullishStyle;
trendLineBullishStyle = defaultBullishStyle; trendLineBullishStyle = defaultBullishStyle;
pvFVGBullishPivotsStyle = defaultBullishStyle; trendBullishPivotsStyle = defaultBullishStyle;
rsiCrossedOverOSPivotsStyle = defaultBullishStyle; rsiCrossedOverOSPivotsStyle = defaultBullishStyle;
cciCrossedOverOSPivotsStyle = defaultBullishStyle; cciCrossedOverOSPivotsStyle = defaultBullishStyle;
// //
rsiPeakPivotsStyle = defaultBearishStyle; rsiPeakPivotsStyle = defaultBearishStyle;
cciPeakPivotsStyle = defaultBearishStyle; cciPeakPivotsStyle = defaultBearishStyle;
fvgBearishPivotsStyle = defaultBearishStyle; fvgBearishPivotsStyle = defaultBearishStyle;
peakResSWHPivotsStyle = defaultBearishStyle; peakResSWHPivotsStyle = defaultBearishStyle;
trendLineBearishStyle = defaultBearishStyle; trendLineBearishStyle = defaultBearishStyle;
pvFVGBearishPivotsStyle = defaultBearishStyle; trendBearishPivotsStyle = defaultBearishStyle;
rsiCrossedUnderOBPivotsStyle = defaultBearishStyle; rsiCrossedUnderOBPivotsStyle = defaultBearishStyle;
cciCrossedUnderOBPivotsStyle = defaultBearishStyle; cciCrossedUnderOBPivotsStyle = defaultBearishStyle;
} }
@@ -308,8 +310,8 @@ class XCXCAEAPOIDrawer : public XCBase
DrawFVGBearishPivots(to); DrawFVGBearishPivots(to);
DrawValeSupSWLPivots(to); DrawValeSupSWLPivots(to);
DrawPeakResSWHPivots(to); DrawPeakResSWHPivots(to);
DrawPVFVGBullishPivots(to); DrawTrendBullishPivots(to);
DrawPVFVGBearishPivots(to); DrawTrendBearishPivots(to);
DrawRSICrossedOverOSPivots(to); DrawRSICrossedOverOSPivots(to);
DrawRSICrossedUnderOBPivots(to); DrawRSICrossedUnderOBPivots(to);
DrawCCICrossedOverOSPivots(to); DrawCCICrossedOverOSPivots(to);
@@ -331,8 +333,8 @@ class XCXCAEAPOIDrawer : public XCBase
mFVGBearishPivotObjects.Clear(); mFVGBearishPivotObjects.Clear();
mValeSupSWLPivotObjects.Clear(); mValeSupSWLPivotObjects.Clear();
mPeakResSWHPivotObjects.Clear(); mPeakResSWHPivotObjects.Clear();
mPVFVGBullishPivotObjects.Clear(); mTrendBullishPivotObjects.Clear();
mPVFVGBearishPivotObjects.Clear(); mTrendBearishPivotObjects.Clear();
mRSICrossedOverOSPivotObjects.Clear(); mRSICrossedOverOSPivotObjects.Clear();
mRSICrossedUnderOBPivotObjects.Clear(); mRSICrossedUnderOBPivotObjects.Clear();
mCCICrossedOverOSPivotObjects.Clear(); mCCICrossedOverOSPivotObjects.Clear();
@@ -1035,17 +1037,17 @@ class XCXCAEAPOIDrawer : public XCBase
} }
// //
void DrawPVFVGBullishPivots(datetime to = NULL) void DrawTrendBullishPivots(datetime to = NULL)
{ {
// //
bool has = drawPVFVGBullishPivots; bool has = drawTrendBullishPivots;
if (!has) if (!has)
{ {
return; return;
} }
// //
has = detector.HasPVFVGBullishPivots(); has = detector.HasTrendBullishPivots();
if (!has) if (!has)
{ {
return; return;
@@ -1055,64 +1057,148 @@ class XCXCAEAPOIDrawer : public XCBase
bool canUpdateTo = IsValid(to); bool canUpdateTo = IsValid(to);
// //
int count = detector.CountPVFVGBullishPivots(); int count = detector.CountTrendBullishPivots();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
// //
XBoxZone iBox; XCATRENDFVG iTrendFVG = detector.trendBullishPivots[i];
has = detector.pvFVGBullishPivots[i].GetSelectedFVG(iBox);
if (!has) //
{ // Draw Trend Box ...
//
iBox.Clean();
continue;
}
// //
if (canUpdateTo) if (canUpdateTo)
{ {
iBox.to = to; iTrendFVG.trend.to = to;
} }
// //
XCBoxObject *iObj; XCBoxObject *iTrendBoxObj;
has = drawer.DrawBox( has = drawer.DrawBox(
iBox, iTrendFVG.trend,
iObj // iTrendBoxObj //
); );
//
if (has) if (has)
{ {
// //
// Style Object ... // Style Object ...
iObj.BoxColor(pvFVGBullishPivotsColor); iTrendBoxObj.BoxColor(trendBullishPivotsColor);
iObj.BoxWidth(pvFVGBullishPivotsWidth); iTrendBoxObj.BoxWidth(trendBullishPivotsWidth);
iObj.BoxStyle(pvFVGBullishPivotsStyle); iTrendBoxObj.BoxStyle(trendBullishPivotsStyle);
// //
// Store Object ... // Store Object ...
mPVFVGBullishPivotObjects.Add(iObj); mTrendBullishPivotObjects.Add(iTrendBoxObj);
} }
// //
iBox.Clean(); // Draw ITrendFVG FVGS ...
ZeroMemory(iObj); if (drawTrendPivotsOnlySelectedFVG)
{
//
XBoxZone iBox;
has = iTrendFVG.GetSelectedFVG(iBox);
if (!has)
{
//
iBox.Clean();
continue;
}
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(fvgBullishPivotsColor);
iObj.BoxWidth(fvgBullishPivotsWidth);
iObj.BoxStyle(fvgBullishPivotsStyle);
//
// Store Object ...
mTrendBullishPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
else
{
//
// Draw All FVGs ...
has = HasChild(iTrendFVG.fvgs);
if (has)
{
//
int jCount = ArraySize(iTrendFVG.fvgs);
for (int j = 0; j < jCount; j++)
{
//
XBoxZone iBox = iTrendFVG.fvgs[j];
//
if (canUpdateTo) {
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
if (has)
{
//
// Style Object ...
iObj.BoxColor(fvgBullishPivotsColor);
iObj.BoxWidth(fvgBullishPivotsWidth);
iObj.BoxStyle(fvgBullishPivotsStyle);
//
// Store Object ...
mTrendBullishPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
}
//
iTrendFVG.Clean();
ZeroMemory(iTrendBoxObj);
} }
} }
// //
void DrawPVFVGBearishPivots(datetime to = NULL) void DrawTrendBearishPivots(datetime to = NULL)
{ {
// //
bool has = drawPVFVGBearishPivots; bool has = drawTrendBearishPivots;
if (!has) if (!has)
{ {
return; return;
} }
// //
has = detector.HasPVFVGBearishPivots(); has = detector.HasTrendBearishPivots();
if (!has) if (!has)
{ {
return; return;
@@ -1122,54 +1208,138 @@ class XCXCAEAPOIDrawer : public XCBase
bool canUpdateTo = IsValid(to); bool canUpdateTo = IsValid(to);
// //
int count = detector.CountPVFVGBearishPivots(); int count = detector.CountTrendBearishPivots();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
// //
XBoxZone iBox; XCATRENDFVG iTrendFVG = detector.trendBearishPivots[i];
has = detector.pvFVGBearishPivots[i].GetSelectedFVG(iBox);
if (!has) //
{ // Draw Trend Box ...
//
iBox.Clean();
continue;
}
// //
if (canUpdateTo) if (canUpdateTo)
{ {
iBox.to = to; iTrendFVG.trend.to = to;
} }
// //
XCBoxObject *iObj; XCBoxObject *iTrendBoxObj;
has = drawer.DrawBox( has = drawer.DrawBox(
iBox, iTrendFVG.trend,
iObj // iTrendBoxObj //
); );
//
if (has) if (has)
{ {
// //
// Style Object ... // Style Object ...
iObj.BoxColor(pvFVGBearishPivotsColor); iTrendBoxObj.BoxColor(trendBearishPivotsColor);
iObj.BoxWidth(pvFVGBearishPivotsWidth); iTrendBoxObj.BoxWidth(trendBearishPivotsWidth);
iObj.BoxStyle(pvFVGBearishPivotsStyle); iTrendBoxObj.BoxStyle(trendBearishPivotsStyle);
// //
// Store Object ... // Store Object ...
mPVFVGBearishPivotObjects.Add(iObj); mTrendBearishPivotObjects.Add(iTrendBoxObj);
} }
// //
iBox.Clean(); // Draw ITrendFVG FVGS ...
ZeroMemory(iObj); if (drawTrendPivotsOnlySelectedFVG)
{
//
XBoxZone iBox;
has = iTrendFVG.GetSelectedFVG(iBox);
if (!has)
{
//
iBox.Clean();
continue;
}
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(fvgBearishPivotsColor);
iObj.BoxWidth(fvgBearishPivotsWidth);
iObj.BoxStyle(fvgBearishPivotsStyle);
//
// Store Object ...
mTrendBearishPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
else
{
//
// Draw All FVGs ...
has = HasChild(iTrendFVG.fvgs);
if (has)
{
//
int jCount = ArraySize(iTrendFVG.fvgs);
for (int j = 0; j < jCount; j++)
{
//
XBoxZone iBox = iTrendFVG.fvgs[j];
//
if (canUpdateTo) {
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
if (has)
{
//
// Style Object ...
iObj.BoxColor(fvgBearishPivotsColor);
iObj.BoxWidth(fvgBearishPivotsWidth);
iObj.BoxStyle(fvgBearishPivotsStyle);
//
// Store Object ...
mTrendBearishPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
}
//
iTrendFVG.Clean();
ZeroMemory(iTrendBoxObj);
} }
} }
// //
void DrawRSICrossedOverOSPivots(datetime to = NULL) void DrawRSICrossedOverOSPivots(datetime to = NULL)
{ {
// //
bool has = drawRSICrossedOverOSPivots; bool has = drawRSICrossedOverOSPivots;
@@ -1301,7 +1471,7 @@ class XCXCAEAPOIDrawer : public XCBase
} }
// //
void DrawCCICrossedOverOSPivots(datetime to = NULL) void DrawCCICrossedOverOSPivots(datetime to = NULL)
{ {
// //
bool has = drawCCICrossedOverOSPivots; bool has = drawCCICrossedOverOSPivots;
@@ -1460,8 +1630,8 @@ class XCXCAEAPOIDrawer : public XCBase
CArrayObj mFVGBearishPivotObjects; CArrayObj mFVGBearishPivotObjects;
CArrayObj mValeSupSWLPivotObjects; CArrayObj mValeSupSWLPivotObjects;
CArrayObj mPeakResSWHPivotObjects; CArrayObj mPeakResSWHPivotObjects;
CArrayObj mPVFVGBullishPivotObjects; CArrayObj mTrendBullishPivotObjects;
CArrayObj mPVFVGBearishPivotObjects; CArrayObj mTrendBearishPivotObjects;
CArrayObj mRSICrossedOverOSPivotObjects; CArrayObj mRSICrossedOverOSPivotObjects;
CArrayObj mRSICrossedUnderOBPivotObjects; CArrayObj mRSICrossedUnderOBPivotObjects;
CArrayObj mCCICrossedOverOSPivotObjects; CArrayObj mCCICrossedOverOSPivotObjects;
+164 -21
View File
@@ -25,10 +25,10 @@
#include "../../Classes/x-saherelm.x-bar.analyser.class.mq5" #include "../../Classes/x-saherelm.x-bar.analyser.class.mq5"
#include "../../Classes/x-saherelm.x-poi.class.mq5" #include "../../Classes/x-saherelm.x-poi.class.mq5"
#include "../../Classes/x-saherelm.x-poi.drawer.class.mq5" #include "../../Classes/x-saherelm.x-poi.drawer.class.mq5"
#include "../../Helpers/x-saherelm.x121.x3ma.helper.mq5"
#include "../../Helpers/x-saherelm.x121.xca.helper.mq5" #include "../../Helpers/x-saherelm.x121.xca.helper.mq5"
#include "../../Helpers/x-saherelm.x121.xcc.helper.mq5" #include "../../Helpers/x-saherelm.x121.xcc.helper.mq5"
#include "../../Helpers/x-saherelm.x121.xct.helper.mq5" #include "../../Helpers/x-saherelm.x121.xct.helper.mq5"
#include "../../Helpers/x-saherelm.x121.x3ma.helper.mq5"
#include "../../Helpers/x-saherelm.x121.xoscs.helper.mq5" #include "../../Helpers/x-saherelm.x121.xoscs.helper.mq5"
// //
@@ -124,7 +124,7 @@ struct XCAEAInputs
ccInputs.IsValid() && ccInputs.IsValid() &&
caInputs.IsValid() && caInputs.IsValid() &&
x3maInputs.IsValid() && x3maInputs.IsValid() &&
oscsInputs.IsValid() oscsInputs.IsValid()
// //
; ;
@@ -215,6 +215,34 @@ struct XCAEAConditions
bool isMediumCrossedOverSlow; bool isMediumCrossedOverSlow;
bool isMediumCrossedUnderSlow; bool isMediumCrossedUnderSlow;
//
bool is3MaBullishOrdered;
bool is3MaBearishOrdered;
//
bool is3MaSwitchedToBullishOrdered;
bool is3MaSwitchedToBearishOrdered;
//
bool is3MaBullishState;
bool is3MaBearishState;
//
bool is3MaSwitchedToBullishState;
bool is3MaSwitchedToBearishState;
//
bool is3MaBullish;
bool is3MaBearish;
//
bool is3MaSwitchedToBullish;
bool is3MaSwitchedToBearish;
//
bool is3MaFinishedFromBullish;
bool is3MaFinishedFromBearish;
// //
// XCA ... // XCA ...
@@ -770,6 +798,34 @@ struct XCAEAConditions
isMediumCrossedOverSlow = false; isMediumCrossedOverSlow = false;
isMediumCrossedUnderSlow = false; isMediumCrossedUnderSlow = false;
//
is3MaBullishOrdered = false;
is3MaBearishOrdered = false;
//
is3MaSwitchedToBullishOrdered = false;
is3MaSwitchedToBearishOrdered = false;
//
is3MaBullishState = false;
is3MaBearishState = false;
//
is3MaSwitchedToBullishState = false;
is3MaSwitchedToBearishState = false;
//
is3MaBullish = false;
is3MaBearish = false;
//
is3MaSwitchedToBullish = false;
is3MaSwitchedToBearish = false;
//
is3MaFinishedFromBullish = false;
is3MaFinishedFromBearish = false;
// //
// XCA ... // XCA ...
@@ -910,7 +966,7 @@ struct XCAEAConditions
// //
isSarFinishedFromBullish = false; isSarFinishedFromBullish = false;
isSarFinishedFromBearish = false; isSarFinishedFromBearish = false;
// //
// PEAK ... // PEAK ...
@@ -1287,6 +1343,36 @@ struct XCAEAConditions
bullishScore += score; bullishScore += score;
} }
//
if (is3MaBullish)
{
bullishScore += minScore;
}
if (is3MaBullishState)
{
bullishScore += minScore;
}
if (is3MaBullishOrdered)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullish)
{
bullishScore += minScore;
}
if (is3MaFinishedFromBearish)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishState)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishOrdered)
{
bullishScore += minScore;
}
// //
if (isFastUnderSlow) if (isFastUnderSlow)
{ {
@@ -1313,6 +1399,35 @@ struct XCAEAConditions
bearishScore += score; bearishScore += score;
} }
//
if (is3MaBearish)
{
bearishScore += minScore;
}
if (is3MaBearishState)
{
bearishScore += minScore;
}
if (is3MaBearishOrdered)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearish)
{
bearishScore += minScore;
}
if (is3MaFinishedFromBullish)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishState)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishOrdered)
{
bearishScore += minScore;
}
// //
// KI ... // KI ...
@@ -2099,6 +2214,20 @@ struct XCAEAConditions
ToString("isMediumUnderSlow", isMediumUnderSlow, ignoreFalseConditions, separator) + ToString("isMediumUnderSlow", isMediumUnderSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedOverSlow", isMediumCrossedOverSlow, ignoreFalseConditions, separator) + ToString("isMediumCrossedOverSlow", isMediumCrossedOverSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedUnderSlow", isMediumCrossedUnderSlow, ignoreFalseConditions, separator) + ToString("isMediumCrossedUnderSlow", isMediumCrossedUnderSlow, ignoreFalseConditions, separator) +
ToString("is3MaBullishOrdered", is3MaBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBearishOrdered", is3MaBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishOrdered", is3MaSwitchedToBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishOrdered", is3MaSwitchedToBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBullishState", is3MaBullishState, ignoreFalseConditions, separator) +
ToString("is3MaBearishState", is3MaBearishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishState", is3MaSwitchedToBullishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishState", is3MaSwitchedToBearishState, ignoreFalseConditions, separator) +
ToString("is3MaBullish", is3MaBullish, ignoreFalseConditions, separator) +
ToString("is3MaBearish", is3MaBearish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullish", is3MaSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearish", is3MaSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBullish", is3MaFinishedFromBullish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBearish", is3MaFinishedFromBearish, ignoreFalseConditions, separator) +
"-----------------------" + separator + "-----------------------" + separator +
"XCA: " + separator + "XCA: " + separator +
"-----------------------" + separator + "-----------------------" + separator +
@@ -2758,8 +2887,8 @@ class XCXCAEAHelper : XCBase
*/ */
bool Get3MAConditions( bool Get3MAConditions(
X121X3MAConditions &conditions, // X121X3MAConditions &conditions, //
int barIndex = 0, // int barIndex = 0, //
int loopback = 5 // int loopback = 5 //
) )
{ {
// //
@@ -2896,7 +3025,7 @@ class XCXCAEAHelper : XCBase
result = result =
result && result &&
zBar.GetPreviousBar(cBar); zBar.GetPreviousBar(cBar);
result = result =
result && result &&
cBar.GetPreviousBar(pBar); cBar.GetPreviousBar(pBar);
result = result =
@@ -2975,59 +3104,73 @@ class XCXCAEAHelper : XCBase
// //
// Buffers ... // Buffers ...
// //
Copy ( Copy(
x3maConditions.fastBuffer, x3maConditions.fastBuffer,
conditions.fastBuffer // conditions.fastBuffer //
); );
// //
Copy ( Copy(
x3maConditions.mediumBuffer, x3maConditions.mediumBuffer,
conditions.mediumBuffer // conditions.mediumBuffer //
); );
// //
Copy ( Copy(
x3maConditions.slowBuffer, x3maConditions.slowBuffer,
conditions.slowBuffer // conditions.slowBuffer //
); );
// //
Copy ( Copy(
x3maConditions.fastStateBuffer, x3maConditions.fastStateBuffer,
conditions.fastStateBuffer // conditions.fastStateBuffer //
); );
// //
Copy ( Copy(
x3maConditions.mediumStateBuffer, x3maConditions.mediumStateBuffer,
conditions.mediumStateBuffer // conditions.mediumStateBuffer //
); );
// //
Copy ( Copy(
x3maConditions.slowStateBuffer, x3maConditions.slowStateBuffer,
conditions.slowStateBuffer // conditions.slowStateBuffer //
); );
// //
// Conditions ... // Conditions ...
// //
conditions.is3MaBullish = x3maConditions.is3MaBullish;
conditions.is3MaBearish = x3maConditions.is3MaBearish;
conditions.isFastOverSlow = x3maConditions.isFastOverSlow; conditions.isFastOverSlow = x3maConditions.isFastOverSlow;
conditions.isFastUnderSlow = x3maConditions.isFastUnderSlow; conditions.isFastUnderSlow = x3maConditions.isFastUnderSlow;
conditions.isFastOverMedium = x3maConditions.isFastOverMedium; conditions.isFastOverMedium = x3maConditions.isFastOverMedium;
conditions.isMediumOverSlow = x3maConditions.isMediumOverSlow; conditions.isMediumOverSlow = x3maConditions.isMediumOverSlow;
conditions.isFastUnderMedium = x3maConditions.isFastUnderMedium; conditions.isFastUnderMedium = x3maConditions.isFastUnderMedium;
conditions.isMediumUnderSlow = x3maConditions.isMediumUnderSlow; conditions.isMediumUnderSlow = x3maConditions.isMediumUnderSlow;
conditions.is3MaBullishState = x3maConditions.is3MaBullishState;
conditions.is3MaBearishState = x3maConditions.is3MaBearishState;
conditions.is3MaBullishOrdered = x3maConditions.is3MaBullishOrdered;
conditions.is3MaBearishOrdered = x3maConditions.is3MaBearishOrdered;
conditions.isFastCrossedOverSlow = x3maConditions.isFastCrossedOverSlow; conditions.isFastCrossedOverSlow = x3maConditions.isFastCrossedOverSlow;
conditions.is3MaSwitchedToBullish = x3maConditions.is3MaSwitchedToBullish;
conditions.is3MaSwitchedToBearish = x3maConditions.is3MaSwitchedToBearish;
conditions.isFastCrossedUnderSlow = x3maConditions.isFastCrossedUnderSlow; conditions.isFastCrossedUnderSlow = x3maConditions.isFastCrossedUnderSlow;
conditions.isFastCrossedOverMedium = x3maConditions.isFastCrossedOverMedium; conditions.isFastCrossedOverMedium = x3maConditions.isFastCrossedOverMedium;
conditions.isMediumCrossedOverSlow = x3maConditions.isMediumCrossedOverSlow; conditions.isMediumCrossedOverSlow = x3maConditions.isMediumCrossedOverSlow;
conditions.is3MaFinishedFromBullish = x3maConditions.is3MaFinishedFromBullish;
conditions.is3MaFinishedFromBearish = x3maConditions.is3MaFinishedFromBearish;
conditions.isFastCrossedUnderMedium = x3maConditions.isFastCrossedUnderMedium; conditions.isFastCrossedUnderMedium = x3maConditions.isFastCrossedUnderMedium;
conditions.isMediumCrossedUnderSlow = x3maConditions.isMediumCrossedUnderSlow; conditions.isMediumCrossedUnderSlow = x3maConditions.isMediumCrossedUnderSlow;
conditions.is3MaSwitchedToBullishState = x3maConditions.is3MaSwitchedToBullishState;
conditions.is3MaSwitchedToBearishState = x3maConditions.is3MaSwitchedToBearishState;
conditions.is3MaSwitchedToBullishOrdered = x3maConditions.is3MaSwitchedToBullishOrdered;
conditions.is3MaSwitchedToBearishOrdered = x3maConditions.is3MaSwitchedToBearishOrdered;
// //
// XCA ... // XCA ...
@@ -3551,4 +3694,4 @@ class XCXCAEAHelper : XCBase
int stochasticHandler; int stochasticHandler;
}; };
// //
+81
View File
@@ -666,17 +666,98 @@ bool DetectXCAEAConditions(
// Conditions ... // Conditions ...
// //
// PEAK ...
double zPeak = conditions.peakBuffer[zIDX]; double zPeak = conditions.peakBuffer[zIDX];
double cPeak = conditions.peakBuffer[cIDX]; double cPeak = conditions.peakBuffer[cIDX];
double pPeak = conditions.peakBuffer[pIDX]; double pPeak = conditions.peakBuffer[pIDX];
double p2Peak = conditions.peakBuffer[p2IDX]; double p2Peak = conditions.peakBuffer[p2IDX];
// //
// VALE ...
double zVale = conditions.valeBuffer[zIDX]; double zVale = conditions.valeBuffer[zIDX];
double cVale = conditions.valeBuffer[cIDX]; double cVale = conditions.valeBuffer[cIDX];
double pVale = conditions.valeBuffer[pIDX]; double pVale = conditions.valeBuffer[pIDX];
double p2Vale = conditions.valeBuffer[p2IDX]; double p2Vale = conditions.valeBuffer[p2IDX];
//
// X3MA ...
//
// FAST ...
//
double z3MAFast = conditions.fastBuffer[zIDX];
double c3MAFast = conditions.fastBuffer[cIDX];
double p3MAFast = conditions.fastBuffer[pIDX];
double p23MAFast = conditions.fastBuffer[p2IDX];
//
double z3MAFastState = conditions.fastStateBuffer[zIDX];
double c3MAFastState = conditions.fastStateBuffer[cIDX];
double p3MAFastState = conditions.fastStateBuffer[pIDX];
double p23MAFastState = conditions.fastStateBuffer[p2IDX];
//
// MEDIUM ...
//
double z3MAMedium = conditions.mediumBuffer[zIDX];
double c3MAMedium = conditions.mediumBuffer[cIDX];
double p3MAMedium = conditions.mediumBuffer[pIDX];
double p23MAMedium = conditions.mediumBuffer[p2IDX];
//
double z3MAMediumState = conditions.mediumStateBuffer[zIDX];
double c3MAMediumState = conditions.mediumStateBuffer[cIDX];
double p3MAMediumState = conditions.mediumStateBuffer[pIDX];
double p23MAMediumState = conditions.mediumStateBuffer[p2IDX];
//
// SLOW ...
//
double z3MASlow = conditions.slowBuffer[zIDX];
double c3MASlow = conditions.slowBuffer[cIDX];
double p3MASlow = conditions.slowBuffer[pIDX];
double p23MASlow = conditions.slowBuffer[p2IDX];
//
double z3MASlowState = conditions.slowStateBuffer[zIDX];
double c3MASlowState = conditions.slowStateBuffer[cIDX];
double p3MASlowState = conditions.slowStateBuffer[pIDX];
double p23MASlowState = conditions.slowStateBuffer[p2IDX];
//
double x3maBullishGapUpper = c3MAMedium;
double x3maBullishGapLower = c3MASlow;
//
double x3maBearishGapUpper = c3MASlow;
double x3maBearishGapLower = c3MAMedium;
//
// Create Conditions ...
//
bool isX3MABullishState =
z3MAFast > c3MAFast &&
isCBarValidForBullish &&
c3MAFast > c3MAMedium &&
isCBarBullishRejected &&
c3MAMedium > c3MASlow &&
cBar.low < x3maBullishGapLower &&
cBar.GetDown() > x3maBullishGapLower;
//
bool isX3MABearishState =
z3MAFast < c3MAFast &&
isCBarValidForBearish &&
c3MAFast < c3MAMedium &&
isCBarBearishRejected &&
c3MAMedium < c3MASlow &&
cBar.high > x3maBearishGapLower &&
cBar.GetUp() < x3maBearishGapLower;
// //
// Parsing Pivots ... // Parsing Pivots ...
+29 -24
View File
@@ -813,12 +813,12 @@ class XCXCAEASignaller : XCBase
// //
// XOSCS ... // XOSCS ...
inputs.oscsInputs.rsiLength = 4; // inputs.oscsInputs.rsiLength = 4;
inputs.oscsInputs.rsiOBLevel = 90; // inputs.oscsInputs.rsiOBLevel = 90;
inputs.oscsInputs.rsiOSLevel = 10; // inputs.oscsInputs.rsiOSLevel = 10;
inputs.oscsInputs.cciLength = 7; // inputs.oscsInputs.cciLength = 7;
inputs.oscsInputs.cciOBLevel = 130; // inputs.oscsInputs.cciOBLevel = 130;
inputs.oscsInputs.cciOSLevel = -130; // inputs.oscsInputs.cciOSLevel = -130;
// inputs.oscsInputs.mfiLength = 5; // inputs.oscsInputs.mfiLength = 5;
// inputs.oscsInputs.rviLength = 5; // inputs.oscsInputs.rviLength = 5;
@@ -861,21 +861,24 @@ class XCXCAEASignaller : XCBase
detector.detectCCIValePivots = false; detector.detectCCIValePivots = false;
detector.detectFVGBullishPivots = false; detector.detectFVGBullishPivots = false;
detector.detectFVGBearishPivots = false; detector.detectFVGBearishPivots = false;
detector.detectValeSupSWLPivots = true;
detector.detectPeakResSWHPivots = true;
detector.detectPVFVGBullishPivots = true;
detector.detectPVFVGBearishPivots = true;
detector.detectRSICrossedOverOSPivots = true;
detector.detectRSICrossedUnderOBPivots = true;
detector.detectCCICrossedOverOSPivots = false; detector.detectCCICrossedOverOSPivots = false;
detector.detectCCICrossedUnderOBPivots = false; detector.detectCCICrossedUnderOBPivots = false;
//
detector.detectValeSupSWLPivots = true;
detector.detectPeakResSWHPivots = true;
detector.detectTrendBullishPivots = true;
detector.detectTrendBearishPivots = true;
detector.detectRSICrossedOverOSPivots = true;
detector.detectRSICrossedUnderOBPivots = true;
// //
// Initialize and Configure Drawer ... // Initialize and Configure Drawer ...
drawer = new XCXCAEAPOIDrawer(detector); drawer = new XCXCAEAPOIDrawer(detector);
// //
drawer.ignoreUpdateOSCTos = true; drawer.ignoreUpdateOSCTos = true;
drawer.drawTrendPivotsOnlySelectedFVG = true;
// //
// Configure Drawer ... // Configure Drawer ...
@@ -888,14 +891,16 @@ class XCXCAEASignaller : XCBase
drawer.drawCCIValePivots = false; drawer.drawCCIValePivots = false;
drawer.drawFVGBullishPivots = false; drawer.drawFVGBullishPivots = false;
drawer.drawFVGBearishPivots = false; drawer.drawFVGBearishPivots = false;
drawer.drawCCICrossedOverOSPivots = false;
drawer.drawCCICrossedUnderOBPivots = false;
//
drawer.drawValeSupSWLPivots = true; drawer.drawValeSupSWLPivots = true;
drawer.drawPeakResSWHPivots = true; drawer.drawPeakResSWHPivots = true;
drawer.drawPVFVGBullishPivots = true; drawer.drawTrendBullishPivots = true;
drawer.drawPVFVGBearishPivots = true; drawer.drawTrendBearishPivots = true;
drawer.drawRSICrossedOverOSPivots = true; drawer.drawRSICrossedOverOSPivots = true;
drawer.drawRSICrossedUnderOBPivots = true; drawer.drawRSICrossedUnderOBPivots = true;
drawer.drawCCICrossedOverOSPivots = true;
drawer.drawCCICrossedUnderOBPivots = true;
// //
// Configure Widths ... // Configure Widths ...
@@ -911,8 +916,8 @@ class XCXCAEASignaller : XCBase
drawer.peakResSWHPivotsWidth = 1; drawer.peakResSWHPivotsWidth = 1;
drawer.trendLineBullishWidth = 4; drawer.trendLineBullishWidth = 4;
drawer.trendLineBullishWidth = 4; drawer.trendLineBullishWidth = 4;
drawer.pvFVGBullishPivotsWidth = 1; drawer.trendBullishPivotsWidth = 1;
drawer.pvFVGBearishPivotsWidth = 1; drawer.trendBearishPivotsWidth = 1;
drawer.rsiCrossedOverOSPivotsWidth = 4; drawer.rsiCrossedOverOSPivotsWidth = 4;
drawer.rsiCrossedUnderOBPivotsWidth = 4; drawer.rsiCrossedUnderOBPivotsWidth = 4;
drawer.cciCrossedOverOSPivotsWidth = 4; drawer.cciCrossedOverOSPivotsWidth = 4;
@@ -926,14 +931,14 @@ class XCXCAEASignaller : XCBase
drawer.rsiValePivotsColor = clrAqua; drawer.rsiValePivotsColor = clrAqua;
drawer.cciPeakPivotsColor = clrMagenta; drawer.cciPeakPivotsColor = clrMagenta;
drawer.cciValePivotsColor = clrAqua; drawer.cciValePivotsColor = clrAqua;
drawer.fvgBullishPivotsColor = clrLime; drawer.fvgBullishPivotsColor = clrAqua;
drawer.fvgBearishPivotsColor = clrRed; drawer.fvgBearishPivotsColor = clrMagenta;
drawer.valeSupSWLPivotsColor = clrAqua; drawer.valeSupSWLPivotsColor = clrAqua;
drawer.peakResSWHPivotsColor = clrMagenta; drawer.peakResSWHPivotsColor = clrMagenta;
drawer.trendLineBullishColor = clrAqua; drawer.trendLineBullishColor = clrAqua;
drawer.trendLineBullishColor = clrMagenta; drawer.trendLineBullishColor = clrMagenta;
drawer.pvFVGBullishPivotsColor = clrLime; drawer.trendBullishPivotsColor = clrLime;
drawer.pvFVGBearishPivotsColor = clrRed; drawer.trendBearishPivotsColor = clrRed;
drawer.rsiCrossedOverOSPivotsColor = clrAqua; drawer.rsiCrossedOverOSPivotsColor = clrAqua;
drawer.rsiCrossedUnderOBPivotsColor = clrMagenta; drawer.rsiCrossedUnderOBPivotsColor = clrMagenta;
drawer.cciCrossedOverOSPivotsColor = clrAqua; drawer.cciCrossedOverOSPivotsColor = clrAqua;
@@ -953,8 +958,8 @@ class XCXCAEASignaller : XCBase
drawer.peakResSWHPivotsStyle = STYLE_SOLID; drawer.peakResSWHPivotsStyle = STYLE_SOLID;
drawer.trendLineBullishWidth = STYLE_SOLID; drawer.trendLineBullishWidth = STYLE_SOLID;
drawer.trendLineBullishWidth = STYLE_SOLID; drawer.trendLineBullishWidth = STYLE_SOLID;
drawer.pvFVGBullishPivotsStyle = STYLE_DASHDOTDOT; drawer.trendBullishPivotsStyle = STYLE_DASHDOTDOT;
drawer.pvFVGBearishPivotsStyle = STYLE_DASHDOTDOT; drawer.trendBearishPivotsStyle = STYLE_DASHDOTDOT;
drawer.rsiCrossedOverOSPivotsStyle = STYLE_DASHDOTDOT; drawer.rsiCrossedOverOSPivotsStyle = STYLE_DASHDOTDOT;
drawer.rsiCrossedUnderOBPivotsStyle = STYLE_DASHDOTDOT; drawer.rsiCrossedUnderOBPivotsStyle = STYLE_DASHDOTDOT;
drawer.cciCrossedOverOSPivotsStyle = STYLE_DASHDOTDOT; drawer.cciCrossedOverOSPivotsStyle = STYLE_DASHDOTDOT;