Add support for Golden Zone inside XPV indicator and it's Helper ...
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user