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
//
#include "../Libraries/x-saherelm.common.lib.mq5"
#include "../Libraries/x-saherelm.x-poi.lib.mq5"
//
#include <ChartObjects/ChartObject.mqh>
@@ -31,13 +31,15 @@
enum ENUM_XCHARTOBJECTS
{
X_FROM_TO,
X_TRADE_DAY,
X_MARKET_SESSION,
};
enum ENUM_X_TRADE_DAY_IDS
enum ENUM_X_CHART_IDS
{
X_TRADE_DAY_FROM,
X_TRADE_DAY_TO
X_FROM,
X_TO
};
//
@@ -50,7 +52,7 @@ enum ENUM_X_TRADE_DAY_IDS
*
* @return ( string )
*/
string ToString(ENUM_X_TRADE_DAY_IDS value)
string ToString(ENUM_X_CHART_IDS value)
{
//
string result = NULL;
@@ -59,12 +61,12 @@ string ToString(ENUM_X_TRADE_DAY_IDS value)
switch (value)
{
//
case X_TRADE_DAY_FROM:
case X_FROM:
result = "XFROM";
break;
//
case X_TRADE_DAY_TO:
case X_TO:
result = "XTO";
break;
}
@@ -75,7 +77,10 @@ string ToString(ENUM_X_TRADE_DAY_IDS value)
//
// Implementation ...
class XCTardeDayObject : public CChartObject
//
// From To Chart Object ...
class XCFromToObject : public CChartObject
{
//
public:
@@ -83,18 +88,18 @@ class XCTardeDayObject : public CChartObject
//
// Constructors ...
void XCTardeDayObject()
void XCFromToObject()
{
}
//
// Deconstructors ...
void ~XCTardeDayObject()
void ~XCFromToObject()
{
}
/**
* Create XTradeDayChartObject ...
* Create XCFromToObject ...
*
* @param chart_id: Long ...
* @param name: String ...
@@ -109,14 +114,19 @@ class XCTardeDayObject : public CChartObject
const string name,
const int window,
const datetime from,
const datetime to //
const datetime to,
const string objprefix = NULL //
)
{
//
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);
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);
if (!result)
{
return result;
}
//
// result = Attach(chart_id, name, window, 2);
// if (!result)
// {
// return result;
// }
//
return result;
}
@@ -149,7 +153,7 @@ class XCTardeDayObject : public CChartObject
*/
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;
}