Add support for Golden Zone inside XPV indicator and it's Helper ...

This commit is contained in:
2025-03-08 22:00:36 +03:30
parent e0e081628a
commit 3b7ce3816a
9 changed files with 682 additions and 132 deletions
+12
View File
@@ -2403,6 +2403,18 @@ class XCX121Helper : public XCBase
// Deconstructor ...
~XCX121Helper()
{
//
mInputs.Clean();
xpvInputs.Clean();
xhkInputs.Clean();
xatrInputs.Clean();
xdonInputs.Clean();
xstrInputs.Clean();
xcheInputs.Clean();
x3maInputs.Clean();
xvwapInputs.Clean();
xtrendInputs.Clean();
//
delete xpvHelper;
delete xhkHelper;
+192 -18
View File
@@ -35,16 +35,18 @@ enum ENUM_X121_XPV_BUFFERS
X121_XPV_PEAK_LINE = 0,
X121_XPV_VALE_LINE = 1,
X121_XPV_SAR_LINE = 2,
X121_XPV_C_HH_LINE = 3,
X121_XPV_C_LL_LINE = 4,
X121_XPV_S_HH_LINE = 5,
X121_XPV_S_LL_LINE = 6,
X121_XPV_M_HH_LINE = 7,
X121_XPV_M_LL_LINE = 8,
X121_XPV_L_HH_LINE = 9,
X121_XPV_L_LL_LINE = 10,
X121_XPV_H_HH_LINE = 11,
X121_XPV_H_LL_LINE = 12,
X121_XPV_PEAK_GOLDEN_ZONE_LINE = 3,
X121_XPV_VALE_GOLDEN_ZONE_LINE = 4,
X121_XPV_C_HH_LINE = 5,
X121_XPV_C_LL_LINE = 6,
X121_XPV_S_HH_LINE = 7,
X121_XPV_S_LL_LINE = 8,
X121_XPV_M_HH_LINE = 9,
X121_XPV_M_LL_LINE = 10,
X121_XPV_L_HH_LINE = 11,
X121_XPV_L_LL_LINE = 12,
X121_XPV_H_HH_LINE = 13,
X121_XPV_H_LL_LINE = 14,
};
//
@@ -76,8 +78,9 @@ struct X121XPVInputs
//
// Boundary Detection ...
ENUM_SERIESMODE hhMode; // Highest High Calculation Method
ENUM_SERIESMODE llMode; // Lowest Low Calculation Method
ENUM_SERIESMODE hhMode; // Highest High Calculation Method
ENUM_SERIESMODE llMode; // Lowest Low Calculation Method
ENUM_X_FIBO_LEVELS goldenZoneLevel; // Golden Zone Detection
//
// Parabolic Sar Detection ...
@@ -93,9 +96,10 @@ struct X121XPVInputs
int valesArrowCode; // Vales Arrow Code
//
bool showSar; // Show Parabolic Sar
bool showPeaks; // Show Peaks
bool showVales; // Show Vales
bool showSar; // Show Parabolic Sar
bool showPeaks; // Show Peaks
bool showVales; // Show Vales
bool showGoldenZones; // Show Golden Zones
//
// Constructor(s) ...
@@ -136,6 +140,7 @@ struct X121XPVInputs
// Boundary Detection ...
hhMode = MODE_HIGH;
llMode = MODE_LOW;
goldenZoneLevel = X_FIBO_LEVEL_382;
//
sarStep = 0;
@@ -153,6 +158,7 @@ struct X121XPVInputs
showSar = false;
showPeaks = false;
showVales = false;
showGoldenZones = true;
//
ZeroMemory(this);
@@ -186,6 +192,7 @@ struct X121XPVInputs
// Boundary Detection ...
hhMode = MODE_HIGH;
llMode = MODE_LOW;
goldenZoneLevel = X_FIBO_LEVEL_382;
//
sarStep = 0.02;
@@ -203,6 +210,7 @@ struct X121XPVInputs
showSar = true;
showPeaks = true;
showVales = true;
showGoldenZones = true;
}
//
@@ -261,6 +269,8 @@ struct X121XPVConditions
// Buffers ...
double peaksBuffer[];
double valesBuffer[];
double peaksGoldenBuffer[];
double valesGoldenBuffer[];
double sarBuffer[];
double cHHBuffer[];
double cLLBuffer[];
@@ -331,6 +341,8 @@ struct X121XPVConditions
//
Clean(peaksBuffer);
Clean(valesBuffer);
Clean(peaksGoldenBuffer);
Clean(valesGoldenBuffer);
Clean(sarBuffer);
Clean(cHHBuffer);
Clean(cLLBuffer);
@@ -350,6 +362,8 @@ struct X121XPVConditions
//
ArraySetAsSeries(peaksBuffer, true);
ArraySetAsSeries(valesBuffer, true);
ArraySetAsSeries(peaksGoldenBuffer, true);
ArraySetAsSeries(valesGoldenBuffer, true);
ArraySetAsSeries(sarBuffer, true);
ArraySetAsSeries(cHHBuffer, true);
ArraySetAsSeries(cLLBuffer, true);
@@ -541,6 +555,8 @@ class XCX121XPVHelper : public XCBaseHelper
//
Clean(peaksBuffer);
Clean(valesBuffer);
Clean(peaksGoldenBuffer);
Clean(valesGoldenBuffer);
Clean(sarBuffer);
Clean(cHHBuffer);
Clean(cLLBuffer);
@@ -579,6 +595,8 @@ class XCX121XPVHelper : public XCBaseHelper
//
ArraySetAsSeries(peaksBuffer, true);
ArraySetAsSeries(valesBuffer, true);
ArraySetAsSeries(peaksGoldenBuffer, true);
ArraySetAsSeries(valesGoldenBuffer, true);
ArraySetAsSeries(sarBuffer, true);
ArraySetAsSeries(cHHBuffer, true);
ArraySetAsSeries(cLLBuffer, true);
@@ -629,6 +647,7 @@ class XCX121XPVHelper : public XCBaseHelper
"",
mInputs.hhMode,
mInputs.llMode,
mInputs.goldenZoneLevel,
//
// SAr Detection ...
"",
@@ -645,7 +664,8 @@ class XCX121XPVHelper : public XCBaseHelper
//
mInputs.showSar,
mInputs.showPeaks,
mInputs.showVales
mInputs.showVales,
mInputs.showGoldenZones
//
);
result = mHandler != INVALID_HANDLE;
@@ -843,6 +863,110 @@ class XCX121XPVHelper : public XCBaseHelper
);
}
//
// GOLDEN PEAKS ...
//
double GetPeakGoldenZone(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(peaksGoldenBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return peaksGoldenBuffer[barIndex];
}
//
int CopyPeakGoldenZone(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
bool forceClean = true // Force To Clean buffer
)
{
//
// Update Calculations ...
Calculate();
//
// Copy Items ...
return Copy(
start,
count,
peaksGoldenBuffer,
buffer,
forceClean
//
);
}
//
// GOLDEN VALES ...
//
double GetValeGoldenZone(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(valesGoldenBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return valesGoldenBuffer[barIndex];
}
//
int CopyValeGoldenZone(
int start, // Start
int count, // Number of Items for read
double &buffer[], // Dest Buffer
bool forceClean = true // Force To Clean buffer
)
{
//
// Update Calculations ...
Calculate();
//
// Copy Items ...
return Copy(
start,
count,
valesGoldenBuffer,
buffer,
forceClean
//
);
}
//
//
//
@@ -1929,6 +2053,20 @@ class XCX121XPVHelper : public XCBaseHelper
conditions.valesBuffer //
);
//
CopyPeakGoldenZone(
zIndex,
loopback,
conditions.peaksGoldenBuffer //
);
//
CopyValeGoldenZone(
zIndex,
loopback,
conditions.valesGoldenBuffer //
);
//
CopyCHH(
zIndex,
@@ -2075,14 +2213,14 @@ class XCX121XPVHelper : public XCBaseHelper
conditions.isNewValeUnderLast = isNewValeUnderLast;
conditions.isRejectedPrevVale = isRejectedPrevVale;
conditions.isBreakedDownPrevVale = isBreakedDownPrevVale;
//
Cleanup();
//
zBar.Clean();
cBar.Clean();
pBar.Clean();
pBar.Clean();
//
return result;
@@ -2102,6 +2240,8 @@ class XCX121XPVHelper : public XCBaseHelper
// Buffers ...
double peaksBuffer[];
double valesBuffer[];
double peaksGoldenBuffer[];
double valesGoldenBuffer[];
double sarBuffer[];
double cHHBuffer[];
double cLLBuffer[];
@@ -2158,6 +2298,28 @@ class XCX121XPVHelper : public XCBaseHelper
//
);
//
// GOLDEN PEAKS ...
CopyBuffer(
mHandler,
X121_XPV_PEAK_GOLDEN_ZONE_LINE,
0,
maxRequiredBars,
peaksGoldenBuffer
//
);
//
// GOLDEN VALES ...
CopyBuffer(
mHandler,
X121_XPV_VALE_GOLDEN_ZONE_LINE,
0,
maxRequiredBars,
valesGoldenBuffer
//
);
//
// CURRENT ...
@@ -2301,6 +2463,18 @@ class XCX121XPVHelper : public XCBaseHelper
maxAllowed //
);
//
CleanupArray(
peaksGoldenBuffer,
maxAllowed //
);
//
CleanupArray(
valesGoldenBuffer,
maxAllowed //
);
//
CleanupArray(
sarBuffer,