355 lines
5.7 KiB
Plaintext
355 lines
5.7 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 <ChartObjects/ChartObject.mqh>
|
|
#include <ChartObjects/ChartObjectsLines.mqh>
|
|
|
|
//
|
|
// Definitions ...
|
|
|
|
enum ENUM_XCHARTOBJECTS
|
|
{
|
|
X_FROM_TO,
|
|
X_TRADE_DAY,
|
|
X_MARKET_SESSION,
|
|
};
|
|
|
|
enum ENUM_X_CHART_IDS
|
|
{
|
|
X_FROM,
|
|
X_TO
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Convert ENUM_X_TRADE_DAY_IDS membr to String ...
|
|
*
|
|
* @param value: ENUM_X_TRADE_DAY_IDS member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_CHART_IDS value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_FROM:
|
|
result = "XFROM";
|
|
break;
|
|
|
|
//
|
|
case X_TO:
|
|
result = "XTO";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Implementation ...
|
|
|
|
//
|
|
// From To Chart Object ...
|
|
class XCFromToObject : public CChartObject
|
|
{
|
|
//
|
|
public:
|
|
//
|
|
|
|
//
|
|
// Constructors ...
|
|
void XCFromToObject()
|
|
{
|
|
}
|
|
|
|
//
|
|
// Deconstructors ...
|
|
void ~XCFromToObject()
|
|
{
|
|
//
|
|
mToVLine.Detach();
|
|
mFromVLine.Detach();
|
|
mToVLine.Delete();
|
|
mFromVLine.Delete();
|
|
}
|
|
|
|
/**
|
|
* Create XCFromToObject ...
|
|
*
|
|
* @param chart_id: Long ...
|
|
* @param name: String ...
|
|
* @param window: Integer ...
|
|
* @param time1: DateTime ...
|
|
* @param time2: DateTime ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool Create(
|
|
long chart_id,
|
|
const string name,
|
|
const int window,
|
|
const datetime from,
|
|
const datetime to,
|
|
const string objprefix = NULL //
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
string mPrefix = (IsValid(objprefix) ? objprefix + "_" : "");
|
|
|
|
//
|
|
string mFromVLineName =
|
|
mPrefix + ToString(X_FROM) + "_" + name;
|
|
result = mFromVLine.Create(chart_id, mFromVLineName, window, from);
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
string mToVLineName =
|
|
mPrefix + ToString(X_TO) + "_" + name;
|
|
result = mToVLine.Create(chart_id, mToVLineName, window, to);
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Retrieve Object Type ...
|
|
*
|
|
* @return ( ENUM_XCHARTOBJECTS )
|
|
*/
|
|
virtual ENUM_XCHARTOBJECTS Type()
|
|
{
|
|
return X_FROM_TO;
|
|
}
|
|
|
|
/**
|
|
* Set From Date Line Color ...
|
|
*
|
|
* @param value: Color ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool FromColor(color value)
|
|
{
|
|
return mFromVLine.Color(value);
|
|
}
|
|
|
|
/**
|
|
* Set From Date Line Style ...
|
|
*
|
|
* @param value: ENUM_LINE_STYLE ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool FromStyle(ENUM_LINE_STYLE value)
|
|
{
|
|
return mFromVLine.Style(value);
|
|
}
|
|
|
|
/**
|
|
* Set To Date Line Color ...
|
|
*
|
|
* @param value: Color ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool ToColor(color value)
|
|
{
|
|
return mToVLine.Color(value);
|
|
}
|
|
|
|
/**
|
|
* Set To Date Line Style ...
|
|
*
|
|
* @param value: ENUM_LINE_STYLE ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool ToStyle(ENUM_LINE_STYLE value)
|
|
{
|
|
return mToVLine.Style(value);
|
|
}
|
|
|
|
//
|
|
protected:
|
|
//
|
|
|
|
//
|
|
private:
|
|
//
|
|
CChartObjectVLine mFromVLine;
|
|
CChartObjectVLine mToVLine;
|
|
|
|
//
|
|
};
|
|
|
|
//
|
|
// XTradeDay Object ...
|
|
class XCTardeDayObject : public XCFromToObject
|
|
{
|
|
//
|
|
public:
|
|
//
|
|
|
|
//
|
|
// Constructors ...
|
|
void XCTardeDayObject()
|
|
{
|
|
}
|
|
|
|
//
|
|
// Deconstructors ...
|
|
void ~XCTardeDayObject()
|
|
{
|
|
}
|
|
|
|
bool CreateByDay(
|
|
long chart_id,
|
|
const string name,
|
|
const int window,
|
|
XTradeDay &day //
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = Create(
|
|
chart_id,
|
|
name,
|
|
window,
|
|
day.from,
|
|
day.to,
|
|
"XTDAY" //
|
|
);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Retrieve Object Type ...
|
|
*
|
|
* @return ( ENUM_XCHARTOBJECTS )
|
|
*/
|
|
virtual ENUM_XCHARTOBJECTS Type()
|
|
{
|
|
return X_TRADE_DAY;
|
|
}
|
|
|
|
//
|
|
protected:
|
|
//
|
|
|
|
//
|
|
private:
|
|
//
|
|
//
|
|
};
|
|
|
|
//
|
|
// XMarketSession Object ...
|
|
class XCMarketSessionObject : public XCFromToObject
|
|
{
|
|
//
|
|
public:
|
|
//
|
|
|
|
//
|
|
// Constructors ...
|
|
void XCMarketSessionObject()
|
|
{
|
|
}
|
|
|
|
//
|
|
// Deconstructors ...
|
|
void ~XCMarketSessionObject()
|
|
{
|
|
}
|
|
|
|
bool CreateByMarketSession(
|
|
long chart_id,
|
|
const string name,
|
|
const int window,
|
|
XMarketSession &session //
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
string sessionLabel = ToString(session.session);
|
|
result = Create(
|
|
chart_id,
|
|
name,
|
|
window,
|
|
session.from,
|
|
session.to,
|
|
sessionLabel //
|
|
);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Retrieve Object Type ...
|
|
*
|
|
* @return ( ENUM_XCHARTOBJECTS )
|
|
*/
|
|
virtual ENUM_XCHARTOBJECTS Type()
|
|
{
|
|
return X_MARKET_SESSION;
|
|
}
|
|
|
|
//
|
|
protected:
|
|
//
|
|
|
|
//
|
|
private:
|
|
//
|
|
//
|
|
};
|
|
|
|
//
|