Complete Market Sessions POI ...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user