Files
MQL5Data/Classes/x-saherelm.x-cobject.class.mq5
T

489 lines
8.1 KiB
Plaintext

///////////////////////////////////////////////////////
//
// 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;
//
};
//