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
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 drawTrendPivotsOnlySelectedFVG;
//
// Drawers ...
@@ -54,8 +55,8 @@ class XCXCAEAPOIDrawer : public XCBase
bool drawFVGBearishPivots;
bool drawValeSupSWLPivots;
bool drawPeakResSWHPivots;
bool drawPVFVGBullishPivots;
bool drawPVFVGBearishPivots;
bool drawTrendBullishPivots;
bool drawTrendBearishPivots;
bool drawRSICrossedOverOSPivots;
bool drawRSICrossedUnderOBPivots;
bool drawCCICrossedOverOSPivots;
@@ -81,13 +82,13 @@ class XCXCAEAPOIDrawer : public XCBase
color peakResSWHPivotsColor;
color trendLineBullishColor;
color trendLineBearishColor;
color pvFVGBullishPivotsColor;
color pvFVGBearishPivotsColor;
color trendBullishPivotsColor;
color trendBearishPivotsColor;
color rsiCrossedOverOSPivotsColor;
color rsiCrossedUnderOBPivotsColor;
color cciCrossedOverOSPivotsColor;
color cciCrossedUnderOBPivotsColor;
//
// Width ...
@@ -108,8 +109,8 @@ class XCXCAEAPOIDrawer : public XCBase
int peakResSWHPivotsWidth;
int trendLineBullishWidth;
int trendLineBearishWidth;
int pvFVGBullishPivotsWidth;
int pvFVGBearishPivotsWidth;
int trendBullishPivotsWidth;
int trendBearishPivotsWidth;
int rsiCrossedOverOSPivotsWidth;
int rsiCrossedUnderOBPivotsWidth;
int cciCrossedOverOSPivotsWidth;
@@ -135,8 +136,8 @@ class XCXCAEAPOIDrawer : public XCBase
ENUM_LINE_STYLE peakResSWHPivotsStyle;
ENUM_LINE_STYLE trendLineBullishStyle;
ENUM_LINE_STYLE trendLineBearishStyle;
ENUM_LINE_STYLE pvFVGBullishPivotsStyle;
ENUM_LINE_STYLE pvFVGBearishPivotsStyle;
ENUM_LINE_STYLE trendBullishPivotsStyle;
ENUM_LINE_STYLE trendBearishPivotsStyle;
ENUM_LINE_STYLE rsiCrossedOverOSPivotsStyle;
ENUM_LINE_STYLE rsiCrossedUnderOBPivotsStyle;
ENUM_LINE_STYLE cciCrossedOverOSPivotsStyle;
@@ -188,6 +189,7 @@ class XCXCAEAPOIDrawer : public XCBase
{
//
ignoreUpdateOSCTos = true;
drawTrendPivotsOnlySelectedFVG = true;
//
drawTrendLine = false;
@@ -201,8 +203,8 @@ class XCXCAEAPOIDrawer : public XCBase
drawFVGBearishPivots = false;
drawValeSupSWLPivots = false;
drawPeakResSWHPivots = false;
drawPVFVGBullishPivots = false;
drawPVFVGBearishPivots = false;
drawTrendBullishPivots = false;
drawTrendBearishPivots = false;
drawRSICrossedOverOSPivots = false;
drawRSICrossedUnderOBPivots = false;
drawCCICrossedOverOSPivots = false;
@@ -222,73 +224,73 @@ class XCXCAEAPOIDrawer : public XCBase
fvgBullishPivotsColor = defaultBullishColor;
valeSupSWLPivotsColor = defaultBullishColor;
trendLineBullishColor = defaultBullishColor;
pvFVGBullishPivotsColor = defaultBullishColor;
trendBullishPivotsColor = defaultBullishColor;
rsiCrossedOverOSPivotsColor = defaultBullishColor;
cciCrossedOverOSPivotsColor = defaultBullishColor;
//
rsiPeakPivotsColor = defaultBearishColor;
cciPeakPivotsColor = defaultBearishColor;
fvgBearishPivotsColor = defaultBearishColor;
peakResSWHPivotsColor = defaultBearishColor;
trendLineBearishColor = defaultBearishColor;
pvFVGBearishPivotsColor = defaultBearishColor;
trendBearishPivotsColor = defaultBearishColor;
rsiCrossedUnderOBPivotsColor = defaultBearishColor;
cciCrossedUnderOBPivotsColor = defaultBearishColor;
//
defaultBullishWidth = 1;
defaultBearishWidth = 1;
//
tickPivotsWidth = defaultBullishWidth;
volumePivotsWidth = defaultBearishWidth;
//
rsiValePivotsWidth = defaultBullishWidth;
cciValePivotsWidth = defaultBullishWidth;
fvgBullishPivotsWidth = defaultBullishWidth;
valeSupSWLPivotsWidth = defaultBullishWidth;
trendLineBullishWidth = defaultBullishWidth;
pvFVGBullishPivotsWidth = defaultBullishWidth;
trendBullishPivotsWidth = defaultBullishWidth;
rsiCrossedOverOSPivotsWidth = defaultBullishWidth;
cciCrossedOverOSPivotsWidth = defaultBullishWidth;
//
rsiPeakPivotsWidth = defaultBearishWidth;
cciPeakPivotsWidth = defaultBearishWidth;
fvgBearishPivotsWidth = defaultBearishWidth;
peakResSWHPivotsWidth = defaultBearishWidth;
trendLineBearishWidth = defaultBearishWidth;
pvFVGBearishPivotsWidth = defaultBearishWidth;
trendBearishPivotsWidth = defaultBearishWidth;
rsiCrossedUnderOBPivotsWidth = defaultBearishWidth;
cciCrossedUnderOBPivotsWidth = defaultBearishWidth;
//
defaultBullishStyle = STYLE_SOLID;
defaultBearishStyle = STYLE_SOLID;
//
tickPivotsStyle = defaultBullishStyle;
volumePivotsStyle = defaultBearishStyle;
//
rsiValePivotsStyle = defaultBullishStyle;
cciValePivotsStyle = defaultBullishStyle;
fvgBullishPivotsStyle = defaultBullishStyle;
valeSupSWLPivotsStyle = defaultBullishStyle;
trendLineBullishStyle = defaultBullishStyle;
pvFVGBullishPivotsStyle = defaultBullishStyle;
trendBullishPivotsStyle = defaultBullishStyle;
rsiCrossedOverOSPivotsStyle = defaultBullishStyle;
cciCrossedOverOSPivotsStyle = defaultBullishStyle;
//
rsiPeakPivotsStyle = defaultBearishStyle;
cciPeakPivotsStyle = defaultBearishStyle;
fvgBearishPivotsStyle = defaultBearishStyle;
peakResSWHPivotsStyle = defaultBearishStyle;
trendLineBearishStyle = defaultBearishStyle;
pvFVGBearishPivotsStyle = defaultBearishStyle;
trendBearishPivotsStyle = defaultBearishStyle;
rsiCrossedUnderOBPivotsStyle = defaultBearishStyle;
cciCrossedUnderOBPivotsStyle = defaultBearishStyle;
}
@@ -308,8 +310,8 @@ class XCXCAEAPOIDrawer : public XCBase
DrawFVGBearishPivots(to);
DrawValeSupSWLPivots(to);
DrawPeakResSWHPivots(to);
DrawPVFVGBullishPivots(to);
DrawPVFVGBearishPivots(to);
DrawTrendBullishPivots(to);
DrawTrendBearishPivots(to);
DrawRSICrossedOverOSPivots(to);
DrawRSICrossedUnderOBPivots(to);
DrawCCICrossedOverOSPivots(to);
@@ -331,8 +333,8 @@ class XCXCAEAPOIDrawer : public XCBase
mFVGBearishPivotObjects.Clear();
mValeSupSWLPivotObjects.Clear();
mPeakResSWHPivotObjects.Clear();
mPVFVGBullishPivotObjects.Clear();
mPVFVGBearishPivotObjects.Clear();
mTrendBullishPivotObjects.Clear();
mTrendBearishPivotObjects.Clear();
mRSICrossedOverOSPivotObjects.Clear();
mRSICrossedUnderOBPivotObjects.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)
{
return;
}
//
has = detector.HasPVFVGBullishPivots();
has = detector.HasTrendBullishPivots();
if (!has)
{
return;
@@ -1055,64 +1057,148 @@ class XCXCAEAPOIDrawer : public XCBase
bool canUpdateTo = IsValid(to);
//
int count = detector.CountPVFVGBullishPivots();
int count = detector.CountTrendBullishPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox;
has = detector.pvFVGBullishPivots[i].GetSelectedFVG(iBox);
if (!has)
{
//
iBox.Clean();
continue;
}
XCATRENDFVG iTrendFVG = detector.trendBullishPivots[i];
//
// Draw Trend Box ...
//
if (canUpdateTo)
{
iBox.to = to;
iTrendFVG.trend.to = to;
}
//
XCBoxObject *iObj;
XCBoxObject *iTrendBoxObj;
has = drawer.DrawBox(
iBox,
iObj //
iTrendFVG.trend,
iTrendBoxObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(pvFVGBullishPivotsColor);
iObj.BoxWidth(pvFVGBullishPivotsWidth);
iObj.BoxStyle(pvFVGBullishPivotsStyle);
iTrendBoxObj.BoxColor(trendBullishPivotsColor);
iTrendBoxObj.BoxWidth(trendBullishPivotsWidth);
iTrendBoxObj.BoxStyle(trendBullishPivotsStyle);
//
// Store Object ...
mPVFVGBullishPivotObjects.Add(iObj);
mTrendBullishPivotObjects.Add(iTrendBoxObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
// Draw ITrendFVG FVGS ...
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)
{
return;
}
//
has = detector.HasPVFVGBearishPivots();
has = detector.HasTrendBearishPivots();
if (!has)
{
return;
@@ -1122,54 +1208,138 @@ class XCXCAEAPOIDrawer : public XCBase
bool canUpdateTo = IsValid(to);
//
int count = detector.CountPVFVGBearishPivots();
int count = detector.CountTrendBearishPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox;
has = detector.pvFVGBearishPivots[i].GetSelectedFVG(iBox);
if (!has)
{
//
iBox.Clean();
continue;
}
XCATRENDFVG iTrendFVG = detector.trendBearishPivots[i];
//
// Draw Trend Box ...
//
if (canUpdateTo)
{
iBox.to = to;
iTrendFVG.trend.to = to;
}
//
XCBoxObject *iObj;
XCBoxObject *iTrendBoxObj;
has = drawer.DrawBox(
iBox,
iObj //
iTrendFVG.trend,
iTrendBoxObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(pvFVGBearishPivotsColor);
iObj.BoxWidth(pvFVGBearishPivotsWidth);
iObj.BoxStyle(pvFVGBearishPivotsStyle);
iTrendBoxObj.BoxColor(trendBearishPivotsColor);
iTrendBoxObj.BoxWidth(trendBearishPivotsWidth);
iTrendBoxObj.BoxStyle(trendBearishPivotsStyle);
//
// Store Object ...
mPVFVGBearishPivotObjects.Add(iObj);
mTrendBearishPivotObjects.Add(iTrendBoxObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
// Draw ITrendFVG FVGS ...
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;
@@ -1301,7 +1471,7 @@ class XCXCAEAPOIDrawer : public XCBase
}
//
void DrawCCICrossedOverOSPivots(datetime to = NULL)
void DrawCCICrossedOverOSPivots(datetime to = NULL)
{
//
bool has = drawCCICrossedOverOSPivots;
@@ -1460,8 +1630,8 @@ class XCXCAEAPOIDrawer : public XCBase
CArrayObj mFVGBearishPivotObjects;
CArrayObj mValeSupSWLPivotObjects;
CArrayObj mPeakResSWHPivotObjects;
CArrayObj mPVFVGBullishPivotObjects;
CArrayObj mPVFVGBearishPivotObjects;
CArrayObj mTrendBullishPivotObjects;
CArrayObj mTrendBearishPivotObjects;
CArrayObj mRSICrossedOverOSPivotObjects;
CArrayObj mRSICrossedUnderOBPivotObjects;
CArrayObj mCCICrossedOverOSPivotObjects;