This commit is contained in:
2025-04-21 17:27:08 +03:30
parent 50092f2408
commit 0c280c24b4
3 changed files with 450 additions and 26 deletions
+78 -1
View File
@@ -129,6 +129,9 @@ struct XCAPivot
//
Clean(values);
//
ZeroMemory(this);
}
/**
@@ -465,6 +468,80 @@ struct XCAPivot
//
};
//
struct XCAPVFVG
{
//
// Props ...
double value;
XCAPivot fvgs[];
ENUM_X_DIRECTION dir;
//
// Constructor ...
XCAPVFVG()
{
Clean();
}
//
// Tools ...
//
void Clean()
{
//
value = 0;
Clean(fvgs);
dir = X_DIRECTION_NONE;
//
ZeroMemory(this);
}
//
bool IsValid()
{
//
bool result = false;
//
result = value != 0 &&
HasDirection(dir);
//
return result;
}
//
void AddPivot(XCAPivot &pivot)
{
//
if (!IsValid() ||
!pivot.IsValid())
{
return;
}
//
int idx = -1;
bool has = FindPivotIndex(
idx,
pivot,
fvgs //
);
if (has) {
return;
}
//
AddRef(
pivot,
fvgs //
);
}
};
/**
* Find Specified Pivot Index inside a Collection of Pivots ...
*
@@ -4762,7 +4839,7 @@ class XCXCAEAPOIDetector : public XCBase
}
Clean(tmp);
}
//
// OSCS ...
+339 -19
View File
@@ -63,6 +63,63 @@ class XCXCAEAPOIDrawer : public XCBase
bool drawCCICrossedOverOSPivots;
bool drawCCICrossedUnderOBPivots;
//
// Colorize Props ...
//
color peakPivotColor;
color valePivotColor;
color sameHHPivotColor;
color sameLLPivotColor;
color kiBullishPivotColor;
color kiBearishPivotColor;
color fvgBullishPivotColor;
color fvgBearishPivotColor;
color defBullishPivotColor;
color defBearishPivotColor;
color oscsBullishPivotColor;
color oscsBearishPivotColor;
color trendBullishPivotColor;
color trendBearishPivotColor;
//
// Width Props ...
//
int peakPivotWidth;
int valePivotWidth;
int sameHHPivotWidth;
int sameLLPivotWidth;
int kiBullishPivotWidth;
int kiBearishPivotWidth;
int fvgBullishPivotWidth;
int fvgBearishPivotWidth;
int defBullishPivotWidth;
int defBearishPivotWidth;
int oscsBullishPivotWidth;
int oscsBearishPivotWidth;
int trendBullishPivotWidth;
int trendBearishPivotWidth;
//
// Style Props ...
//
ENUM_LINE_STYLE peakPivotStyle;
ENUM_LINE_STYLE valePivotStyle;
ENUM_LINE_STYLE sameHHPivotStyle;
ENUM_LINE_STYLE sameLLPivotStyle;
ENUM_LINE_STYLE kiBullishPivotStyle;
ENUM_LINE_STYLE kiBearishPivotStyle;
ENUM_LINE_STYLE fvgBullishPivotStyle;
ENUM_LINE_STYLE fvgBearishPivotStyle;
ENUM_LINE_STYLE defBullishPivotStyle;
ENUM_LINE_STYLE defBearishPivotStyle;
ENUM_LINE_STYLE oscsBullishPivotStyle;
ENUM_LINE_STYLE oscsBearishPivotStyle;
ENUM_LINE_STYLE trendBullishPivotStyle;
ENUM_LINE_STYLE trendBearishPivotStyle;
//
// Constructors ...
XCXCAEAPOIDrawer(
@@ -93,7 +150,7 @@ class XCXCAEAPOIDrawer : public XCBase
mKIBullishPivotObjects.Clear();
mKIBearishPivotObjects.Clear();
mFVGBullishPivotObjects.Clear();
mFVGBearishPivotObjects.Clear();
mFVGBearishPivotObjects.Clear();
mPeakSWHResPivotObjects.Clear();
mValeSWLSupPivotObjects.Clear();
mTKIBullishPivotObjects.Clear();
@@ -135,7 +192,7 @@ class XCXCAEAPOIDrawer : public XCBase
drawKIBullishPivots = false;
drawKIBearishPivots = false;
drawFVGBullishPivots = false;
drawFVGBearishPivots = false;
drawFVGBearishPivots = false;
drawPeakSWHResPivots = false;
drawValeSWLSupPivots = false;
drawTKIBullishPivots = false;
@@ -150,6 +207,63 @@ class XCXCAEAPOIDrawer : public XCBase
drawRSICrossedUnderOBPivots = false;
drawCCICrossedOverOSPivots = false;
drawCCICrossedUnderOBPivots = false;
//
// Color ...
defBullishPivotColor = clrLime;
defBearishPivotColor = clrRed;
//
peakPivotColor = defBearishPivotColor;
valePivotColor = defBullishPivotColor;
sameHHPivotColor = defBearishPivotColor;
sameLLPivotColor = defBullishPivotColor;
kiBullishPivotColor = defBullishPivotColor;
kiBearishPivotColor = defBearishPivotColor;
fvgBullishPivotColor = defBullishPivotColor;
fvgBearishPivotColor = defBearishPivotColor;
oscsBullishPivotColor = defBullishPivotColor;
oscsBearishPivotColor = defBearishPivotColor;
trendBullishPivotColor = defBullishPivotColor;
trendBearishPivotColor = defBearishPivotColor;
//
// Width ...
defBullishPivotWidth = 1;
defBearishPivotWidth = 1;
//
peakPivotWidth = defBearishPivotWidth;
valePivotWidth = defBullishPivotWidth;
sameHHPivotWidth = defBearishPivotWidth;
sameLLPivotWidth = defBullishPivotWidth;
kiBullishPivotWidth = defBullishPivotWidth;
kiBearishPivotWidth = defBearishPivotWidth;
fvgBullishPivotWidth = defBullishPivotWidth;
fvgBearishPivotWidth = defBearishPivotWidth;
oscsBullishPivotWidth = defBullishPivotWidth;
oscsBearishPivotWidth = defBearishPivotWidth;
trendBullishPivotWidth = defBullishPivotWidth;
trendBearishPivotWidth = defBearishPivotWidth;
//
// Style ...
defBullishPivotStyle = STYLE_DOT;
defBearishPivotStyle = STYLE_DOT;
//
peakPivotStyle = defBearishPivotStyle;
valePivotStyle = defBullishPivotStyle;
sameHHPivotStyle = defBearishPivotStyle;
sameLLPivotStyle = defBullishPivotStyle;
kiBullishPivotStyle = defBullishPivotStyle;
kiBearishPivotStyle = defBearishPivotStyle;
fvgBullishPivotStyle = defBullishPivotStyle;
fvgBearishPivotStyle = defBearishPivotStyle;
oscsBullishPivotStyle = defBullishPivotStyle;
oscsBearishPivotStyle = defBearishPivotStyle;
trendBullishPivotStyle = defBullishPivotStyle;
trendBearishPivotStyle = defBearishPivotStyle;
}
//
@@ -233,6 +347,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(peakPivotColor);
iObj.BoxWidth(peakPivotWidth);
iObj.BoxStyle(peakPivotStyle);
//
mSWHPivotObjects.Add(iObj);
}
@@ -286,6 +406,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(valePivotColor);
iObj.BoxWidth(valePivotWidth);
iObj.BoxStyle(valePivotStyle);
//
mSWLPivotObjects.Add(iObj);
}
@@ -339,6 +465,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(peakPivotColor);
iObj.BoxWidth(peakPivotWidth);
iObj.BoxStyle(peakPivotStyle);
//
mPeakPivotObjects.Add(iObj);
}
@@ -392,6 +524,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(valePivotColor);
iObj.BoxWidth(valePivotWidth);
iObj.BoxStyle(valePivotStyle);
//
mValePivotObjects.Add(iObj);
}
@@ -445,6 +583,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(kiBullishPivotColor);
iObj.BoxWidth(kiBullishPivotWidth);
iObj.BoxStyle(kiBullishPivotStyle);
//
mKIBullishPivotObjects.Add(iObj);
}
@@ -498,6 +642,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(kiBearishPivotColor);
iObj.BoxWidth(kiBearishPivotWidth);
iObj.BoxStyle(kiBearishPivotStyle);
//
mKIBearishPivotObjects.Add(iObj);
}
@@ -505,11 +655,13 @@ class XCXCAEAPOIDrawer : public XCBase
iBox.Clean();
}
}
//
void DrawFVGBullishPivots(datetime to = NULL) {
void DrawFVGBullishPivots(datetime to = NULL)
{
//
if (!drawFVGBullishPivots) {
if (!drawFVGBullishPivots)
{
return;
}
@@ -518,24 +670,28 @@ class XCXCAEAPOIDrawer : public XCBase
//
bool has = detector.HasFVGBullishPivots();
if (!has) {
if (!has)
{
return;
}
//
int count = detector.CountFVGBullishPivots();
for (int i = 0; i < count; i++) {
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox;
has = detector.fvgBullishPivots[i].AsBox(iBox);
if (!has) {
if (!has)
{
//
iBox.Clean();
continue;
}
//
if (canUpdateTo) {
if (canUpdateTo)
{
iBox.to = to;
}
@@ -545,16 +701,25 @@ class XCXCAEAPOIDrawer : public XCBase
iBox,
iObj //
);
if (has) {
if (has)
{
//
iObj.BoxColor(fvgBullishPivotColor);
iObj.BoxWidth(fvgBullishPivotWidth);
iObj.BoxStyle(fvgBullishPivotStyle);
//
mFVGBullishPivotObjects.Add(iObj);
}
}
}
//
void DrawFVGBearishPivots(datetime to = NULL) {
void DrawFVGBearishPivots(datetime to = NULL)
{
//
if (!drawFVGBearishPivots) {
if (!drawFVGBearishPivots)
{
return;
}
@@ -563,24 +728,28 @@ class XCXCAEAPOIDrawer : public XCBase
//
bool has = detector.HasFVGBearishPivots();
if (!has) {
if (!has)
{
return;
}
//
int count = detector.CountFVGBearishPivots();
for (int i = 0; i < count; i++) {
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox;
has = detector.fvgBearishPivots[i].AsBox(iBox);
if (!has) {
if (!has)
{
//
iBox.Clean();
continue;
}
//
if (canUpdateTo) {
if (canUpdateTo)
{
iBox.to = to;
}
@@ -590,7 +759,14 @@ class XCXCAEAPOIDrawer : public XCBase
iBox,
iObj //
);
if (has) {
if (has)
{
//
iObj.BoxColor(fvgBearishPivotColor);
iObj.BoxWidth(fvgBearishPivotWidth);
iObj.BoxStyle(fvgBearishPivotStyle);
//
mFVGBearishPivotObjects.Add(iObj);
}
}
@@ -641,6 +817,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(peakPivotColor);
iObj.BoxWidth(peakPivotWidth);
iObj.BoxStyle(peakPivotStyle);
//
mPeakSWHResPivotObjects.Add(iObj);
}
@@ -694,6 +876,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(valePivotColor);
iObj.BoxWidth(valePivotWidth);
iObj.BoxStyle(valePivotStyle);
//
mValeSWLSupPivotObjects.Add(iObj);
}
@@ -747,6 +935,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(kiBullishPivotColor);
iObj.BoxWidth(kiBullishPivotWidth);
iObj.BoxStyle(kiBullishPivotStyle);
//
mTKIBullishPivotObjects.Add(iObj);
}
@@ -800,6 +994,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(kiBearishPivotColor);
iObj.BoxWidth(kiBearishPivotWidth);
iObj.BoxStyle(kiBearishPivotStyle);
//
mTKIBearishPivotObjects.Add(iObj);
}
@@ -853,6 +1053,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(trendBullishPivotColor);
iObj.BoxWidth(trendBullishPivotWidth);
iObj.BoxStyle(trendBullishPivotStyle);
//
mTrendBullishPivotObjects.Add(iObj);
}
@@ -906,6 +1112,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(trendBearishPivotColor);
iObj.BoxWidth(trendBearishPivotWidth);
iObj.BoxStyle(trendBearishPivotStyle);
//
mTrendBearishPivotObjects.Add(iObj);
}
@@ -959,6 +1171,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(trendBullishPivotColor);
iObj.BoxWidth(trendBullishPivotWidth);
iObj.BoxStyle(trendBullishPivotStyle);
//
mTKITRNDBullishPivotObjects.Add(iObj);
}
@@ -1012,6 +1230,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(trendBearishPivotColor);
iObj.BoxWidth(trendBearishPivotWidth);
iObj.BoxStyle(trendBearishPivotStyle);
//
mTKITRNDBearishPivotObjects.Add(iObj);
}
@@ -1066,6 +1290,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameLLPivotColor);
iObj.BoxWidth(sameLLPivotWidth);
iObj.BoxStyle(sameLLPivotStyle);
//
mCycleSameLLPivotObjects.Add(iObj);
}
@@ -1105,6 +1335,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameLLPivotColor);
iObj.BoxWidth(sameLLPivotWidth);
iObj.BoxStyle(sameLLPivotStyle);
//
mCycleSameLLPivotObjects.Add(iObj);
}
@@ -1144,6 +1380,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameLLPivotColor);
iObj.BoxWidth(sameLLPivotWidth);
iObj.BoxStyle(sameLLPivotStyle);
//
mCycleSameLLPivotObjects.Add(iObj);
}
@@ -1183,6 +1425,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameLLPivotColor);
iObj.BoxWidth(sameLLPivotWidth);
iObj.BoxStyle(sameLLPivotStyle);
//
mCycleSameLLPivotObjects.Add(iObj);
}
@@ -1238,6 +1486,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameHHPivotColor);
iObj.BoxWidth(sameHHPivotWidth);
iObj.BoxStyle(sameHHPivotStyle);
//
mCycleSameHHPivotObjects.Add(iObj);
}
@@ -1277,6 +1531,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameHHPivotColor);
iObj.BoxWidth(sameHHPivotWidth);
iObj.BoxStyle(sameHHPivotStyle);
//
mCycleSameHHPivotObjects.Add(iObj);
}
@@ -1316,6 +1576,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameHHPivotColor);
iObj.BoxWidth(sameHHPivotWidth);
iObj.BoxStyle(sameHHPivotStyle);
//
mCycleSameHHPivotObjects.Add(iObj);
}
@@ -1355,6 +1621,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(sameHHPivotColor);
iObj.BoxWidth(sameHHPivotWidth);
iObj.BoxStyle(sameHHPivotStyle);
//
mCycleSameHHPivotObjects.Add(iObj);
}
@@ -1410,6 +1682,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBearishPivotColor);
iObj.BoxWidth(oscsBearishPivotWidth);
iObj.BoxStyle(oscsBearishPivotStyle);
//
mRSIPeakPivotObjects.Add(iObj);
}
@@ -1465,6 +1743,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBullishPivotColor);
iObj.BoxWidth(oscsBullishPivotWidth);
iObj.BoxStyle(oscsBullishPivotStyle);
//
mRSIValePivotObjects.Add(iObj);
}
@@ -1518,6 +1802,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBullishPivotColor);
iObj.BoxWidth(oscsBullishPivotWidth);
iObj.BoxStyle(oscsBullishPivotStyle);
//
mRSICrossedOverOSPivotObjects.Add(iObj);
}
@@ -1571,6 +1861,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBearishPivotColor);
iObj.BoxWidth(oscsBearishPivotWidth);
iObj.BoxStyle(oscsBearishPivotStyle);
//
mRSICrossedUnderOBPivotObjects.Add(iObj);
}
@@ -1626,6 +1922,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBearishPivotColor);
iObj.BoxWidth(oscsBearishPivotWidth);
iObj.BoxStyle(oscsBearishPivotStyle);
//
mCCIPeakPivotObjects.Add(iObj);
}
@@ -1681,6 +1983,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBullishPivotColor);
iObj.BoxWidth(oscsBullishPivotWidth);
iObj.BoxStyle(oscsBullishPivotStyle);
//
mCCIValePivotObjects.Add(iObj);
}
@@ -1734,6 +2042,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBullishPivotColor);
iObj.BoxWidth(oscsBullishPivotWidth);
iObj.BoxStyle(oscsBullishPivotStyle);
//
mCCICrossedOverOSPivotObjects.Add(iObj);
}
@@ -1787,6 +2101,12 @@ class XCXCAEAPOIDrawer : public XCBase
);
if (has)
{
//
iObj.BoxColor(oscsBearishPivotColor);
iObj.BoxWidth(oscsBearishPivotWidth);
iObj.BoxStyle(oscsBearishPivotStyle);
//
mCCICrossedUnderOBPivotObjects.Add(iObj);
}
@@ -1824,7 +2144,7 @@ class XCXCAEAPOIDrawer : public XCBase
CArrayObj mKIBullishPivotObjects;
CArrayObj mKIBearishPivotObjects;
CArrayObj mFVGBullishPivotObjects;
CArrayObj mFVGBearishPivotObjects;
CArrayObj mFVGBearishPivotObjects;
CArrayObj mPeakSWHResPivotObjects;
CArrayObj mValeSWLSupPivotObjects;
CArrayObj mTKIBullishPivotObjects;
+33 -6
View File
@@ -746,8 +746,8 @@ class XCXCAEASignaller : XCBase
detector.detectKIBearishPivot = false;
detector.detectFVGBullishPivot = true;
detector.detectFVGBearishPivot = true;
detector.detectPeakSWHResPivot = false;
detector.detectValeSWLSupPivot = false;
detector.detectPeakSWHResPivot = true;
detector.detectValeSWLSupPivot = true;
detector.detectTKIBullishPivot = false;
detector.detectCycleSameLLPivot = false;
detector.detectCycleSameHHPivot = false;
@@ -771,10 +771,10 @@ class XCXCAEASignaller : XCBase
drawer.drawSWLPivots = false;
drawer.drawPeakPivots = false;
drawer.drawValePivots = false;
drawer.drawRSIPeakPivots = false;
drawer.drawRSIValePivots = false;
drawer.drawCCIPeakPivots = false;
drawer.drawCCIValePivots = false;
drawer.drawRSIPeakPivots = true;
drawer.drawRSIValePivots = true;
drawer.drawCCIPeakPivots = true;
drawer.drawCCIValePivots = true;
drawer.drawKIBullishPivots = false;
drawer.drawKIBearishPivots = false;
drawer.drawFVGBullishPivots = true;
@@ -793,6 +793,33 @@ class XCXCAEASignaller : XCBase
drawer.drawRSICrossedUnderOBPivots = false;
drawer.drawCCICrossedOverOSPivots = false;
drawer.drawCCICrossedUnderOBPivots = false;
//
// Configure Width ...
drawer.peakPivotWidth = 1;
drawer.valePivotWidth = 1;
drawer.fvgBullishPivotWidth = 1;
drawer.fvgBearishPivotWidth = 1;
drawer.oscsBullishPivotWidth = 2;
drawer.oscsBearishPivotWidth = 2;
//
// Configure Colors ...
drawer.peakPivotColor = clrMagenta;
drawer.valePivotColor = clrAqua;
drawer.fvgBullishPivotColor = clrLime;
drawer.fvgBearishPivotColor = clrRed;
drawer.oscsBullishPivotColor = clrYellow;
drawer.oscsBearishPivotColor = clrOrange;
//
// Configure Style ...
drawer.peakPivotStyle = STYLE_SOLID;
drawer.valePivotStyle = STYLE_SOLID;
drawer.fvgBullishPivotStyle = STYLE_DASH;
drawer.fvgBearishPivotStyle = STYLE_DASH;
drawer.oscsBullishPivotStyle = STYLE_SOLID;
drawer.oscsBearishPivotStyle = STYLE_SOLID;
}
/**