Adding Support of XHK to XFIMA ...
This commit is contained in:
@@ -118,6 +118,7 @@ input ENUM_BASE_CORNER barTimeCorner = CORNER_RIGHT_LOWER; // Text Position
|
||||
// Presentation ...
|
||||
input group "Presentation";
|
||||
input bool showPV = true; // Show PV
|
||||
input bool showHK = true; // Show HK
|
||||
input bool showSAR = true; // Show Sar
|
||||
input bool showMAFast = true; // Show MA Fast
|
||||
input bool showMASlow = true; // Show MA Slow
|
||||
@@ -293,6 +294,7 @@ int OnInit()
|
||||
fimaInputs.zigzagUppersMode = zigzagUppersMode;
|
||||
fimaInputs.zigzagLowersMode = zigzagLowersMode;
|
||||
fimaInputs.showPV = showPV;
|
||||
fimaInputs.showHK = showHK;
|
||||
fimaInputs.showSAR = showSAR;
|
||||
fimaInputs.showMAFast = showMAFast;
|
||||
fimaInputs.showMASlow = showMASlow;
|
||||
|
||||
@@ -35,13 +35,13 @@ enum ENUM_XFIMA_BUFFERS
|
||||
{
|
||||
XFIMA_MA_FAST_LINE = 0,
|
||||
XFIMA_MA_FAST_COLOR_LINE = 1,
|
||||
XFIMA_MA_FAST_STATE_LINE = 12,
|
||||
XFIMA_MA_FAST_STATE_LINE = 19,
|
||||
XFIMA_MA_SLOW_LINE = 2,
|
||||
XFIMA_MA_SLOW_COLOR_LINE = 3,
|
||||
XFIMA_MA_SLOW_STATE_LINE = 13,
|
||||
XFIMA_MA_SLOW_STATE_LINE = 20,
|
||||
XFIMA_SAR_LINE = 4,
|
||||
XFIMA_SAR_COLOR_LINE = 5,
|
||||
XFIMA_SAR_STATE_LINE = 14,
|
||||
XFIMA_SAR_STATE_LINE = 21,
|
||||
XFIMA_PEAK_LINE = 6,
|
||||
XFIMA_VALE_LINE = 7,
|
||||
XFIMA_FIBO_UPPER_LINE = 8,
|
||||
@@ -50,25 +50,31 @@ enum ENUM_XFIMA_BUFFERS
|
||||
XFIMA_ZIGZAG_LINE = 11,
|
||||
XFIMA_MA_BAND_UPPER_LINE = 12,
|
||||
XFIMA_MA_BAND_LOWER_LINE = 13,
|
||||
XFIMA_ZIGZAG_HIGHS_LINE = 25,
|
||||
XFIMA_ZIGZAG_HIGHS_TIME_LINE = 26,
|
||||
XFIMA_ZIGZAG_LOWS_LINE = 27,
|
||||
XFIMA_ZIGZAG_LOWS_TIME_LINE = 28,
|
||||
// 14 Ma Fast State
|
||||
// 15 Ma Slow State
|
||||
// 16 Sar State
|
||||
XFIMA_SC_HH_LINE = 17,
|
||||
XFIMA_SC_LL_LINE = 18,
|
||||
XFIMA_MC_HH_LINE = 19,
|
||||
XFIMA_MC_LL_LINE = 20,
|
||||
XFIMA_LC_HH_LINE = 21,
|
||||
XFIMA_LC_LL_LINE = 22,
|
||||
XFIMA_HC_HH_LINE = 23,
|
||||
XFIMA_HC_LL_LINE = 24,
|
||||
// 25 ZigZag Highs
|
||||
// 26 ZigZag Highs Time
|
||||
// 27 ZigZag Lows
|
||||
// 28 ZigZag Lows Time
|
||||
XFIMA_ZIGZAG_HIGHS_LINE = 30,
|
||||
XFIMA_ZIGZAG_HIGHS_TIME_LINE = 31,
|
||||
XFIMA_ZIGZAG_LOWS_LINE = 32,
|
||||
XFIMA_ZIGZAG_LOWS_TIME_LINE = 33,
|
||||
//
|
||||
XFIMA_HK_OPEN_LINE = 14,
|
||||
XFIMA_HK_HIGH_LINE = 15,
|
||||
XFIMA_HK_LOW_LINE = 16,
|
||||
XFIMA_HK_CLOSE_LINE = 17,
|
||||
XFIMA_HK_COLOR_LINE = 18,
|
||||
// 19 Ma Fast State
|
||||
// 20 Ma Slow State
|
||||
// 21 Sar State
|
||||
XFIMA_SC_HH_LINE = 22,
|
||||
XFIMA_SC_LL_LINE = 23,
|
||||
XFIMA_MC_HH_LINE = 24,
|
||||
XFIMA_MC_LL_LINE = 25,
|
||||
XFIMA_LC_HH_LINE = 26,
|
||||
XFIMA_LC_LL_LINE = 27,
|
||||
XFIMA_HC_HH_LINE = 28,
|
||||
XFIMA_HC_LL_LINE = 29,
|
||||
// 30 ZigZag Highs
|
||||
// 31 ZigZag Highs Time
|
||||
// 32 ZigZag Lows
|
||||
// 33 ZigZag Lows Time
|
||||
};
|
||||
|
||||
//
|
||||
@@ -109,6 +115,7 @@ struct XFIMAInputs
|
||||
//
|
||||
// Presentation ...
|
||||
bool showPV; // Show PV
|
||||
bool showHK; // Show HK
|
||||
bool showSAR; // Show Sar
|
||||
bool showMAFast; // Show MA Fast
|
||||
bool showMASlow; // Show MA Slow
|
||||
@@ -172,6 +179,7 @@ struct XFIMAInputs
|
||||
//
|
||||
// Presentation ...
|
||||
showPV = true; // Show PV
|
||||
showHK = true; // Show HK
|
||||
showSAR = true; // Show Sar
|
||||
showMAFast = true; // Show MA Fast
|
||||
showMASlow = true; // Show MA Slow
|
||||
@@ -190,6 +198,7 @@ struct XFIMAInputs
|
||||
{
|
||||
//
|
||||
showPV = false;
|
||||
showHK = false;
|
||||
showSAR = false;
|
||||
showMAFast = false;
|
||||
showMASlow = false;
|
||||
@@ -289,6 +298,11 @@ struct XFIMAConditions
|
||||
double highsTimeBuffer[];
|
||||
double lowsBuffer[];
|
||||
double lowsTimeBuffer[];
|
||||
double hkOpenBuffer[];
|
||||
double hkHighBuffer[];
|
||||
double hkLowBuffer[];
|
||||
double hkCloseBuffer[];
|
||||
double hkColorBuffer[];
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
@@ -352,6 +366,11 @@ struct XFIMAConditions
|
||||
SpecifiedClean(highsTimeBuffer);
|
||||
SpecifiedClean(lowsBuffer);
|
||||
SpecifiedClean(lowsTimeBuffer);
|
||||
SpecifiedClean(hkOpenBuffer);
|
||||
SpecifiedClean(hkHighBuffer);
|
||||
SpecifiedClean(hkLowBuffer);
|
||||
SpecifiedClean(hkCloseBuffer);
|
||||
SpecifiedClean(hkColorBuffer);
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
@@ -389,6 +408,11 @@ struct XFIMAConditions
|
||||
ArraySetAsSeries(highsTimeBuffer, true);
|
||||
ArraySetAsSeries(lowsBuffer, true);
|
||||
ArraySetAsSeries(lowsTimeBuffer, true);
|
||||
ArraySetAsSeries(hkOpenBuffer, true);
|
||||
ArraySetAsSeries(hkHighBuffer, true);
|
||||
ArraySetAsSeries(hkLowBuffer, true);
|
||||
ArraySetAsSeries(hkCloseBuffer, true);
|
||||
ArraySetAsSeries(hkColorBuffer, true);
|
||||
|
||||
//
|
||||
ZeroMemory(this);
|
||||
@@ -481,6 +505,11 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
double highsTimeBuffer[];
|
||||
double lowsBuffer[];
|
||||
double lowsTimeBuffer[];
|
||||
double hkOpenBuffer[];
|
||||
double hkHighBuffer[];
|
||||
double hkLowBuffer[];
|
||||
double hkCloseBuffer[];
|
||||
double hkColorBuffer[];
|
||||
|
||||
//
|
||||
// Constructors ...
|
||||
@@ -550,6 +579,11 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
ArraySetAsSeries(highsTimeBuffer, true);
|
||||
ArraySetAsSeries(lowsBuffer, true);
|
||||
ArraySetAsSeries(lowsTimeBuffer, true);
|
||||
ArraySetAsSeries(hkOpenBuffer, true);
|
||||
ArraySetAsSeries(hkHighBuffer, true);
|
||||
ArraySetAsSeries(hkLowBuffer, true);
|
||||
ArraySetAsSeries(hkCloseBuffer, true);
|
||||
ArraySetAsSeries(hkColorBuffer, true);
|
||||
|
||||
//
|
||||
mInputs = inputs;
|
||||
@@ -587,6 +621,7 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
mInputs.zigzagLowersMode,
|
||||
"", // Presentation ...
|
||||
mInputs.showPV,
|
||||
mInputs.showHK,
|
||||
mInputs.showSAR,
|
||||
mInputs.showMAFast,
|
||||
mInputs.showMASlow,
|
||||
@@ -863,6 +898,41 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
conditions.hLLBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyHKOpen(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkOpenBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyHKHigh(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkHighBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyHKLow(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkLowBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyHKClose(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkCloseBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyHKColor(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkColorBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
|
||||
@@ -3081,6 +3151,269 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// XHK ...
|
||||
|
||||
//
|
||||
// XHK Open ...
|
||||
|
||||
//
|
||||
double GetHKOpen(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(hkOpenBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hkOpenBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyHKOpen(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
hkOpenBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// XHK High ...
|
||||
|
||||
//
|
||||
double GetHKHigh(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(hkHighBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hkHighBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyHKHigh(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
hkHighBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// XHK Low ...
|
||||
|
||||
//
|
||||
double GetHKLow(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(hkLowBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hkLowBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyHKLow(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
hkLowBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// XHK Close ...
|
||||
|
||||
//
|
||||
double GetHKClose(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(hkCloseBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hkCloseBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyHKClose(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
hkCloseBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// XHK Color ...
|
||||
|
||||
//
|
||||
double GetHKColor(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(hkColorBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hkColorBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyHKColor(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
hkColorBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Protected ...
|
||||
protected:
|
||||
@@ -3368,6 +3701,51 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
maxRequiredBars,
|
||||
lowsTimeBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XFIMA_HK_OPEN_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
hkOpenBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XFIMA_HK_HIGH_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
hkHighBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XFIMA_HK_LOW_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
hkLowBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XFIMA_HK_CLOSE_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
hkCloseBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XFIMA_HK_COLOR_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
hkColorBuffer //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -3548,6 +3926,36 @@ class XCXFIMAHelper : public XCBaseHelper
|
||||
lowsTimeBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
hkOpenBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
hkHighBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
hkLowBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
hkCloseBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
hkColorBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ input ENUM_X_PRICE zigzagLowersMode = X_PRICE_LOW; // ZigZag Low D
|
||||
// Presentation ...
|
||||
input group "Presentation";
|
||||
input bool showPV = true; // Show PV
|
||||
input bool showHK = true; // Show HK
|
||||
input bool showSAR = true; // Show Sar
|
||||
input bool showMAFast = true; // Show MA Fast
|
||||
input bool showMASlow = true; // Show MA Slow
|
||||
@@ -133,8 +134,8 @@ input int valeArrowCode = 159; // Vales Arrow Code
|
||||
#property indicator_chart_window
|
||||
|
||||
//
|
||||
#property indicator_buffers 29
|
||||
#property indicator_plots 11
|
||||
#property indicator_buffers 34
|
||||
#property indicator_plots 12
|
||||
|
||||
//
|
||||
// Plot Buffers ...
|
||||
@@ -305,11 +306,40 @@ double maLowerBuffer[];
|
||||
#property indicator_color11 clrMagenta
|
||||
#property indicator_width11 3
|
||||
|
||||
//
|
||||
// XHK ...
|
||||
|
||||
//
|
||||
#define hkOpenBufferIndex 14
|
||||
double hkOpenBuffer[];
|
||||
|
||||
//
|
||||
#define hkHighBufferIndex 15
|
||||
double hkHighBuffer[];
|
||||
|
||||
//
|
||||
#define hkLowBufferIndex 16
|
||||
double hkLowBuffer[];
|
||||
|
||||
//
|
||||
#define hkCloseBufferIndex 17
|
||||
double hkCloseBuffer[];
|
||||
|
||||
//
|
||||
#define hkColorBufferIndex 18
|
||||
double hkColorBuffer[];
|
||||
|
||||
//
|
||||
#define hkBufferPlotIndex 11
|
||||
#property indicator_label12 "XHK Open;XHK High;XHK Low;XHK Close"
|
||||
#property indicator_type12 DRAW_COLOR_CANDLES
|
||||
#property indicator_color12 CLR_NONE, clrAqua, clrMagenta
|
||||
|
||||
//
|
||||
// Data Buffers ...
|
||||
|
||||
//
|
||||
#define mLastBufferIndex 13
|
||||
#define mLastBufferIndex 18
|
||||
|
||||
//
|
||||
// MA ...
|
||||
@@ -963,6 +993,39 @@ void DefineBuffers()
|
||||
PlotIndexSetInteger(maLowerBufferPlotIndex, PLOT_DRAW_BEGIN, 0);
|
||||
PlotIndexSetDouble(maLowerBufferPlotIndex, PLOT_EMPTY_VALUE, 0);
|
||||
|
||||
//
|
||||
// XHK ...
|
||||
|
||||
//
|
||||
// XHK Color ...
|
||||
ArraySetAsSeries(hkColorBuffer, true);
|
||||
SetIndexBuffer(hkColorBufferIndex, hkColorBuffer, INDICATOR_COLOR_INDEX);
|
||||
|
||||
//
|
||||
// Set EMPTY_VALUE on XHK Bar Buffer ...
|
||||
PlotIndexSetDouble(hkBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue);
|
||||
PlotIndexSetInteger(hkBufferPlotIndex, PLOT_SHOW_DATA, false);
|
||||
|
||||
//
|
||||
// Open ...
|
||||
ArraySetAsSeries(hkOpenBuffer, true);
|
||||
SetIndexBuffer(hkOpenBufferIndex, hkOpenBuffer, INDICATOR_DATA);
|
||||
|
||||
//
|
||||
// High ...
|
||||
ArraySetAsSeries(hkHighBuffer, true);
|
||||
SetIndexBuffer(hkHighBufferIndex, hkHighBuffer, INDICATOR_DATA);
|
||||
|
||||
//
|
||||
// Low ...
|
||||
ArraySetAsSeries(hkLowBuffer, true);
|
||||
SetIndexBuffer(hkLowBufferIndex, hkLowBuffer, INDICATOR_DATA);
|
||||
|
||||
//
|
||||
// Close ...
|
||||
ArraySetAsSeries(hkCloseBuffer, true);
|
||||
SetIndexBuffer(hkCloseBufferIndex, hkCloseBuffer, INDICATOR_DATA);
|
||||
|
||||
//
|
||||
// Data Buffers ...
|
||||
|
||||
@@ -1373,6 +1436,19 @@ void CalculateValues(
|
||||
tickVolume //
|
||||
);
|
||||
|
||||
//
|
||||
// XHK ...
|
||||
CalculateHKBar(
|
||||
barIndex,
|
||||
prevCalculated,
|
||||
ratesTotal,
|
||||
open,
|
||||
high,
|
||||
close,
|
||||
low,
|
||||
tickVolume //
|
||||
);
|
||||
|
||||
//
|
||||
// Fast MA ...
|
||||
double iFastMa = maFastBuffer[barIndex];
|
||||
@@ -1920,6 +1996,60 @@ int CalculateZigZag(
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
void CalculateHKBar(
|
||||
int barIndex,
|
||||
const int prevCalculated,
|
||||
const int ratesTotal,
|
||||
const double &open[],
|
||||
const double &high[],
|
||||
const double &close[],
|
||||
const double &low[],
|
||||
const long &tickVolume[] //
|
||||
)
|
||||
{
|
||||
//
|
||||
int lastBarIndex = barIndex + 1;
|
||||
bool isFirstBar =
|
||||
startCalculationForLastBars > 0
|
||||
? barIndex == startCalculationForLastBars
|
||||
: barIndex == firstBarIndex;
|
||||
|
||||
//
|
||||
double lastHKOpen =
|
||||
isFirstBar
|
||||
? emptyValue
|
||||
: hkOpenBuffer[lastBarIndex];
|
||||
double lastHKClose =
|
||||
isFirstBar
|
||||
? emptyValue
|
||||
: hkCloseBuffer[lastBarIndex];
|
||||
|
||||
//
|
||||
double iHKOpenValue = (lastHKOpen + lastHKClose) / 2;
|
||||
double iHKCloseValue = (open[barIndex] + high[barIndex] + close[barIndex] + low[barIndex]) / 4;
|
||||
double iHKHighValue = MathMax(high[barIndex], MathMax(iHKOpenValue, iHKCloseValue));
|
||||
double iHKLowValue = MathMin(low[barIndex], MathMin(iHKOpenValue, iHKCloseValue));
|
||||
|
||||
//
|
||||
// Raw HK Buffers ...
|
||||
hkOpenBuffer[barIndex] = iHKOpenValue;
|
||||
hkHighBuffer[barIndex] = iHKHighValue;
|
||||
hkLowBuffer[barIndex] = iHKLowValue;
|
||||
hkCloseBuffer[barIndex] = iHKCloseValue;
|
||||
|
||||
//
|
||||
// Calculate HK Color ...
|
||||
double iHKColorValue =
|
||||
hkOpenBuffer[barIndex] < hkCloseBuffer[barIndex]
|
||||
? bullishColorIDX
|
||||
: bearishColorIDX;
|
||||
hkColorBuffer[barIndex] =
|
||||
showHK
|
||||
? iHKColorValue
|
||||
: hideColorIDX;
|
||||
}
|
||||
|
||||
//
|
||||
void CalculateCycleRanges(
|
||||
int barIndex,
|
||||
|
||||
@@ -631,6 +631,7 @@ class XCXFIMAStrategy2Signaller : public XCXFIMABaseSignaller
|
||||
ENUM_X_PRICE iPriceType = X_PRICE_NONE;
|
||||
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
|
||||
ENUM_X_PRICE iPriceEdgeType = X_PRICE_NONE;
|
||||
ENUM_X_DIRECTION iHKSwitchedDir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
XPivot pvPivots[];
|
||||
@@ -683,6 +684,41 @@ class XCXFIMAStrategy2Signaller : public XCXFIMABaseSignaller
|
||||
analyserConfig //
|
||||
);
|
||||
|
||||
//
|
||||
// TODO: Testing ...
|
||||
|
||||
//
|
||||
double cHKO = fimaConditions.hkOpenBuffer[0];
|
||||
double cHKH = fimaConditions.hkHighBuffer[0];
|
||||
double cHKL = fimaConditions.hkLowBuffer[0];
|
||||
double cHKC = fimaConditions.hkCloseBuffer[0];
|
||||
|
||||
//
|
||||
double pHKO = fimaConditions.hkOpenBuffer[1];
|
||||
double pHKH = fimaConditions.hkHighBuffer[1];
|
||||
double pHKL = fimaConditions.hkLowBuffer[1];
|
||||
double pHKC = fimaConditions.hkCloseBuffer[1];
|
||||
|
||||
//
|
||||
bool isCHKBullish = cHKO < cHKC;
|
||||
bool isCHKBearish = cHKO > cHKC;
|
||||
|
||||
//
|
||||
bool isPHKBullish = pHKO < pHKC;
|
||||
bool isPHKBearish = pHKO > pHKC;
|
||||
|
||||
//
|
||||
bool isCHKSwitchedToBullish = isCHKBullish && !isPHKBullish;
|
||||
bool isCHKSwitchedToBearish = isCHKBearish && !isPHKBearish;
|
||||
|
||||
//
|
||||
// Add this as Param in Strategy Finders for Using it ...
|
||||
iHKSwitchedDir = isCHKSwitchedToBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: isCHKSwitchedToBullish
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
// Collect Support and Resistance Zones and Validate by them ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user