Complete Ticks Zones ...
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <ChartObjects/ChartObjectsArrows.mqh>
|
||||
#include <ChartObjects/ChartObjectsLines.mqh>
|
||||
#include <ChartObjects/ChartObjectsShapes.mqh>
|
||||
#include <ChartObjects\ChartObjectsTxtControls.mqh>
|
||||
|
||||
//
|
||||
// Definitions ...
|
||||
@@ -60,6 +61,8 @@ enum ENUM_XCHARTOBJECTS
|
||||
X_BEARISH_ORDERBLOCK_OBJ = 9873,
|
||||
X_BULLISH_FVG_OBJ = 9874,
|
||||
X_BEARISH_FVG_OBJ = 9875,
|
||||
X_TICK_ZONE_OBJ = 9876,
|
||||
X_TICKS_ZONE_OBJ = 9877,
|
||||
};
|
||||
|
||||
enum ENUM_X_CHART_IDS
|
||||
@@ -1532,4 +1535,327 @@ class XCBearishFairValueGapObject : public XCZoneObject
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Zone Ticks ...
|
||||
|
||||
class XCTickZoneObject : public XCBaseObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param name: String, Specify Chart Object Identifier ...
|
||||
* @param from: Datetime ...
|
||||
* @param to: Datetime ...
|
||||
* @param zone: XCTickZone instance ...
|
||||
* @param prefix: String ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Create(
|
||||
long chart_id,
|
||||
int window,
|
||||
string name,
|
||||
datetime from,
|
||||
datetime to,
|
||||
XCTickZone *zone,
|
||||
string prefix = NULL //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
IsValid(name) &&
|
||||
zone.IsValid() &&
|
||||
IsValid(to) &&
|
||||
IsValid(from);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
if (IsValid(prefix))
|
||||
{
|
||||
name = prefix + "_" + name;
|
||||
}
|
||||
|
||||
//
|
||||
string rectName = "TKZ_" + name;
|
||||
result = mRect.Create(
|
||||
chart_id,
|
||||
rectName,
|
||||
window,
|
||||
from,
|
||||
zone.high,
|
||||
to,
|
||||
zone.low //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string lblName = "LBL_" + name;
|
||||
result = mLabel.Create(
|
||||
chart_id,
|
||||
lblName,
|
||||
window,
|
||||
from,
|
||||
zone.high //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
mLabel.Description(ToString(zone.percent) + "%");
|
||||
|
||||
//
|
||||
ObjName(name);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Virtual ...
|
||||
|
||||
/**
|
||||
* Retrieve Object Type ...
|
||||
*
|
||||
* @return ( ENUM_XCHARTOBJECTS )
|
||||
*/
|
||||
virtual ENUM_XCHARTOBJECTS Type()
|
||||
{
|
||||
return X_TICK_ZONE_OBJ;
|
||||
}
|
||||
|
||||
//
|
||||
// Getter(s) / Setter(s) ...
|
||||
|
||||
/**
|
||||
* Set Zone Width ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void ZoneWidth(int value)
|
||||
{
|
||||
//
|
||||
if (value < 1)
|
||||
{
|
||||
value = 1;
|
||||
}
|
||||
|
||||
//
|
||||
mRect.Width(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Zone Color ...
|
||||
*
|
||||
* @param value: Color ...
|
||||
*/
|
||||
void ZoneColor(color value)
|
||||
{
|
||||
mRect.Color(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Zone Style ...
|
||||
*
|
||||
* @param value: ENUM_LINE_STYLE member ...
|
||||
*/
|
||||
void ZoneStyle(ENUM_LINE_STYLE value)
|
||||
{
|
||||
mRect.Style(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Zone Fill ...
|
||||
*
|
||||
* @param value: Boolean ...
|
||||
*/
|
||||
void ZoneFill(bool value)
|
||||
{
|
||||
mRect.Fill(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Label Color ...
|
||||
*
|
||||
* @param value: Color ...
|
||||
*/
|
||||
void LabelColor(color value)
|
||||
{
|
||||
mLabel.Color(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Label Size ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void LabelSize(int value)
|
||||
{
|
||||
mLabel.FontSize(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Label Font ...
|
||||
*
|
||||
* @param value: String ...
|
||||
*/
|
||||
void LabelFont(string value)
|
||||
{
|
||||
mLabel.Font(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Label Angle ...
|
||||
*
|
||||
* @param value: double ...
|
||||
*/
|
||||
void LabelAngle(double value)
|
||||
{
|
||||
mLabel.Angle(value);
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
// Props ...
|
||||
CChartObjectRectangle mRect;
|
||||
CChartObjectLabel mLabel;
|
||||
|
||||
//
|
||||
};
|
||||
class XCTicksZoneObject : public XCBaseObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
//
|
||||
void ~XCTicksZoneObject()
|
||||
{
|
||||
mZones.Clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param zone: XCTicksZone instance ...
|
||||
* @param prefix: String ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Create(
|
||||
long chart_id,
|
||||
int window,
|
||||
XCTicksZone &zone,
|
||||
string prefix = NULL //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string name = zone.GetTag();
|
||||
int levels = zone.Levels();
|
||||
result = levels > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
for (int i = 0; i < levels; i++)
|
||||
{
|
||||
//
|
||||
XCTickZone *iZone = zone.GetZone(i);
|
||||
XCTickZoneObject *iObj;
|
||||
iObj = new XCTickZoneObject();
|
||||
result = iObj.Create(
|
||||
chart_id,
|
||||
window,
|
||||
ToString(i) + "_" + name,
|
||||
zone.From(),
|
||||
zone.To(),
|
||||
iZone,
|
||||
prefix //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
mZones.Add(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
ObjName(name);
|
||||
}
|
||||
else
|
||||
{
|
||||
mZones.Clear();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Virtual ...
|
||||
|
||||
/**
|
||||
* Retrieve Object Type ...
|
||||
*
|
||||
* @return ( ENUM_XCHARTOBJECTS )
|
||||
*/
|
||||
virtual ENUM_XCHARTOBJECTS Type()
|
||||
{
|
||||
return X_TICKS_ZONE_OBJ;
|
||||
}
|
||||
|
||||
//
|
||||
// Getter(s) / Setter(s) ...
|
||||
|
||||
//
|
||||
// Actions ...
|
||||
|
||||
void Destroy() {
|
||||
mZones.Clear();
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
// Props ...
|
||||
CArrayObj mZones;
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
@@ -437,6 +437,63 @@ class XCPOIDetector : public XCBaseAlert
|
||||
mFairValueGapsSameBars = value;
|
||||
}
|
||||
|
||||
//
|
||||
// Ticks Zone ...
|
||||
|
||||
/**
|
||||
* Get Ticks Range Levels ...
|
||||
*
|
||||
* @return ( int )
|
||||
*/
|
||||
int TicksRangeZoneLevel()
|
||||
{
|
||||
return mTicksRangeZoneLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Ticks Range Levels ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void TicksRangeZoneLevel(int value)
|
||||
{
|
||||
//
|
||||
if (value < 2)
|
||||
{
|
||||
value = 2;
|
||||
}
|
||||
|
||||
//
|
||||
mTicksRangeZoneLevel = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Ticks Range Zone Loopback Period ...
|
||||
*
|
||||
* @return ( int )
|
||||
*/
|
||||
int TicksRangeZoneRange()
|
||||
{
|
||||
return mTicksRangeZoneRange;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Ticks Range Zone Loopback Period ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void TicksRangeZoneRange(int value)
|
||||
{
|
||||
//
|
||||
if (value < 7)
|
||||
{
|
||||
value = 7;
|
||||
}
|
||||
|
||||
//
|
||||
mTicksRangeZoneRange = value;
|
||||
}
|
||||
|
||||
//
|
||||
// Actions ...
|
||||
|
||||
@@ -952,6 +1009,20 @@ class XCPOIDetector : public XCBaseAlert
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Ticks Range Zone ...
|
||||
int ticksLevels = TicksRangeZoneLevel();
|
||||
int ticksRange = TicksRangeZoneRange();
|
||||
if (ticksLevels > 0 &&
|
||||
ticksRange > 0)
|
||||
{
|
||||
//
|
||||
isDetected = DetectTicksZoneRange(cBar);
|
||||
if (isDetected)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
ValidatePOIs(cBar);
|
||||
|
||||
@@ -1109,6 +1180,10 @@ class XCPOIDetector : public XCBaseAlert
|
||||
|
||||
//
|
||||
FairValueGapsSameBars(3);
|
||||
|
||||
//
|
||||
TicksRangeZoneLevel(10);
|
||||
TicksRangeZoneRange(144);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -3283,7 +3358,8 @@ class XCPOIDetector : public XCBaseAlert
|
||||
|
||||
//
|
||||
int sameBars = OrderBlocksSameBars();
|
||||
if (sameBars < 0)
|
||||
result = sameBars > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
@@ -3440,7 +3516,8 @@ class XCPOIDetector : public XCBaseAlert
|
||||
|
||||
//
|
||||
int sameBars = OrderBlocksSameBars();
|
||||
if (sameBars < 0)
|
||||
result = sameBars > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
@@ -3601,7 +3678,8 @@ class XCPOIDetector : public XCBaseAlert
|
||||
|
||||
//
|
||||
int sameBars = FairValueGapsSameBars();
|
||||
if (sameBars < 0)
|
||||
result = sameBars > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
@@ -3761,7 +3839,8 @@ class XCPOIDetector : public XCBaseAlert
|
||||
|
||||
//
|
||||
int sameBars = FairValueGapsSameBars();
|
||||
if (sameBars < 0)
|
||||
result = sameBars > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
@@ -3896,6 +3975,84 @@ class XCPOIDetector : public XCBaseAlert
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Ticks Range Zones ...
|
||||
int mTicksRangeZoneLevel; // Ticks Range Levels ...
|
||||
int mTicksRangeZoneRange; // Ticks Range Zone Loopback Period ...
|
||||
|
||||
//
|
||||
XCTicksZone *mTicksZone; // Ticks Zone ...
|
||||
// XCTicksZoneObject *mTicksZoneObject; // Ticks Zone Object ...
|
||||
|
||||
/**
|
||||
* Detect Ticks Zone Range ...
|
||||
*
|
||||
* @param bar: XOHCL instance ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectTicksZoneRange(XOHCL &bar)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int ticksLevels = TicksRangeZoneLevel();
|
||||
int ticksRange = TicksRangeZoneRange();
|
||||
result = ticksLevels > 0 &&
|
||||
ticksRange > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int startBarIndex = bar.Index() + ticksRange;
|
||||
XOHCL startBar;
|
||||
result = startBar.Init(
|
||||
bar.symbol,
|
||||
bar.period,
|
||||
startBarIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
mTicksZone = new XCTicksZone();
|
||||
result = mTicksZone.Init(
|
||||
startBar,
|
||||
bar //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
mTicksZone = NULL;
|
||||
return result;
|
||||
}
|
||||
|
||||
// //
|
||||
// if (mTicksZoneObject != NULL)
|
||||
// {
|
||||
// mTicksZoneObject.Destroy();
|
||||
// }
|
||||
// mDrawer.CreateTicksZone(
|
||||
// mTicksZone,
|
||||
// mTicksZoneObject //
|
||||
// );
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Liquidity Zones ...
|
||||
|
||||
|
||||
@@ -2268,6 +2268,59 @@ class XCPOIDrawer : public XCBase
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Ticks Zone ...
|
||||
|
||||
bool CreateTicksZone(
|
||||
XCTicksZone &zone,
|
||||
XCTicksZoneObject *&object
|
||||
) {
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string prefix = Prefix();
|
||||
long chartID = ChartIdentification();
|
||||
int window = SubWindowIdentification();
|
||||
|
||||
//
|
||||
// bool fill = BearishFVGFill();
|
||||
// int width = BearishFVGWidth();
|
||||
// color crl = BearishFVGColor();
|
||||
// ENUM_LINE_STYLE style = BearishFVGStyle();
|
||||
|
||||
//
|
||||
object = new XCTicksZoneObject();
|
||||
result = object.Create(
|
||||
chartID,
|
||||
window,
|
||||
zone,
|
||||
prefix //
|
||||
);
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// object.ZoneFill(fill);
|
||||
// object.ZoneColor(crl);
|
||||
// object.ZoneWidth(width);
|
||||
// object.ZoneStyle(style);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
protected:
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user