fix xpv and add support for providing fractals based Supports and Resistances ...

This commit is contained in:
2025-03-13 05:47:12 +03:30
parent 935c8405fa
commit fe7df78f5d
7 changed files with 799 additions and 35 deletions
+36 -1
View File
@@ -229,6 +229,7 @@ struct X121Conditions
double xhkSMLowBuffer[];
double x3maFastBuffer[];
double x3maSlowBuffer[];
double supportsBuffer[];
double downTrendBuffer[];
double vwapPriceBuffer[];
double xhkRawLowBuffer[];
@@ -245,12 +246,15 @@ struct X121Conditions
double atrLowerRawBuffer[];
double donLowUpperBuffer[];
double donLowLowerBuffer[];
double resistancesBuffer[];
double vwapMidStateBuffer[];
double donOpenUpperBuffer[];
double donOpenLowerBuffer[];
double donHighUpperBuffer[];
double donHighLowerBuffer[];
double x3maMidStateBuffer[];
double fractalsUpperBuffer[];
double fractalsLowerBuffer[];
double vwapFastStateBuffer[];
double vwapSlowStateBuffer[];
double donCloseUpperBuffer[];
@@ -665,6 +669,7 @@ struct X121Conditions
Clean(xhkSMLowBuffer);
Clean(x3maFastBuffer);
Clean(x3maSlowBuffer);
Clean(supportsBuffer);
Clean(downTrendBuffer);
Clean(vwapPriceBuffer);
Clean(xhkRawLowBuffer);
@@ -681,19 +686,21 @@ struct X121Conditions
Clean(atrLowerRawBuffer);
Clean(donLowUpperBuffer);
Clean(donLowLowerBuffer);
Clean(resistancesBuffer);
Clean(vwapMidStateBuffer);
Clean(donOpenUpperBuffer);
Clean(donOpenLowerBuffer);
Clean(donHighUpperBuffer);
Clean(donHighLowerBuffer);
Clean(x3maMidStateBuffer);
Clean(fractalsUpperBuffer);
Clean(fractalsLowerBuffer);
Clean(vwapFastStateBuffer);
Clean(vwapSlowStateBuffer);
Clean(donCloseUpperBuffer);
Clean(donCloseLowerBuffer);
Clean(x3maFastStateBuffer);
Clean(x3maSlowStateBuffer);
//
ArraySetAsSeries(maBuffer, true);
ArraySetAsSeries(rsiBuffer, true);
@@ -743,6 +750,7 @@ struct X121Conditions
ArraySetAsSeries(xhkSMLowBuffer, true);
ArraySetAsSeries(x3maFastBuffer, true);
ArraySetAsSeries(x3maSlowBuffer, true);
ArraySetAsSeries(supportsBuffer, true);
ArraySetAsSeries(downTrendBuffer, true);
ArraySetAsSeries(vwapPriceBuffer, true);
ArraySetAsSeries(xhkRawLowBuffer, true);
@@ -759,12 +767,15 @@ struct X121Conditions
ArraySetAsSeries(atrLowerRawBuffer, true);
ArraySetAsSeries(donLowUpperBuffer, true);
ArraySetAsSeries(donLowLowerBuffer, true);
ArraySetAsSeries(resistancesBuffer, true);
ArraySetAsSeries(vwapMidStateBuffer, true);
ArraySetAsSeries(donOpenUpperBuffer, true);
ArraySetAsSeries(donOpenLowerBuffer, true);
ArraySetAsSeries(donHighUpperBuffer, true);
ArraySetAsSeries(donHighLowerBuffer, true);
ArraySetAsSeries(x3maMidStateBuffer, true);
ArraySetAsSeries(fractalsUpperBuffer, true);
ArraySetAsSeries(fractalsLowerBuffer, true);
ArraySetAsSeries(vwapFastStateBuffer, true);
ArraySetAsSeries(vwapSlowStateBuffer, true);
ArraySetAsSeries(donCloseUpperBuffer, true);
@@ -3185,6 +3196,18 @@ class XCX121Helper : public XCBase
conditions.valesBuffer //
);
//
Copy(
xpvConditions.supportsBuffer,
conditions.supportsBuffer //
);
//
Copy(
xpvConditions.resistancesBuffer,
conditions.resistancesBuffer //
);
//
Copy(
xpvConditions.peaksGoldenBuffer,
@@ -3263,6 +3286,18 @@ class XCX121Helper : public XCBase
conditions.hLLBuffer //
);
//
Copy(
xpvConditions.fractalsUpperBuffer,
conditions.fractalsUpperBuffer //
);
//
Copy(
xpvConditions.fractalsLowerBuffer,
conditions.fractalsLowerBuffer //
);
//
// Conditions ...
+367 -18
View File
@@ -37,16 +37,20 @@ enum ENUM_X121_XPV_BUFFERS
X121_XPV_SAR_LINE = 2,
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,
X121_XPV_SUPPORT_LINE = 5,
X121_XPV_RESISTANCE_LINE = 6,
X121_XPV_C_HH_LINE = 7,
X121_XPV_C_LL_LINE = 8,
X121_XPV_S_HH_LINE = 9,
X121_XPV_S_LL_LINE = 10,
X121_XPV_M_HH_LINE = 11,
X121_XPV_M_LL_LINE = 12,
X121_XPV_L_HH_LINE = 13,
X121_XPV_L_LL_LINE = 14,
X121_XPV_H_HH_LINE = 15,
X121_XPV_H_LL_LINE = 16,
X121_XPV_FRACTALS_UPPER_LINE = 17,
X121_XPV_FRACTALS_LOWER_LINE = 18,
};
//
@@ -91,15 +95,19 @@ struct X121XPVInputs
int startCalculationForLastBars; // Calculate Last n Bars
//
int sarArrowCode; // Parabolic Sar Arrow Code
int peaksArrowCode; // Peaks Arrow Code
int valesArrowCode; // Vales Arrow Code
int sarArrowCode; // Parabolic Sar Arrow Code
int peaksArrowCode; // Peaks Arrow Code
int valesArrowCode; // Vales Arrow Code
int supportsArrowCode; // Supports Arrow Code
int resistancesArrowCode; // Resistances 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
bool showSupports; // Show Supports
bool showResistances; // Show Resistances
//
// Constructor(s) ...
@@ -153,12 +161,16 @@ struct X121XPVInputs
sarArrowCode = 0;
peaksArrowCode = 0;
valesArrowCode = 0;
supportsArrowCode = 0;
resistancesArrowCode = 0;
//
showSar = false;
showPeaks = false;
showVales = false;
showGoldenZones = true;
showGoldenZones = false;
showSupports = false;
showResistances = false;
//
ZeroMemory(this);
@@ -205,12 +217,16 @@ struct X121XPVInputs
sarArrowCode = 159;
peaksArrowCode = 159;
valesArrowCode = 159;
supportsArrowCode = 159;
resistancesArrowCode = 159;
//
showSar = true;
showPeaks = true;
showVales = true;
showGoldenZones = true;
showSupports = true;
showResistances = true;
}
//
@@ -271,6 +287,8 @@ struct X121XPVConditions
double valesBuffer[];
double peaksGoldenBuffer[];
double valesGoldenBuffer[];
double supportsBuffer[];
double resistancesBuffer[];
double sarBuffer[];
double cHHBuffer[];
double cLLBuffer[];
@@ -282,6 +300,8 @@ struct X121XPVConditions
double lLLBuffer[];
double hHHBuffer[];
double hLLBuffer[];
double fractalsUpperBuffer[];
double fractalsLowerBuffer[];
//
// Conditions ...
@@ -343,6 +363,8 @@ struct X121XPVConditions
Clean(valesBuffer);
Clean(peaksGoldenBuffer);
Clean(valesGoldenBuffer);
Clean(supportsBuffer);
Clean(resistancesBuffer);
Clean(sarBuffer);
Clean(cHHBuffer);
Clean(cLLBuffer);
@@ -354,6 +376,8 @@ struct X121XPVConditions
Clean(lLLBuffer);
Clean(hHHBuffer);
Clean(hLLBuffer);
Clean(fractalsUpperBuffer);
Clean(fractalsLowerBuffer);
//
// Clean(bullishTrendBuffer);
@@ -364,6 +388,8 @@ struct X121XPVConditions
ArraySetAsSeries(valesBuffer, true);
ArraySetAsSeries(peaksGoldenBuffer, true);
ArraySetAsSeries(valesGoldenBuffer, true);
ArraySetAsSeries(supportsBuffer, true);
ArraySetAsSeries(resistancesBuffer, true);
ArraySetAsSeries(sarBuffer, true);
ArraySetAsSeries(cHHBuffer, true);
ArraySetAsSeries(cLLBuffer, true);
@@ -375,6 +401,8 @@ struct X121XPVConditions
ArraySetAsSeries(lLLBuffer, true);
ArraySetAsSeries(hHHBuffer, true);
ArraySetAsSeries(hLLBuffer, true);
ArraySetAsSeries(fractalsUpperBuffer, true);
ArraySetAsSeries(fractalsLowerBuffer, true);
//
// Conditions ...
@@ -393,6 +421,7 @@ struct X121XPVConditions
isNewPeakUnderLast = false;
isRejectedPrevPeak = false;
isBreakedUpPrevPeak = false;
//
isNewVale = false;
isNewValeOverLast = false;
@@ -557,6 +586,8 @@ class XCX121XPVHelper : public XCBaseHelper
Clean(valesBuffer);
Clean(peaksGoldenBuffer);
Clean(valesGoldenBuffer);
Clean(supportsBuffer);
Clean(resistancesBuffer);
Clean(sarBuffer);
Clean(cHHBuffer);
Clean(cLLBuffer);
@@ -568,6 +599,8 @@ class XCX121XPVHelper : public XCBaseHelper
Clean(lLLBuffer);
Clean(hHHBuffer);
Clean(hLLBuffer);
Clean(fractalsUpperBuffer);
Clean(fractalsLowerBuffer);
}
//
@@ -597,6 +630,8 @@ class XCX121XPVHelper : public XCBaseHelper
ArraySetAsSeries(valesBuffer, true);
ArraySetAsSeries(peaksGoldenBuffer, true);
ArraySetAsSeries(valesGoldenBuffer, true);
ArraySetAsSeries(supportsBuffer, true);
ArraySetAsSeries(resistancesBuffer, true);
ArraySetAsSeries(sarBuffer, true);
ArraySetAsSeries(cHHBuffer, true);
ArraySetAsSeries(cLLBuffer, true);
@@ -608,6 +643,8 @@ class XCX121XPVHelper : public XCBaseHelper
ArraySetAsSeries(lLLBuffer, true);
ArraySetAsSeries(hHHBuffer, true);
ArraySetAsSeries(hLLBuffer, true);
ArraySetAsSeries(fractalsUpperBuffer, true);
ArraySetAsSeries(fractalsLowerBuffer, true);
//
mInputs = inputs;
@@ -661,11 +698,15 @@ class XCX121XPVHelper : public XCBaseHelper
mInputs.sarArrowCode,
mInputs.peaksArrowCode,
mInputs.valesArrowCode,
mInputs.supportsArrowCode,
mInputs.resistancesArrowCode,
//
mInputs.showSar,
mInputs.showPeaks,
mInputs.showVales,
mInputs.showGoldenZones
mInputs.showGoldenZones,
mInputs.showSupports,
mInputs.showResistances
//
);
result = mHandler != INVALID_HANDLE;
@@ -863,6 +904,110 @@ class XCX121XPVHelper : public XCBaseHelper
);
}
//
// SUPPORTS ...
//
double GetSupport(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(supportsBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return supportsBuffer[barIndex];
}
//
int CopySupport(
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,
supportsBuffer,
buffer,
forceClean
//
);
}
//
// RESISTANCES ...
//
double GetResistance(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(resistancesBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return resistancesBuffer[barIndex];
}
//
int CopyResistance(
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,
resistancesBuffer,
buffer,
forceClean
//
);
}
//
// GOLDEN PEAKS ...
@@ -1734,6 +1879,110 @@ class XCX121XPVHelper : public XCBaseHelper
);
}
//
// FRACTALS Upper ...
//
double GetFractalsUpper(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(fractalsUpperBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return fractalsUpperBuffer[barIndex];
}
//
int CopyFractalsUpper(
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,
fractalsUpperBuffer,
buffer,
forceClean
//
);
}
//
// FRACTALS Lower ...
//
double GetFractalsLower(
int barIndex // Bar Index
)
{
//
if (barIndex < 0)
{
barIndex = 0;
}
//
Calculate();
//
int count = ArraySize(fractalsLowerBuffer);
if (barIndex >= count)
{
barIndex = count - 1;
}
//
return fractalsLowerBuffer[barIndex];
}
//
int CopyFractalsLower(
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,
fractalsLowerBuffer,
buffer,
forceClean
//
);
}
//
// Tools Function ...
@@ -2053,6 +2302,20 @@ class XCX121XPVHelper : public XCBaseHelper
conditions.valesBuffer //
);
//
CopySupport(
zIndex,
loopback,
conditions.supportsBuffer //
);
//
CopyResistance(
zIndex,
loopback,
conditions.resistancesBuffer //
);
//
CopyPeakGoldenZone(
zIndex,
@@ -2137,6 +2400,20 @@ class XCX121XPVHelper : public XCBaseHelper
conditions.hLLBuffer //
);
//
CopyFractalsUpper(
zIndex,
loopback,
conditions.fractalsUpperBuffer //
);
//
CopyFractalsLower(
zIndex,
loopback,
conditions.fractalsLowerBuffer //
);
//
// Conditions ...
@@ -2240,6 +2517,8 @@ class XCX121XPVHelper : public XCBaseHelper
// Buffers ...
double peaksBuffer[];
double valesBuffer[];
double supportsBuffer[];
double resistancesBuffer[];
double peaksGoldenBuffer[];
double valesGoldenBuffer[];
double sarBuffer[];
@@ -2253,6 +2532,8 @@ class XCX121XPVHelper : public XCBaseHelper
double lLLBuffer[];
double hHHBuffer[];
double hLLBuffer[];
double fractalsUpperBuffer[];
double fractalsLowerBuffer[];
//
void Calculate(
@@ -2298,6 +2579,28 @@ class XCX121XPVHelper : public XCBaseHelper
//
);
//
// SUPPORTS ...
CopyBuffer(
mHandler,
X121_XPV_SUPPORT_LINE,
0,
maxRequiredBars,
supportsBuffer
//
);
//
// RESISTANCES ...
CopyBuffer(
mHandler,
X121_XPV_RESISTANCE_LINE,
0,
maxRequiredBars,
resistancesBuffer
//
);
//
// GOLDEN PEAKS ...
CopyBuffer(
@@ -2444,6 +2747,28 @@ class XCX121XPVHelper : public XCBaseHelper
hLLBuffer
//
);
//
// FRACTALS Upper ...
CopyBuffer(
mHandler,
X121_XPV_FRACTALS_UPPER_LINE,
0,
maxRequiredBars,
fractalsUpperBuffer
//
);
//
// FRACTALS Lower ...
CopyBuffer(
mHandler,
X121_XPV_FRACTALS_LOWER_LINE,
0,
maxRequiredBars,
fractalsLowerBuffer
//
);
}
//
@@ -2475,6 +2800,18 @@ class XCX121XPVHelper : public XCBaseHelper
maxAllowed //
);
//
CleanupArray(
supportsBuffer,
maxAllowed //
);
//
CleanupArray(
resistancesBuffer,
maxAllowed //
);
//
CleanupArray(
sarBuffer,
@@ -2541,6 +2878,18 @@ class XCX121XPVHelper : public XCBaseHelper
maxAllowed //
);
//
CleanupArray(
fractalsUpperBuffer,
maxAllowed //
);
//
CleanupArray(
fractalsLowerBuffer,
maxAllowed //
);
//
}