cleanup and backup old styles and try toimplement new POI Detector ...
This commit is contained in:
@@ -0,0 +1,489 @@
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
// SaherElm IT Center MQL5 Class Library
|
||||
// --------------------------------------
|
||||
// Name: XChartObjects
|
||||
// Description: provides all require Chart Objects ...
|
||||
//
|
||||
//
|
||||
// Maintainer:
|
||||
// ------------
|
||||
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// Global Properties ...
|
||||
#property library
|
||||
#property copyright "Copyright 2023, SaherElm IT Center"
|
||||
#property link "https://www.saherelm.ir"
|
||||
#property version "1.00"
|
||||
#property strict
|
||||
|
||||
//
|
||||
#include "../Libraries/x-saherelm.x-poi.lib.mq5"
|
||||
#include "../Libraries/x-saherelm.x-trade.lib.mq5"
|
||||
|
||||
//
|
||||
#include <ChartObjects/ChartObject.mqh>
|
||||
#include <ChartObjects/ChartObjectsArrows.mqh>
|
||||
#include <ChartObjects/ChartObjectsLines.mqh>
|
||||
#include <ChartObjects/ChartObjectsShapes.mqh>
|
||||
|
||||
//
|
||||
// Definitions ...
|
||||
|
||||
enum ENUM_XCHARTOBJECTS
|
||||
{
|
||||
//
|
||||
// Global ...
|
||||
X_ZONE_OBJ = 7860,
|
||||
X_FROM_TO_OBJ = 7861,
|
||||
X_BAR_ARROW_OBJ = 7862,
|
||||
//
|
||||
X_SIGNAL_OBJ = 8860,
|
||||
X_TREND_OBJ = 8861,
|
||||
//
|
||||
// Structured ...
|
||||
X_TRADE_DAY_OBJ = 9860,
|
||||
X_MARKET_SESSION_OBJ = 9861,
|
||||
X_SWING_HIGH_OBJ = 9862,
|
||||
X_SWING_LOW_OBJ = 9863,
|
||||
X_BULLISH_MOMENTUM_BAR_OBJ = 9864,
|
||||
X_BEARISH_MOMENTUM_BAR_OBJ = 9865,
|
||||
X_BULLISH_REJECTION_BAR_OBJ = 9866,
|
||||
X_BEARISH_REJECTION_BAR_OBJ = 9867,
|
||||
X_SUPPORT_ZONE_OBJ = 9868,
|
||||
X_RESISTANCE_ZONE_OBJ = 9869,
|
||||
X_SUPPLY_ZONE_OBJ = 9870,
|
||||
X_DEMAND_ZONE_OBJ = 9871,
|
||||
X_BULLISH_ORDERBLOCK_OBJ = 9872,
|
||||
X_BEARISH_ORDERBLOCK_OBJ = 9873,
|
||||
X_BULLISH_FVG_OBJ = 9874,
|
||||
X_BEARISH_FVG_OBJ = 9875,
|
||||
};
|
||||
|
||||
enum ENUM_X_CHART_IDS
|
||||
{
|
||||
X_TO,
|
||||
X_FROM,
|
||||
X_UPPER,
|
||||
X_LOWER,
|
||||
X_ENTRY,
|
||||
X_SL,
|
||||
X_TP
|
||||
};
|
||||
|
||||
//
|
||||
// Implementation ...
|
||||
|
||||
//
|
||||
// Global Chart Objects ...
|
||||
|
||||
//
|
||||
// Bas Chart Object ...
|
||||
class XCBaseObject : public CChartObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
//
|
||||
// Getter(s) / Setter(s) ...
|
||||
|
||||
/**
|
||||
* Get Object Specified Name ...
|
||||
*
|
||||
* @return ( string )
|
||||
*/
|
||||
string ObjName()
|
||||
{
|
||||
return mObjName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Object Specified Name ...
|
||||
*
|
||||
* @param value: String ...
|
||||
*/
|
||||
void ObjName(string value)
|
||||
{
|
||||
mObjName = value;
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
|
||||
//
|
||||
// Props ...
|
||||
string mObjName; // Object Specified Name ...
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
// Swing ...
|
||||
class XCSwingObject : public XCBaseObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param swing: XCSwing instance ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool CreateBySwing(
|
||||
long chart_id,
|
||||
int window,
|
||||
int arrow,
|
||||
XCSwing &swing //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
swing.IsValid()
|
||||
//
|
||||
;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string name = swing.GetTag();
|
||||
|
||||
//
|
||||
XOHCL bar;
|
||||
result = swing.FillBar(bar);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
datetime time = bar.time;
|
||||
double price = swing.IsSwingHigh()
|
||||
? bar.high
|
||||
: bar.low;
|
||||
|
||||
//
|
||||
result = mArrow.Create(
|
||||
chart_id,
|
||||
name,
|
||||
window,
|
||||
time,
|
||||
price,
|
||||
(char)arrow //
|
||||
);
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
ObjName(name);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Virtual ...
|
||||
|
||||
//
|
||||
// Setter(s) ...
|
||||
|
||||
/**
|
||||
* Set Arrow Anchor ...
|
||||
*
|
||||
* @param value: ENUM_ARROW_ANCHOR member ...
|
||||
*/
|
||||
void ArrowAnchor(ENUM_ARROW_ANCHOR value)
|
||||
{
|
||||
mArrow.Anchor(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Arrow Color ...
|
||||
*
|
||||
* @param value: Color ...
|
||||
*/
|
||||
void ArrowColor(color value)
|
||||
{
|
||||
mArrow.Color(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Arrow Width ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void ArrowWidth(int value)
|
||||
{
|
||||
mArrow.Width(value);
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
CChartObjectArrow mArrow;
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
// Swing High ...
|
||||
class XCSwingHighObject : public XCSwingObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param swing: XCSwing instance ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Create(
|
||||
long chart_id,
|
||||
int window,
|
||||
int arrow,
|
||||
XCSwing &swing //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = swing.IsValid() &&
|
||||
swing.IsSwingHigh();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result = CreateBySwing(
|
||||
chart_id,
|
||||
window,
|
||||
arrow,
|
||||
swing //
|
||||
);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Object Type ...
|
||||
*
|
||||
* @return ( ENUM_XCHARTOBJECTS )
|
||||
*/
|
||||
virtual ENUM_XCHARTOBJECTS Type()
|
||||
{
|
||||
return X_SWING_HIGH_OBJ;
|
||||
}
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
// Swing Low ...
|
||||
class XCSwingLowObject : public XCSwingObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param swing: XCSwing instance ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Create(
|
||||
long chart_id,
|
||||
int window,
|
||||
int arrow,
|
||||
XCSwing &swing //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = swing.IsValid() &&
|
||||
swing.IsSwingLow();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result = CreateBySwing(
|
||||
chart_id,
|
||||
window,
|
||||
arrow,
|
||||
swing //
|
||||
);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Object Type ...
|
||||
*
|
||||
* @return ( ENUM_XCHARTOBJECTS )
|
||||
*/
|
||||
virtual ENUM_XCHARTOBJECTS Type()
|
||||
{
|
||||
return X_SWING_LOW_OBJ;
|
||||
}
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
// XCZoneObject ...
|
||||
class XCZoneObject : public XCBaseObject
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
|
||||
/**
|
||||
* Creator ...
|
||||
*
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param name: String, Specified Object Identifier on Chart ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param zone: XCZone instance ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool CreateByZone(
|
||||
long chart_id,
|
||||
string name,
|
||||
int window,
|
||||
XCZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
IsValid(name) &&
|
||||
zone.IsValidFrom() &&
|
||||
zone.IsValidBoundary()
|
||||
//
|
||||
;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
datetime to = NormalizeTime(zone.To());
|
||||
|
||||
//
|
||||
result = mRect.Create(
|
||||
chart_id,
|
||||
name,
|
||||
window,
|
||||
zone.From(),
|
||||
zone.Upper(),
|
||||
to,
|
||||
zone.Lower() //
|
||||
);
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
ObjName(name);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Virtual ...
|
||||
|
||||
/**
|
||||
* Retrieve Object Type ...
|
||||
*
|
||||
* @return ( ENUM_XCHARTOBJECTS )
|
||||
*/
|
||||
virtual ENUM_XCHARTOBJECTS Type()
|
||||
{
|
||||
return X_ZONE_OBJ;
|
||||
}
|
||||
|
||||
//
|
||||
// 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);
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
CChartObjectRectangle mRect;
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
Reference in New Issue
Block a user