Prepare XFIMA BackTester for Test ...
This commit is contained in:
@@ -106,6 +106,9 @@ input int zigzagDeviation = 5; // ZigZag Devia
|
|||||||
input int zigzagBackStep = 3; // ZigZag Back Step
|
input int zigzagBackStep = 3; // ZigZag Back Step
|
||||||
input ENUM_X_PRICE zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
input ENUM_X_PRICE zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
||||||
input ENUM_X_PRICE zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
input ENUM_X_PRICE zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
||||||
|
input bool hkIgnoreShadows = true; // HK Remove noises
|
||||||
|
input int hkSmoothingLength = 21; // HK Smoothing Length
|
||||||
|
input ENUM_X_MA_METHOD hkSmoothingMode = X_MA_MODE_EMA; // HK Smoothing Method
|
||||||
|
|
||||||
//
|
//
|
||||||
input group "Bar Timer";
|
input group "Bar Timer";
|
||||||
@@ -120,6 +123,7 @@ input group "Presentation";
|
|||||||
input bool showPV = true; // Show PV
|
input bool showPV = true; // Show PV
|
||||||
input bool showHK = true; // Show HK
|
input bool showHK = true; // Show HK
|
||||||
input bool showSAR = true; // Show Sar
|
input bool showSAR = true; // Show Sar
|
||||||
|
input bool showBars = true; // Show Bars
|
||||||
input bool showMAFast = true; // Show MA Fast
|
input bool showMAFast = true; // Show MA Fast
|
||||||
input bool showMASlow = true; // Show MA Slow
|
input bool showMASlow = true; // Show MA Slow
|
||||||
input bool showMABand = true; // Show MA Band
|
input bool showMABand = true; // Show MA Band
|
||||||
@@ -163,10 +167,22 @@ XBarTracker eaBarTracker; // EA Bar Traker ...
|
|||||||
//
|
//
|
||||||
// Registered Handlers ...
|
// Registered Handlers ...
|
||||||
int eaCTHandler = INVALID_HANDLE; // Candle Timer Handler ...
|
int eaCTHandler = INVALID_HANDLE; // Candle Timer Handler ...
|
||||||
|
int eaCCHandler = INVALID_HANDLE; // Candle Cleaner Handler ...
|
||||||
|
|
||||||
//
|
//
|
||||||
bool eaIsNewBar; // Check New Bar ...
|
bool eaIsNewBar; // Check New Bar ...
|
||||||
|
|
||||||
|
//
|
||||||
|
ENUM_CHART_MODE eaBarMode = CHART_CANDLES;
|
||||||
|
|
||||||
|
//
|
||||||
|
color eaBarUpColor = clrLime;
|
||||||
|
color eaBarDownColor = clrRed;
|
||||||
|
color eaBarLineColor = clrLime;
|
||||||
|
color eaBarBearishColor = clrRed;
|
||||||
|
color eaBarBullishColor = clrLime;
|
||||||
|
color eaBarVolumesColor = clrGreen;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Define Indicators Here ...
|
// Define Indicators Here ...
|
||||||
|
|
||||||
@@ -293,6 +309,9 @@ int OnInit()
|
|||||||
fimaInputs.zigzagBackStep = zigzagBackStep;
|
fimaInputs.zigzagBackStep = zigzagBackStep;
|
||||||
fimaInputs.zigzagUppersMode = zigzagUppersMode;
|
fimaInputs.zigzagUppersMode = zigzagUppersMode;
|
||||||
fimaInputs.zigzagLowersMode = zigzagLowersMode;
|
fimaInputs.zigzagLowersMode = zigzagLowersMode;
|
||||||
|
fimaInputs.hkIgnoreShadows = hkIgnoreShadows;
|
||||||
|
fimaInputs.hkSmoothingLength = hkSmoothingLength;
|
||||||
|
fimaInputs.hkSmoothingMode = hkSmoothingMode;
|
||||||
fimaInputs.showPV = showPV;
|
fimaInputs.showPV = showPV;
|
||||||
fimaInputs.showHK = showHK;
|
fimaInputs.showHK = showHK;
|
||||||
fimaInputs.showSAR = showSAR;
|
fimaInputs.showSAR = showSAR;
|
||||||
@@ -358,6 +377,38 @@ int OnInit()
|
|||||||
return INIT_FAILED;
|
return INIT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize Candle Cleaner Handler ...
|
||||||
|
eaCCHandler = iCustom(
|
||||||
|
_Symbol,
|
||||||
|
_Period,
|
||||||
|
"x-saherelm.x121.xcc",
|
||||||
|
//
|
||||||
|
// Inputs ...
|
||||||
|
//
|
||||||
|
// Chart Style ...
|
||||||
|
"",
|
||||||
|
eaBarMode, // Mode
|
||||||
|
eaBarUpColor, // Up Color
|
||||||
|
eaBarDownColor, // Down Color
|
||||||
|
eaBarLineColor, // Line mode and Doji candlestick Color
|
||||||
|
eaBarBullishColor, // Bearish Color
|
||||||
|
eaBarBearishColor, // Bullish Color
|
||||||
|
eaBarVolumesColor, // Volumes Color
|
||||||
|
//
|
||||||
|
// Presentation ...
|
||||||
|
"",
|
||||||
|
showBars // Show Candles
|
||||||
|
//
|
||||||
|
);
|
||||||
|
isInited = eaCCHandler != INVALID_HANDLE;
|
||||||
|
if (!isInited)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Print(ShortName, ": Initialization Failed ...");
|
||||||
|
return INIT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize Bar Tracker ...
|
// Initialize Bar Tracker ...
|
||||||
isInited = eaBarTracker.Init(
|
isInited = eaBarTracker.Init(
|
||||||
|
|||||||
@@ -60,6 +60,10 @@ enum ENUM_XFIMA_BUFFERS
|
|||||||
XFIMA_HK_LOW_LINE = 16,
|
XFIMA_HK_LOW_LINE = 16,
|
||||||
XFIMA_HK_CLOSE_LINE = 17,
|
XFIMA_HK_CLOSE_LINE = 17,
|
||||||
XFIMA_HK_COLOR_LINE = 18,
|
XFIMA_HK_COLOR_LINE = 18,
|
||||||
|
XFIMA_HK_RAW_OPEN_LINE = 34,
|
||||||
|
XFIMA_HK_RAW_HIGH_LINE = 35,
|
||||||
|
XFIMA_HK_RAW_LOW_LINE = 36,
|
||||||
|
XFIMA_HK_RAW_CLOSE_LINE = 37,
|
||||||
// 19 Ma Fast State
|
// 19 Ma Fast State
|
||||||
// 20 Ma Slow State
|
// 20 Ma Slow State
|
||||||
// 21 Sar State
|
// 21 Sar State
|
||||||
@@ -75,6 +79,10 @@ enum ENUM_XFIMA_BUFFERS
|
|||||||
// 31 ZigZag Highs Time
|
// 31 ZigZag Highs Time
|
||||||
// 32 ZigZag Lows
|
// 32 ZigZag Lows
|
||||||
// 33 ZigZag Lows Time
|
// 33 ZigZag Lows Time
|
||||||
|
// 34 HK Raw Open
|
||||||
|
// 35 HK Raw High
|
||||||
|
// 36 HK Raw Low
|
||||||
|
// 37 HK Raw Close
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -111,6 +119,9 @@ struct XFIMAInputs
|
|||||||
int zigzagBackStep; // ZigZag Back Step
|
int zigzagBackStep; // ZigZag Back Step
|
||||||
ENUM_X_PRICE zigzagUppersMode; // ZigZag High Detect Mode
|
ENUM_X_PRICE zigzagUppersMode; // ZigZag High Detect Mode
|
||||||
ENUM_X_PRICE zigzagLowersMode; // ZigZag Low Detect Mode
|
ENUM_X_PRICE zigzagLowersMode; // ZigZag Low Detect Mode
|
||||||
|
bool hkIgnoreShadows; // HK Remove noises
|
||||||
|
int hkSmoothingLength; // HK Smoothing Length
|
||||||
|
ENUM_X_MA_METHOD hkSmoothingMode; // HK Smoothing Method
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
@@ -175,6 +186,9 @@ struct XFIMAInputs
|
|||||||
zigzagBackStep = 3; // ZigZag Back Step
|
zigzagBackStep = 3; // ZigZag Back Step
|
||||||
zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
||||||
zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
||||||
|
hkIgnoreShadows = true; // HK Remove noises
|
||||||
|
hkSmoothingLength = 21; // HK Smoothing Length
|
||||||
|
hkSmoothingMode = X_MA_MODE_EMA; // HK Smoothing Method
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
@@ -546,6 +560,9 @@ class XCXFIMAHelper : public XCBaseHelper
|
|||||||
mInputs.zigzagBackStep,
|
mInputs.zigzagBackStep,
|
||||||
mInputs.zigzagUppersMode,
|
mInputs.zigzagUppersMode,
|
||||||
mInputs.zigzagLowersMode,
|
mInputs.zigzagLowersMode,
|
||||||
|
mInputs.hkIgnoreShadows,
|
||||||
|
mInputs.hkSmoothingLength,
|
||||||
|
mInputs.hkSmoothingMode,
|
||||||
"", // Presentation ...
|
"", // Presentation ...
|
||||||
mInputs.showPV,
|
mInputs.showPV,
|
||||||
mInputs.showHK,
|
mInputs.showHK,
|
||||||
|
|||||||
@@ -89,6 +89,9 @@ input int zigzagDeviation = 5; // ZigZag Devia
|
|||||||
input int zigzagBackStep = 3; // ZigZag Back Step
|
input int zigzagBackStep = 3; // ZigZag Back Step
|
||||||
input ENUM_X_PRICE zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
input ENUM_X_PRICE zigzagUppersMode = X_PRICE_HIGH; // ZigZag High Detect Mode
|
||||||
input ENUM_X_PRICE zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
input ENUM_X_PRICE zigzagLowersMode = X_PRICE_LOW; // ZigZag Low Detect Mode
|
||||||
|
input bool hkIgnoreShadows = true; // HK Remove noises
|
||||||
|
input int hkSmoothingLength = 21; // HK Smoothing Length
|
||||||
|
input ENUM_X_MA_METHOD hkSmoothingMode = X_MA_MODE_EMA; // HK Smoothing Method
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
@@ -134,7 +137,7 @@ input int valeArrowCode = 159; // Vales Arrow Code
|
|||||||
#property indicator_chart_window
|
#property indicator_chart_window
|
||||||
|
|
||||||
//
|
//
|
||||||
#property indicator_buffers 34
|
#property indicator_buffers 38
|
||||||
#property indicator_plots 12
|
#property indicator_plots 12
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -333,7 +336,7 @@ double hkColorBuffer[];
|
|||||||
#define hkBufferPlotIndex 11
|
#define hkBufferPlotIndex 11
|
||||||
#property indicator_label12 "XHK Open;XHK High;XHK Low;XHK Close"
|
#property indicator_label12 "XHK Open;XHK High;XHK Low;XHK Close"
|
||||||
#property indicator_type12 DRAW_COLOR_CANDLES
|
#property indicator_type12 DRAW_COLOR_CANDLES
|
||||||
#property indicator_color12 CLR_NONE, clrAqua, clrMagenta
|
#property indicator_color12 CLR_NONE, clrAqua, clrMagenta, clrGray
|
||||||
|
|
||||||
//
|
//
|
||||||
// Data Buffers ...
|
// Data Buffers ...
|
||||||
@@ -425,6 +428,25 @@ double lowsBuffer[];
|
|||||||
#define lowsTimeBufferIndex mLastBufferIndex + 15
|
#define lowsTimeBufferIndex mLastBufferIndex + 15
|
||||||
double lowsTimeBuffer[];
|
double lowsTimeBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
// XHK Data ...
|
||||||
|
|
||||||
|
//
|
||||||
|
#define hkRawHighBufferIndex mLastBufferIndex + 16
|
||||||
|
double hkRawHighBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
#define hkRawOpenBufferIndex mLastBufferIndex + 17
|
||||||
|
double hkRawOpenBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
#define hkRawLowBufferIndex mLastBufferIndex + 18
|
||||||
|
double hkRawLowBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
#define hkRawCloseBufferIndex mLastBufferIndex + 19
|
||||||
|
double hkRawCloseBuffer[];
|
||||||
|
|
||||||
//
|
//
|
||||||
// Variables, Properties and etc ...
|
// Variables, Properties and etc ...
|
||||||
|
|
||||||
@@ -1086,6 +1108,25 @@ void DefineBuffers()
|
|||||||
SetIndexBuffer(lowsBufferIndex, lowsBuffer, INDICATOR_CALCULATIONS);
|
SetIndexBuffer(lowsBufferIndex, lowsBuffer, INDICATOR_CALCULATIONS);
|
||||||
SetIndexBuffer(lowsTimeBufferIndex, lowsTimeBuffer, INDICATOR_CALCULATIONS);
|
SetIndexBuffer(lowsTimeBufferIndex, lowsTimeBuffer, INDICATOR_CALCULATIONS);
|
||||||
|
|
||||||
|
//
|
||||||
|
// XHK Data ...
|
||||||
|
|
||||||
|
//
|
||||||
|
ArraySetAsSeries(hkRawHighBuffer, true);
|
||||||
|
SetIndexBuffer(hkRawHighBufferIndex, hkRawHighBuffer, INDICATOR_DATA);
|
||||||
|
|
||||||
|
//
|
||||||
|
ArraySetAsSeries(hkRawOpenBuffer, true);
|
||||||
|
SetIndexBuffer(hkRawOpenBufferIndex, hkRawOpenBuffer, INDICATOR_DATA);
|
||||||
|
|
||||||
|
//
|
||||||
|
ArraySetAsSeries(hkRawLowBuffer, true);
|
||||||
|
SetIndexBuffer(hkRawLowBufferIndex, hkRawLowBuffer, INDICATOR_DATA);
|
||||||
|
|
||||||
|
//
|
||||||
|
ArraySetAsSeries(hkRawCloseBuffer, true);
|
||||||
|
SetIndexBuffer(hkRawCloseBufferIndex, hkRawCloseBuffer, INDICATOR_DATA);
|
||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2032,18 +2073,101 @@ void CalculateHKBar(
|
|||||||
double iHKLowValue = MathMin(low[barIndex], MathMin(iHKOpenValue, iHKCloseValue));
|
double iHKLowValue = MathMin(low[barIndex], MathMin(iHKOpenValue, iHKCloseValue));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Raw HK Buffers ...
|
bool isBullish = iHKOpenValue < iHKCloseValue;
|
||||||
|
bool isBearish = iHKOpenValue > iHKCloseValue;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (hkIgnoreShadows)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iHKHighValue = isBullish
|
||||||
|
? iHKCloseValue
|
||||||
|
: iHKOpenValue;
|
||||||
|
|
||||||
|
//
|
||||||
|
iHKLowValue = isBullish
|
||||||
|
? iHKOpenValue
|
||||||
|
: iHKCloseValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// XHK Buffers ...
|
||||||
hkOpenBuffer[barIndex] = iHKOpenValue;
|
hkOpenBuffer[barIndex] = iHKOpenValue;
|
||||||
hkHighBuffer[barIndex] = iHKHighValue;
|
hkHighBuffer[barIndex] = iHKHighValue;
|
||||||
hkLowBuffer[barIndex] = iHKLowValue;
|
hkLowBuffer[barIndex] = iHKLowValue;
|
||||||
hkCloseBuffer[barIndex] = iHKCloseValue;
|
hkCloseBuffer[barIndex] = iHKCloseValue;
|
||||||
|
|
||||||
|
//
|
||||||
|
// XHK Raw Bufferss ...
|
||||||
|
hkRawOpenBuffer[barIndex] = iHKOpenValue;
|
||||||
|
hkRawHighBuffer[barIndex] = iHKHighValue;
|
||||||
|
hkRawLowBuffer[barIndex] = iHKLowValue;
|
||||||
|
hkRawCloseBuffer[barIndex] = iHKCloseValue;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Smoothing ...
|
||||||
|
if (IsXValid(hkSmoothingMode) && hkSmoothingLength > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// XHK Signal ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// High ...
|
||||||
|
iMAOnBuffer(
|
||||||
|
ratesTotal,
|
||||||
|
prevCalculated,
|
||||||
|
barIndex,
|
||||||
|
hkSmoothingLength,
|
||||||
|
hkRawHighBuffer,
|
||||||
|
hkHighBuffer,
|
||||||
|
hkSmoothingMode //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Open ...
|
||||||
|
iMAOnBuffer(
|
||||||
|
ratesTotal,
|
||||||
|
prevCalculated,
|
||||||
|
barIndex,
|
||||||
|
hkSmoothingLength,
|
||||||
|
hkRawOpenBuffer,
|
||||||
|
hkOpenBuffer,
|
||||||
|
hkSmoothingMode //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Close ...
|
||||||
|
iMAOnBuffer(
|
||||||
|
ratesTotal,
|
||||||
|
prevCalculated,
|
||||||
|
barIndex,
|
||||||
|
hkSmoothingLength,
|
||||||
|
hkRawLowBuffer,
|
||||||
|
hkLowBuffer,
|
||||||
|
hkSmoothingMode //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Close ...
|
||||||
|
iMAOnBuffer(
|
||||||
|
ratesTotal,
|
||||||
|
prevCalculated,
|
||||||
|
barIndex,
|
||||||
|
hkSmoothingLength,
|
||||||
|
hkRawCloseBuffer,
|
||||||
|
hkCloseBuffer,
|
||||||
|
hkSmoothingMode //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Calculate HK Color ...
|
// Calculate HK Color ...
|
||||||
double iHKColorValue =
|
double iHKColorValue =
|
||||||
hkOpenBuffer[barIndex] < hkCloseBuffer[barIndex]
|
isBullish
|
||||||
? bullishColorIDX
|
? bullishColorIDX
|
||||||
: bearishColorIDX;
|
: isBearish
|
||||||
|
? bearishColorIDX
|
||||||
|
: neuturalColorIDX;
|
||||||
hkColorBuffer[barIndex] =
|
hkColorBuffer[barIndex] =
|
||||||
showHK
|
showHK
|
||||||
? iHKColorValue
|
? iHKColorValue
|
||||||
|
|||||||
@@ -233,6 +233,10 @@ ENUM_APPLIED_PRICE ToAppliedPrice(ENUM_X_PRICE value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
ENUM_APPLIED_PRICE ToXAppliedPrice(ENUM_X_PRICE value)
|
||||||
|
{
|
||||||
|
return ToAppliedPrice(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -308,6 +312,10 @@ string ToString(ENUM_X_PRICE value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_PRICE value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Price Type ...
|
// END Price Type ...
|
||||||
@@ -379,6 +387,10 @@ string ToString(ENUM_X_BOUNDARY_PRICE value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_BOUNDARY_PRICE value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Boundary Price Type ...
|
// END Boundary Price Type ...
|
||||||
@@ -559,6 +571,10 @@ ENUM_X_DIRECTION Opposit(ENUM_X_DIRECTION value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
ENUM_X_DIRECTION XOpposit(ENUM_X_DIRECTION value)
|
||||||
|
{
|
||||||
|
return Opposit(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -680,6 +696,10 @@ string ToString(ENUM_X_FIBO_LEVELS value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_FIBO_LEVELS value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -820,6 +840,10 @@ string ToString(ENUM_X_SWING_TYPE value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_SWING_TYPE value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To ENUM_SERIESMODE ...
|
* Converts To ENUM_SERIESMODE ...
|
||||||
@@ -851,6 +875,10 @@ ENUM_SERIESMODE ToSeriesMode(ENUM_X_SWING_TYPE value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
ENUM_SERIESMODE ToXSeriesMode(ENUM_X_SWING_TYPE value)
|
||||||
|
{
|
||||||
|
return ToSeriesMode(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Swing Types ...
|
// END Swing Types ...
|
||||||
@@ -892,6 +920,10 @@ bool IsValid(ENUM_X_PERIOD_METHOD value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
bool IsXValid(ENUM_X_PERIOD_METHOD value)
|
||||||
|
{
|
||||||
|
return IsValid(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -927,6 +959,10 @@ string ToString(ENUM_X_PERIOD_METHOD value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_PERIOD_METHOD value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Period Method ...
|
// END Period Method ...
|
||||||
@@ -1015,6 +1051,10 @@ ENUM_X_MARKET_CYCLES ToCycle(string value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
ENUM_X_MARKET_CYCLES ToXCycle(string value)
|
||||||
|
{
|
||||||
|
return ToCycle(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -1153,6 +1193,10 @@ bool IsValid(ENUM_X_WEEK_DAYS value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
bool IsXValid(ENUM_X_WEEK_DAYS value)
|
||||||
|
{
|
||||||
|
return IsValid(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -1179,7 +1223,7 @@ string ToString(ENUM_X_WEEK_DAYS value)
|
|||||||
result = "Sunday";
|
result = "Sunday";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//
|
//
|
||||||
case X_WEEK_DAY_MONDAY:
|
case X_WEEK_DAY_MONDAY:
|
||||||
result = "Monday";
|
result = "Monday";
|
||||||
break;
|
break;
|
||||||
@@ -1194,7 +1238,7 @@ string ToString(ENUM_X_WEEK_DAYS value)
|
|||||||
result = "Wednesday";
|
result = "Wednesday";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//
|
//
|
||||||
case X_WEEK_DAY_THURSDAY:
|
case X_WEEK_DAY_THURSDAY:
|
||||||
result = "Thursday";
|
result = "Thursday";
|
||||||
break;
|
break;
|
||||||
@@ -1213,6 +1257,10 @@ string ToString(ENUM_X_WEEK_DAYS value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_WEEK_DAYS value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Week Days ...
|
// END Week Days ...
|
||||||
@@ -1259,6 +1307,10 @@ bool IsValid(ENUM_X_MA_METHOD value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
bool IsXValid(ENUM_X_MA_METHOD value)
|
||||||
|
{
|
||||||
|
return IsValid(value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts To String ...
|
* Converts To String ...
|
||||||
@@ -1304,6 +1356,10 @@ string ToString(ENUM_X_MA_METHOD value)
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
string ToXString(ENUM_X_MA_METHOD value)
|
||||||
|
{
|
||||||
|
return ToString(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Ma Methods ...
|
// END Ma Methods ...
|
||||||
|
|||||||
@@ -5712,13 +5712,21 @@ void ApplyTargetsOnSignal(
|
|||||||
//
|
//
|
||||||
XTarget tpTarget;
|
XTarget tpTarget;
|
||||||
tpTarget = targets[idx];
|
tpTarget = targets[idx];
|
||||||
|
tpTarget.actingDistance = 0;
|
||||||
tpTarget.target = signal.tp;
|
tpTarget.target = signal.tp;
|
||||||
|
|
||||||
|
//
|
||||||
signal.tp = targets[idx].target;
|
signal.tp = targets[idx].target;
|
||||||
|
targets[idx].actingDistance = 0;
|
||||||
|
|
||||||
|
//
|
||||||
ArrayRemove(
|
ArrayRemove(
|
||||||
targets,
|
targets,
|
||||||
idx,
|
idx,
|
||||||
1 //
|
1 //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
AddRef(
|
AddRef(
|
||||||
tpTarget,
|
tpTarget,
|
||||||
targets //
|
targets //
|
||||||
|
|||||||
@@ -569,6 +569,45 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
analyserConfig //
|
analyserConfig //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Market Analysis ...
|
||||||
|
// has = iStructure.pvAnalysis.IsValid();
|
||||||
|
// if (has)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// XBoxZone iBox;
|
||||||
|
// XCBoxObject *iBoxObj;
|
||||||
|
|
||||||
|
// //
|
||||||
|
// has = iStructure.pvAnalysis.HasSupportBox(iBox);
|
||||||
|
// if (has)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// iBox.to = iBar.time;
|
||||||
|
// poiDrawer.DrawBox(
|
||||||
|
// iBox,
|
||||||
|
// iBoxObj,
|
||||||
|
// true,
|
||||||
|
// iBox.type //
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //
|
||||||
|
// ZeroMemory(iBoxObj);
|
||||||
|
// has = iStructure.pvAnalysis.HasResistanceBox(iBox);
|
||||||
|
// if (has)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// iBox.to = iBar.time;
|
||||||
|
// poiDrawer.DrawBox(
|
||||||
|
// iBox,
|
||||||
|
// iBoxObj,
|
||||||
|
// true,
|
||||||
|
// iBox.type //
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
//
|
//
|
||||||
// Disable Signallers ...
|
// Disable Signallers ...
|
||||||
has = false;
|
has = false;
|
||||||
@@ -856,6 +895,74 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
: IsXBearish(patternDir)
|
: IsXBearish(patternDir)
|
||||||
? bar.low < zone.lower
|
? bar.low < zone.lower
|
||||||
: false;
|
: false;
|
||||||
|
//
|
||||||
|
// Validate Zone ...
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Requirements ...
|
||||||
|
// if (result)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// // Support and Resistances ...
|
||||||
|
// CArrayObj *zoneObjs;
|
||||||
|
// poiDrawer.DrawBoxes(
|
||||||
|
// supports,
|
||||||
|
// zoneObjs //
|
||||||
|
// );
|
||||||
|
// poiDrawer.DrawBoxes(
|
||||||
|
// resistances,
|
||||||
|
// zoneObjs //
|
||||||
|
// );
|
||||||
|
|
||||||
|
// //
|
||||||
|
// // Zone ...
|
||||||
|
// XCBoxObject *iZoneObj;
|
||||||
|
// bool isDrawn = poiDrawer.DrawBox(
|
||||||
|
// zone,
|
||||||
|
// iZoneObj,
|
||||||
|
// true,
|
||||||
|
// zone.type //
|
||||||
|
// );
|
||||||
|
// if (isDrawn)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// XPOIStyle iStyle;
|
||||||
|
// iStyle.width = 2;
|
||||||
|
// iStyle.clr = clrYellow;
|
||||||
|
// poiDrawer.ApplyBoxStyle(
|
||||||
|
// iZoneObj,
|
||||||
|
// iStyle //
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //
|
||||||
|
// // Pattern ...
|
||||||
|
// XCBarArrowObject *iPObj;
|
||||||
|
// poiDrawer.DrawBarArrow(
|
||||||
|
// bar,
|
||||||
|
// iPObj,
|
||||||
|
// zone.IsBullish() ? X_PRICE_LOW : X_PRICE_HIGH,
|
||||||
|
// 159,
|
||||||
|
// clrYellow,
|
||||||
|
// 3, // With ...
|
||||||
|
// zone.IsBullish() ? ANCHOR_BOTTOM : ANCHOR_TOP,
|
||||||
|
// patternName //
|
||||||
|
// );
|
||||||
|
|
||||||
|
// // poiDrawer.DrawBoxes(
|
||||||
|
// // structure.fvgs,
|
||||||
|
// // zoneObjs,
|
||||||
|
// // false //
|
||||||
|
// // );
|
||||||
|
|
||||||
|
// Print("SALAM");
|
||||||
|
// }
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -872,7 +979,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
int numberOfTargets = 3;
|
int numberOfTargets = 3;
|
||||||
double actingDistance = 20;
|
double actingDistance = 20;
|
||||||
double iValue = EMPTY_VALUE;
|
double iValue = EMPTY_VALUE;
|
||||||
bool ignoreFirstTarget = true;
|
bool ignoreFirstTarget = false;
|
||||||
ENUM_X_DIRECTION targetsDir = Opposit(dir);
|
ENUM_X_DIRECTION targetsDir = Opposit(dir);
|
||||||
int count = ExtractByDirection(
|
int count = ExtractByDirection(
|
||||||
targetZones,
|
targetZones,
|
||||||
@@ -973,27 +1080,6 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
XClean(targetZones);
|
XClean(targetZones);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// TODO: Remove this ...
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
CArrayObj *zoneObjs;
|
|
||||||
poiDrawer.DrawBoxes(
|
|
||||||
supports,
|
|
||||||
zoneObjs //
|
|
||||||
);
|
|
||||||
poiDrawer.DrawBoxes(
|
|
||||||
resistances,
|
|
||||||
zoneObjs //
|
|
||||||
);
|
|
||||||
poiDrawer.DrawBoxes(
|
|
||||||
structure.fvgs,
|
|
||||||
zoneObjs,
|
|
||||||
false //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup Resources ...
|
// Cleanup Resources ...
|
||||||
if (!result)
|
if (!result)
|
||||||
|
|||||||
Reference in New Issue
Block a user