last ...
This commit is contained in:
@@ -63,7 +63,7 @@ enum ENUM_XPOI_EVENTS
|
|||||||
//
|
//
|
||||||
// Trading Days ...
|
// Trading Days ...
|
||||||
X_TRADE_DAY_FIRST_BAR, // Trading Day Start ...
|
X_TRADE_DAY_FIRST_BAR, // Trading Day Start ...
|
||||||
X_TRADE_DAY_LAST_BAR, // Trading Day End ...
|
X_TRADE_DAY_LAST_BAR, // Trading Day End ...
|
||||||
//
|
//
|
||||||
// Session ...
|
// Session ...
|
||||||
X_SESSION_OPEN, // Session Open ...
|
X_SESSION_OPEN, // Session Open ...
|
||||||
@@ -103,7 +103,6 @@ struct XSession
|
|||||||
ENUM_XSESSION session; // Session Identifier
|
ENUM_XSESSION session; // Session Identifier
|
||||||
string start; // Start Time
|
string start; // Start Time
|
||||||
string end; // End Time
|
string end; // End Time
|
||||||
int offset; // Time Offset
|
|
||||||
|
|
||||||
//
|
//
|
||||||
color startColor;
|
color startColor;
|
||||||
@@ -147,8 +146,7 @@ struct XSession
|
|||||||
|
|
||||||
//
|
//
|
||||||
result = IsValid(start) &&
|
result = IsValid(start) &&
|
||||||
IsValid(end) &&
|
IsValid(end);
|
||||||
offset >= 0;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -166,8 +164,7 @@ struct XSession
|
|||||||
bool Init(
|
bool Init(
|
||||||
ENUM_XSESSION _session,
|
ENUM_XSESSION _session,
|
||||||
string _start,
|
string _start,
|
||||||
string _end,
|
string _end //
|
||||||
int _offset //
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -175,18 +172,16 @@ struct XSession
|
|||||||
|
|
||||||
//
|
//
|
||||||
result = IsValid(_start) &&
|
result = IsValid(_start) &&
|
||||||
IsValid(_end) &&
|
IsValid(_end);
|
||||||
offset >= 0;
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
session = _session;
|
|
||||||
offset = _offset;
|
|
||||||
start = _start;
|
|
||||||
end = _end;
|
end = _end;
|
||||||
|
start = _start;
|
||||||
|
session = _session;
|
||||||
|
|
||||||
//
|
//
|
||||||
result = IsValid();
|
result = IsValid();
|
||||||
@@ -195,103 +190,6 @@ struct XSession
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve Session Start Time ...
|
|
||||||
*
|
|
||||||
* @return ( datetime )
|
|
||||||
*/
|
|
||||||
datetime Start()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
datetime result = NULL;
|
|
||||||
|
|
||||||
//
|
|
||||||
if (!IsValid())
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
result = (datetime)((int)StringToTime(start) + offset);
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve Session End Time ...
|
|
||||||
*
|
|
||||||
* @return ( datetime )
|
|
||||||
*/
|
|
||||||
datetime End()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
datetime result = NULL;
|
|
||||||
|
|
||||||
//
|
|
||||||
if (!IsValid())
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
result = (datetime)((int)StringToTime(end) + offset);
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check Currently Session is Open or not ...
|
|
||||||
*
|
|
||||||
* @return ( bool )
|
|
||||||
*/
|
|
||||||
bool IsOpen()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
result = IsValid();
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
datetime sTime = Start();
|
|
||||||
datetime eTime = End();
|
|
||||||
result = IsValid(sTime) &&
|
|
||||||
IsValid(eTime);
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
datetime cTime = TimeCurrent();
|
|
||||||
|
|
||||||
//
|
|
||||||
MqlDateTime cTimeStruct;
|
|
||||||
result = TimeToStruct(cTime, cTimeStruct);
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
ENUM_DAY_OF_WEEK dayOfWeek = (ENUM_DAY_OF_WEEK)cTimeStruct.day_of_week;
|
|
||||||
|
|
||||||
//
|
|
||||||
result = cTime >= sTime &&
|
|
||||||
cTime < eTime &&
|
|
||||||
(dayOfWeek >= MONDAY &&
|
|
||||||
dayOfWeek <= FRIDAY);
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1836,9 +1734,6 @@ class XCPOI : public XSCBaseAlert
|
|||||||
//
|
//
|
||||||
// Sessions ...
|
// Sessions ...
|
||||||
|
|
||||||
//
|
|
||||||
int offset = -10800;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// SYDNEY ...
|
// SYDNEY ...
|
||||||
// Start: (UTC) 21:00
|
// Start: (UTC) 21:00
|
||||||
@@ -1847,8 +1742,7 @@ class XCPOI : public XSCBaseAlert
|
|||||||
mSyndeySession.Init(
|
mSyndeySession.Init(
|
||||||
X_SYDNEY,
|
X_SYDNEY,
|
||||||
"21:00", // Start ...
|
"21:00", // Start ...
|
||||||
"06:00", // End ...
|
"06:00" // End ...
|
||||||
offset //
|
|
||||||
);
|
);
|
||||||
mSyndeySession.startColor = clrFireBrick;
|
mSyndeySession.startColor = clrFireBrick;
|
||||||
mSyndeySession.endColor = clrFireBrick;
|
mSyndeySession.endColor = clrFireBrick;
|
||||||
@@ -1864,8 +1758,7 @@ class XCPOI : public XSCBaseAlert
|
|||||||
mTokyoSession.Init(
|
mTokyoSession.Init(
|
||||||
X_TOKYO,
|
X_TOKYO,
|
||||||
"12:00", // Start ...
|
"12:00", // Start ...
|
||||||
"09:00", // End ...
|
"09:00" // End ...
|
||||||
offset //
|
|
||||||
);
|
);
|
||||||
mTokyoSession.startColor = clrBlueViolet;
|
mTokyoSession.startColor = clrBlueViolet;
|
||||||
mTokyoSession.endColor = clrBlueViolet;
|
mTokyoSession.endColor = clrBlueViolet;
|
||||||
@@ -1881,8 +1774,7 @@ class XCPOI : public XSCBaseAlert
|
|||||||
mLondonSession.Init(
|
mLondonSession.Init(
|
||||||
X_LONDON,
|
X_LONDON,
|
||||||
"07:00", // Start ...
|
"07:00", // Start ...
|
||||||
"16:00", // End ...
|
"16:00" // End ...
|
||||||
offset //
|
|
||||||
);
|
);
|
||||||
mLondonSession.startColor = clrLime;
|
mLondonSession.startColor = clrLime;
|
||||||
mLondonSession.endColor = clrLime;
|
mLondonSession.endColor = clrLime;
|
||||||
@@ -1898,8 +1790,7 @@ class XCPOI : public XSCBaseAlert
|
|||||||
mNewYorkSession.Init(
|
mNewYorkSession.Init(
|
||||||
X_LONDON,
|
X_LONDON,
|
||||||
"13:00", // Start ...
|
"13:00", // Start ...
|
||||||
"22:00", // End ...
|
"22:00" // End ...
|
||||||
offset //
|
|
||||||
);
|
);
|
||||||
mNewYorkSession.startColor = clrAqua;
|
mNewYorkSession.startColor = clrAqua;
|
||||||
mNewYorkSession.endColor = clrAqua;
|
mNewYorkSession.endColor = clrAqua;
|
||||||
@@ -2251,6 +2142,39 @@ class XCPOI : public XSCBaseAlert
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Session ...
|
// Session ...
|
||||||
|
int sessionsCount = ArraySize(mSessions);
|
||||||
|
int marketSessionsCount = ArraySize(mMarketSessions);
|
||||||
|
if (IsValidSize(sessionsCount) &&
|
||||||
|
marketSessionsCount < sessionsCount * requiredPOIs)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
for (int i = 0; i < sessionsCount; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XSession iSession = mSessions[i];
|
||||||
|
|
||||||
|
//
|
||||||
|
datetime iStart = iSession.Start();
|
||||||
|
string iStartString = GetTimeString(iStart);
|
||||||
|
|
||||||
|
//
|
||||||
|
datetime iEnd = iSession.End();
|
||||||
|
string iEndString = GetTimeString(iEnd);
|
||||||
|
|
||||||
|
//
|
||||||
|
string zTimeString = GetTimeString(zBar.time);
|
||||||
|
|
||||||
|
//
|
||||||
|
if (zTimeString == iEndString)
|
||||||
|
{
|
||||||
|
Print("Session: " + ToString(iSession.session) + " Last Bar ...");
|
||||||
|
}
|
||||||
|
else if (zTimeString == iStartString)
|
||||||
|
{
|
||||||
|
Print("Session: " + ToString(iSession.session) + " First Bar ...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Swing Highs ...
|
// Swing Highs ...
|
||||||
@@ -2345,6 +2269,9 @@ class XCPOI : public XSCBaseAlert
|
|||||||
//
|
//
|
||||||
daysCount < requiredPOIs ||
|
daysCount < requiredPOIs ||
|
||||||
//
|
//
|
||||||
|
(IsValidSize(sessionsCount) &&
|
||||||
|
marketSessionsCount < (sessionsCount * requiredPOIs)) ||
|
||||||
|
//
|
||||||
swingHighsCount < requiredPOIs ||
|
swingHighsCount < requiredPOIs ||
|
||||||
swingLowsCount < requiredPOIs ||
|
swingLowsCount < requiredPOIs ||
|
||||||
//
|
//
|
||||||
@@ -3146,6 +3073,56 @@ class XCPOI : public XSCBaseAlert
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find Market Session by Providing Start Time ...
|
||||||
|
*
|
||||||
|
* @param start: DateTime ...
|
||||||
|
*
|
||||||
|
* @return ( int )
|
||||||
|
*/
|
||||||
|
int HasMarketSessionByStartTime(datetime start)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (!IsValid(start))
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int count = ArraySize(mMarketSessions);
|
||||||
|
if (!IsValidSize(count))
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XMarketSession iMarketSession = mMarketSessions[i];
|
||||||
|
datetime iStart = iMarketSession.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find Market Session by Providing Start Time ...
|
||||||
|
*
|
||||||
|
* @param end: DateTime ...
|
||||||
|
*
|
||||||
|
* @return ( int )
|
||||||
|
*/
|
||||||
|
int HasMarketSessionByEndTime(datetime end)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
private:
|
private:
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|||||||
@@ -7976,6 +7976,47 @@ ulong GetCurrentTimeAsMilliSeconds()
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Retrieve only Hour and Minute as String ...
|
||||||
|
string GetTimeString(
|
||||||
|
datetime time = NULL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
NormalizeTime(time);
|
||||||
|
|
||||||
|
//
|
||||||
|
string result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
MqlDateTime tStruct;
|
||||||
|
bool isStructed = TimeToStruct(time, tStruct);
|
||||||
|
if (!isStructed)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
string hour = ToString(tStruct.hour);
|
||||||
|
hour =
|
||||||
|
StringLen(hour) == 1
|
||||||
|
? "0" + hour
|
||||||
|
: hour;
|
||||||
|
|
||||||
|
//
|
||||||
|
string minute = ToString(tStruct.min);
|
||||||
|
minute =
|
||||||
|
StringLen(minute) == 1
|
||||||
|
? "0" + minute
|
||||||
|
: minute;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = hour + ":" + minute;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Converts a Date time to File Format ...
|
// Converts a Date time to File Format ...
|
||||||
string ToFormatString(
|
string ToFormatString(
|
||||||
|
|||||||
Reference in New Issue
Block a user