This commit is contained in:
2025-04-26 17:40:03 +03:30
parent e1bcf58bc8
commit 94878bdea2
9 changed files with 4063 additions and 540 deletions
File diff suppressed because it is too large Load Diff
+323 -11
View File
@@ -56,6 +56,10 @@ class XCXCAEAPOIDrawer : public XCBase
bool drawPeakResSWHPivots;
bool drawPVFVGBullishPivots;
bool drawPVFVGBearishPivots;
bool drawRSICrossedOverOSPivots;
bool drawRSICrossedUnderOBPivots;
bool drawCCICrossedOverOSPivots;
bool drawCCICrossedUnderOBPivots;
//
// Colors ...
@@ -79,7 +83,11 @@ class XCXCAEAPOIDrawer : public XCBase
color trendLineBearishColor;
color pvFVGBullishPivotsColor;
color pvFVGBearishPivotsColor;
color rsiCrossedOverOSPivotsColor;
color rsiCrossedUnderOBPivotsColor;
color cciCrossedOverOSPivotsColor;
color cciCrossedUnderOBPivotsColor;
//
// Width ...
@@ -102,6 +110,10 @@ class XCXCAEAPOIDrawer : public XCBase
int trendLineBearishWidth;
int pvFVGBullishPivotsWidth;
int pvFVGBearishPivotsWidth;
int rsiCrossedOverOSPivotsWidth;
int rsiCrossedUnderOBPivotsWidth;
int cciCrossedOverOSPivotsWidth;
int cciCrossedUnderOBPivotsWidth;
//
// Style ...
@@ -125,6 +137,10 @@ class XCXCAEAPOIDrawer : public XCBase
ENUM_LINE_STYLE trendLineBearishStyle;
ENUM_LINE_STYLE pvFVGBullishPivotsStyle;
ENUM_LINE_STYLE pvFVGBearishPivotsStyle;
ENUM_LINE_STYLE rsiCrossedOverOSPivotsStyle;
ENUM_LINE_STYLE rsiCrossedUnderOBPivotsStyle;
ENUM_LINE_STYLE cciCrossedOverOSPivotsStyle;
ENUM_LINE_STYLE cciCrossedUnderOBPivotsStyle;
//
// Colorize Props ...
@@ -187,6 +203,10 @@ class XCXCAEAPOIDrawer : public XCBase
drawPeakResSWHPivots = false;
drawPVFVGBullishPivots = false;
drawPVFVGBearishPivots = false;
drawRSICrossedOverOSPivots = false;
drawRSICrossedUnderOBPivots = false;
drawCCICrossedOverOSPivots = false;
drawCCICrossedUnderOBPivots = false;
//
defaultBullishColor = clrLime;
@@ -203,7 +223,9 @@ class XCXCAEAPOIDrawer : public XCBase
valeSupSWLPivotsColor = defaultBullishColor;
trendLineBullishColor = defaultBullishColor;
pvFVGBullishPivotsColor = defaultBullishColor;
rsiCrossedOverOSPivotsColor = defaultBullishColor;
cciCrossedOverOSPivotsColor = defaultBullishColor;
//
rsiPeakPivotsColor = defaultBearishColor;
cciPeakPivotsColor = defaultBearishColor;
@@ -211,15 +233,17 @@ class XCXCAEAPOIDrawer : public XCBase
peakResSWHPivotsColor = defaultBearishColor;
trendLineBearishColor = defaultBearishColor;
pvFVGBearishPivotsColor = defaultBearishColor;
rsiCrossedUnderOBPivotsColor = defaultBearishColor;
cciCrossedUnderOBPivotsColor = defaultBearishColor;
//
defaultBullishWidth = 1;
defaultBearishWidth = 1;
//
tickPivotsWidth = defaultBullishWidth;
volumePivotsWidth = defaultBearishWidth;
//
rsiValePivotsWidth = defaultBullishWidth;
cciValePivotsWidth = defaultBullishWidth;
@@ -227,7 +251,9 @@ class XCXCAEAPOIDrawer : public XCBase
valeSupSWLPivotsWidth = defaultBullishWidth;
trendLineBullishWidth = defaultBullishWidth;
pvFVGBullishPivotsWidth = defaultBullishWidth;
rsiCrossedOverOSPivotsWidth = defaultBullishWidth;
cciCrossedOverOSPivotsWidth = defaultBullishWidth;
//
rsiPeakPivotsWidth = defaultBearishWidth;
cciPeakPivotsWidth = defaultBearishWidth;
@@ -235,15 +261,17 @@ class XCXCAEAPOIDrawer : public XCBase
peakResSWHPivotsWidth = defaultBearishWidth;
trendLineBearishWidth = defaultBearishWidth;
pvFVGBearishPivotsWidth = defaultBearishWidth;
rsiCrossedUnderOBPivotsWidth = defaultBearishWidth;
cciCrossedUnderOBPivotsWidth = defaultBearishWidth;
//
defaultBullishStyle = STYLE_SOLID;
defaultBearishStyle = STYLE_SOLID;
//
tickPivotsStyle = defaultBullishStyle;
volumePivotsStyle = defaultBearishStyle;
//
rsiValePivotsStyle = defaultBullishStyle;
cciValePivotsStyle = defaultBullishStyle;
@@ -251,7 +279,9 @@ class XCXCAEAPOIDrawer : public XCBase
valeSupSWLPivotsStyle = defaultBullishStyle;
trendLineBullishStyle = defaultBullishStyle;
pvFVGBullishPivotsStyle = defaultBullishStyle;
rsiCrossedOverOSPivotsStyle = defaultBullishStyle;
cciCrossedOverOSPivotsStyle = defaultBullishStyle;
//
rsiPeakPivotsStyle = defaultBearishStyle;
cciPeakPivotsStyle = defaultBearishStyle;
@@ -259,6 +289,8 @@ class XCXCAEAPOIDrawer : public XCBase
peakResSWHPivotsStyle = defaultBearishStyle;
trendLineBearishStyle = defaultBearishStyle;
pvFVGBearishPivotsStyle = defaultBearishStyle;
rsiCrossedUnderOBPivotsStyle = defaultBearishStyle;
cciCrossedUnderOBPivotsStyle = defaultBearishStyle;
}
//
@@ -278,6 +310,10 @@ class XCXCAEAPOIDrawer : public XCBase
DrawPeakResSWHPivots(to);
DrawPVFVGBullishPivots(to);
DrawPVFVGBearishPivots(to);
DrawRSICrossedOverOSPivots(to);
DrawRSICrossedUnderOBPivots(to);
DrawCCICrossedOverOSPivots(to);
DrawCCICrossedUnderOBPivots(to);
}
//
@@ -297,6 +333,10 @@ class XCXCAEAPOIDrawer : public XCBase
mPeakResSWHPivotObjects.Clear();
mPVFVGBullishPivotObjects.Clear();
mPVFVGBearishPivotObjects.Clear();
mRSICrossedOverOSPivotObjects.Clear();
mRSICrossedUnderOBPivotObjects.Clear();
mCCICrossedOverOSPivotObjects.Clear();
mCCICrossedUnderOBPivotObjects.Clear();
}
//
@@ -312,6 +352,9 @@ class XCXCAEAPOIDrawer : public XCBase
return;
}
//
mTrendLineObjects.Clear();
//
ENUM_X_DIRECTION trend = X_DIRECTION_NONE;
bool has = detector.MarketTrend(trend);
@@ -333,7 +376,7 @@ class XCXCAEAPOIDrawer : public XCBase
: detector.trendPivotP.upper;
//
datetime pTime = detector.trendPivotC.from;
datetime pTime = detector.trendPivotP.from;
//
double cPrice = hasBullishTrend
@@ -384,6 +427,7 @@ class XCXCAEAPOIDrawer : public XCBase
iObj.Color(tlColor);
iObj.Width(tlWidth);
iObj.Style(tlStyle);
iObj.RayRight(true);
//
// Store Object ...
@@ -1124,6 +1168,270 @@ class XCXCAEAPOIDrawer : public XCBase
}
}
//
void DrawRSICrossedOverOSPivots(datetime to = NULL)
{
//
bool has = drawRSICrossedOverOSPivots;
if (!has)
{
return;
}
//
has = detector.HasRSICrossedOverOSPivots();
if (!has)
{
return;
}
//
if (ignoreUpdateOSCTos)
{
to = NULL;
}
//
bool canUpdateTo = IsValid(to);
//
int count = detector.CountRSICrossedOverOSPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = detector.rsiCrossedOverOSPivots[i];
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(rsiCrossedOverOSPivotsColor);
iObj.BoxWidth(rsiCrossedOverOSPivotsWidth);
iObj.BoxStyle(rsiCrossedOverOSPivotsStyle);
//
// Store Object ...
mRSICrossedOverOSPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
//
void DrawRSICrossedUnderOBPivots(datetime to = NULL)
{
//
bool has = drawRSICrossedUnderOBPivots;
if (!has)
{
return;
}
//
has = detector.HasRSICrossedUnderOBPivots();
if (!has)
{
return;
}
//
if (ignoreUpdateOSCTos)
{
to = NULL;
}
//
bool canUpdateTo = IsValid(to);
//
int count = detector.CountRSICrossedUnderOBPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = detector.rsiCrossedUnderOBPivots[i];
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(rsiCrossedUnderOBPivotsColor);
iObj.BoxWidth(rsiCrossedUnderOBPivotsWidth);
iObj.BoxStyle(rsiCrossedUnderOBPivotsStyle);
//
// Store Object ...
mRSICrossedUnderOBPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
//
void DrawCCICrossedOverOSPivots(datetime to = NULL)
{
//
bool has = drawCCICrossedOverOSPivots;
if (!has)
{
return;
}
//
has = detector.HasCCICrossedOverOSPivots();
if (!has)
{
return;
}
//
if (ignoreUpdateOSCTos)
{
to = NULL;
}
//
bool canUpdateTo = IsValid(to);
//
int count = detector.CountCCICrossedOverOSPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = detector.cciCrossedOverOSPivots[i];
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(cciCrossedOverOSPivotsColor);
iObj.BoxWidth(cciCrossedOverOSPivotsWidth);
iObj.BoxStyle(cciCrossedOverOSPivotsStyle);
//
// Store Object ...
mCCICrossedOverOSPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
//
void DrawCCICrossedUnderOBPivots(datetime to = NULL)
{
//
bool has = drawCCICrossedUnderOBPivots;
if (!has)
{
return;
}
//
has = detector.HasCCICrossedUnderOBPivots();
if (!has)
{
return;
}
//
if (ignoreUpdateOSCTos)
{
to = NULL;
}
//
bool canUpdateTo = IsValid(to);
//
int count = detector.CountCCICrossedUnderOBPivots();
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = detector.cciCrossedUnderOBPivots[i];
//
if (canUpdateTo)
{
iBox.to = to;
}
//
XCBoxObject *iObj;
has = drawer.DrawBox(
iBox,
iObj //
);
//
if (has)
{
//
// Style Object ...
iObj.BoxColor(cciCrossedUnderOBPivotsColor);
iObj.BoxWidth(cciCrossedUnderOBPivotsWidth);
iObj.BoxStyle(cciCrossedUnderOBPivotsStyle);
//
// Store Object ...
mCCICrossedUnderOBPivotObjects.Add(iObj);
}
//
iBox.Clean();
ZeroMemory(iObj);
}
}
//
// Protected ...
protected:
@@ -1154,6 +1462,10 @@ class XCXCAEAPOIDrawer : public XCBase
CArrayObj mPeakResSWHPivotObjects;
CArrayObj mPVFVGBullishPivotObjects;
CArrayObj mPVFVGBearishPivotObjects;
CArrayObj mRSICrossedOverOSPivotObjects;
CArrayObj mRSICrossedUnderOBPivotObjects;
CArrayObj mCCICrossedOverOSPivotObjects;
CArrayObj mCCICrossedUnderOBPivotObjects;
//
};