Complete Market Sessions POI ...

This commit is contained in:
2024-10-21 12:49:01 +03:30
parent 4dbd744ba1
commit 9f43c4ab43
3 changed files with 1170 additions and 674 deletions
+155 -22
View File
@@ -20,7 +20,7 @@
#property strict #property strict
// //
#include "../Libraries/x-saherelm.common.lib.mq5" #include "../Libraries/x-saherelm.x-poi.lib.mq5"
// //
#include <ChartObjects/ChartObject.mqh> #include <ChartObjects/ChartObject.mqh>
@@ -31,13 +31,15 @@
enum ENUM_XCHARTOBJECTS enum ENUM_XCHARTOBJECTS
{ {
X_FROM_TO,
X_TRADE_DAY, X_TRADE_DAY,
X_MARKET_SESSION,
}; };
enum ENUM_X_TRADE_DAY_IDS enum ENUM_X_CHART_IDS
{ {
X_TRADE_DAY_FROM, X_FROM,
X_TRADE_DAY_TO X_TO
}; };
// //
@@ -50,7 +52,7 @@ enum ENUM_X_TRADE_DAY_IDS
* *
* @return ( string ) * @return ( string )
*/ */
string ToString(ENUM_X_TRADE_DAY_IDS value) string ToString(ENUM_X_CHART_IDS value)
{ {
// //
string result = NULL; string result = NULL;
@@ -59,12 +61,12 @@ string ToString(ENUM_X_TRADE_DAY_IDS value)
switch (value) switch (value)
{ {
// //
case X_TRADE_DAY_FROM: case X_FROM:
result = "XFROM"; result = "XFROM";
break; break;
// //
case X_TRADE_DAY_TO: case X_TO:
result = "XTO"; result = "XTO";
break; break;
} }
@@ -75,7 +77,10 @@ string ToString(ENUM_X_TRADE_DAY_IDS value)
// //
// Implementation ... // Implementation ...
class XCTardeDayObject : public CChartObject
//
// From To Chart Object ...
class XCFromToObject : public CChartObject
{ {
// //
public: public:
@@ -83,18 +88,18 @@ class XCTardeDayObject : public CChartObject
// //
// Constructors ... // Constructors ...
void XCTardeDayObject() void XCFromToObject()
{ {
} }
// //
// Deconstructors ... // Deconstructors ...
void ~XCTardeDayObject() void ~XCFromToObject()
{ {
} }
/** /**
* Create XTradeDayChartObject ... * Create XCFromToObject ...
* *
* @param chart_id: Long ... * @param chart_id: Long ...
* @param name: String ... * @param name: String ...
@@ -109,14 +114,19 @@ class XCTardeDayObject : public CChartObject
const string name, const string name,
const int window, const int window,
const datetime from, const datetime from,
const datetime to // const datetime to,
const string objprefix = NULL //
) )
{ {
// //
bool result = false; bool result = false;
// //
string mFromVLineName = ToString(X_TRADE_DAY_FROM) + "_" + name; string mPrefix = (IsValid(objprefix) ? objprefix + "_" : "");
//
string mFromVLineName =
mPrefix + ToString(X_FROM) + "_" + name;
result = mFromVLine.Create(chart_id, mFromVLineName, window, from); result = mFromVLine.Create(chart_id, mFromVLineName, window, from);
if (!result) if (!result)
{ {
@@ -124,20 +134,14 @@ class XCTardeDayObject : public CChartObject
} }
// //
string mToVLineName = ToString(X_TRADE_DAY_TO) + "_" + name; string mToVLineName =
mPrefix + ToString(X_TO) + "_" + name;
result = mToVLine.Create(chart_id, mToVLineName, window, to); result = mToVLine.Create(chart_id, mToVLineName, window, to);
if (!result) if (!result)
{ {
return result; return result;
} }
//
// result = Attach(chart_id, name, window, 2);
// if (!result)
// {
// return result;
// }
// //
return result; return result;
} }
@@ -149,7 +153,7 @@ class XCTardeDayObject : public CChartObject
*/ */
virtual ENUM_XCHARTOBJECTS Type() virtual ENUM_XCHARTOBJECTS Type()
{ {
return X_TRADE_DAY; return X_FROM_TO;
} }
/** /**
@@ -214,3 +218,132 @@ class XCTardeDayObject : public CChartObject
}; };
// //
// 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:
//
//
};
//
File diff suppressed because it is too large Load Diff
+416
View File
@@ -0,0 +1,416 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Seriallize Library
// ---------------------------------------
// Name: XPOILib
// Description: All models related to POIs ...
//
//
// 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
//
// Imports ...
#include "../Libraries/x-saherelm.common.lib.mq5"
//
// Definitions ...
//
// Definitions ...
//
// All Available POI(s) ...
enum ENUM_XPOIS
{
//
// Momentum Bar ...
X_POI_MOMENTUM_BAR, // Momentum Bar ...
//
// Rejection Bar ...
X_POI_REJECTION_BAR, // Rejection Bar ...
//
// Swings ...
X_POI_SWING_HIGH, // Simple Swing High ...
X_POI_SWING_LOW, // Simple Swing Low ...
//
// Support nad Resistance ...
X_POI_SUPPORT, // Support Zone ...
X_POI_RESISTANCE, // Resistance Zone ...
};
//
// Event Types ...
enum ENUM_XPOI_EVENTS
{
//
// Trading Days ...
X_TRADE_DAY_FIRST_BAR, // Trading Day Start ...
X_TRADE_DAY_LAST_BAR, // Trading Day End ...
//
// Session ...
X_SESSION_FIRST_BAR, // Session First Bar ...
X_SESSION_LAST_BAR, // Session Last Bar ...
//
// Momentum Bar ...
X_MOMENTUM_BAR_DETECTED, // Momentum Bar ...
//
// Rejection Bar ...
X_REJECTION_BAR_DETECTED, // Rejection Bar ...
//
// Swings ...
X_SWING_HIGH_DETECTED,
X_SWING_LOW_DETECTED,
//
// Support nad Resistance ...
X_SUPPORT_DETECTED,
X_RESISTANCE_DETECTED,
};
//
// Forext Sessions ...
enum ENUM_XSESSION
{
X_TOKYO,
X_SYDNEY,
X_LONDON,
X_NEW_YORK
};
//
// Represent a Session Working Time ...
struct XSession
{
//
// Props ...
ENUM_XSESSION session; // Session Identifier
string start; // Start Time
string end; // End Time
//
bool allowDraw;
color startColor;
ENUM_LINE_STYLE startStyle;
color endColor;
ENUM_LINE_STYLE endStyle;
/**
* Constructor ...
*/
void XSession()
{
Clean();
}
/**
* Clean Structure ...
*/
void Clean()
{
//
start = NULL;
end = NULL;
//
allowDraw = false;
endColor = clrAqua;
endStyle = STYLE_DOT;
startColor = clrAqua;
endStyle = STYLE_DOT;
}
/**
* Validate Structure ...
*
* @return ( bool )
*/
bool IsValid()
{
//
bool result = false;
//
result = IsValid(start) &&
IsValid(end);
//
return result;
}
/**
* Initialize Specified Session ...
*
* @param _session: ENUM_XSESSION member ...
* @param _start: String (Session Start Time) ...
* @param _end: String (Session End Time) ...
*
* @return ( bool )
*/
bool Init(
ENUM_XSESSION _session,
string _start,
string _end //
)
{
//
bool result = false;
//
result = IsValid(_start) &&
IsValid(_end);
if (!result)
{
return result;
}
//
end = _end;
start = _start;
session = _session;
//
result = IsValid();
//
return result;
}
//
};
//
struct XTradeDay
{
//
datetime from;
datetime to;
//
void XTradeDay()
{
Clean();
}
//
void Clean()
{
//
from = NULL;
to = NULL;
}
//
bool IsValid()
{
//
bool result = false;
//
result = IsValid(from) &&
IsValid(to);
//
return result;
}
//
string GetTag()
{
//
string result = NULL;
//
if (!IsValid())
{
return result;
}
//
result = "XDay_" + ToFormatString(from) + "_" + ToFormatString(to);
//
return result;
}
//
};
//
// Detected Session ...
struct XMarketSession
{
//
ENUM_XSESSION session;
datetime from;
datetime to;
//
void XMarketSession()
{
Clean();
}
//
void Clean()
{
from = NULL;
to = NULL;
}
//
bool IsValid()
{
//
bool result = false;
//
result = IsValid(from) &&
IsValid(to);
//
return result;
}
//
string GetTag()
{
//
string result = NULL;
//
if (!IsValid())
{
return result;
}
//
result =
ToFormatString(from) + "_" +
ToFormatString(to) + "_";
//
return result;
}
};
//
// XOHCL Event Handler ...
typedef void (*TXOHCLEventHandler)(
XOHCL &bar //
);
//
// POI Event Handler ...
typedef void (*TXPOIEventHandler)(
ENUM_XPOI_EVENTS event //
);
//
// Session Event Handler ...
typedef void (*TXSessionEventHandler)(
ENUM_XSESSION session,
ENUM_XPOI_EVENTS event //
);
//
// Extensions ...
/**
* Converts ENUM_XPOI value to String Representation ...
*
* @param value: ENUM_XPOI member ...
*
* @return ( string )
*/
string ToString(ENUM_XPOIS value)
{
//
string result = NULL;
//
switch (value)
{
//
case X_POI_MOMENTUM_BAR:
result = "XMNTMB";
break;
//
case X_POI_REJECTION_BAR:
result = "XRJCTB";
break;
//
case X_POI_SWING_HIGH:
result = "XSPH";
break;
//
case X_POI_SWING_LOW:
result = "XSPL";
break;
//
case X_POI_SUPPORT:
result = "XSUP";
break;
//
case X_POI_RESISTANCE:
result = "XRES";
break;
}
//
return result;
}
/**
* Converts ENUM_XSESSION value to String Representation ...
*
* @param value: ENUM_XSESSION member ...
*
* @return ( string )
*/
string ToString(ENUM_XSESSION value)
{
//
string result = NULL;
//
switch (value)
{
//
case X_SYDNEY:
result = "Sydney";
break;
//
case X_TOKYO:
result = "Tokyo";
break;
//
case X_LONDON:
result = "London";
break;
//
case X_NEW_YORK:
result = "NewYork";
break;
}
//
return result;
}