Topic: SessionIgnore Weekdays?
Hi,
i want to modify ea that i can switch between Ignore Trading days. So that ea will not trade at special weekdays.
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool IsOutOfSession()
{
MqlDateTime time0; TimeToStruct(Time[0],time0);
int weekDay = time0.day_of_week;
long timeFromMidnight = Time[0]%86400;
int periodLength = PeriodSeconds(_Period);
bool skipTrade = false;
if(weekDay==0)
{
if(sessionIgnoreSunday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionSundayOpen || timeFromMidnight+lastBarFix>sessionSundayClose;
}
else if(weekDay<5)
{
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
else
{
int lastBarFix=sessionCloseAtFridayClose || sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionFridayOpen || timeFromMidnight+lastBarFix>sessionFridayClose;
}
return (skipTrade);
}
i checked the code how can we change it.
adding this
const bool sessionIgnoreSunday = true;
const bool sessionIgnoreMonday = true;
const bool sessionIgnoreTuesday = true;
const bool sessionIgnoreWednesday = true;
const bool sessionIgnoreThursday = true;
const bool sessionIgnoreFriday = true;
changed it to
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool IsOutOfSession()
{
MqlDateTime time0; TimeToStruct(Time[0],time0);
int weekDay = time0.day_of_week;
long timeFromMidnight = Time[0]%86400;
int periodLength = PeriodSeconds(_Period);
bool skipTrade = false;
if(weekDay==0)
{
if(sessionIgnoreSunday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionSundayOpen || timeFromMidnight+lastBarFix>sessionSundayClose;
}
if(weekDay==1)
{
if(sessionIgnoreMonday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
if(weekDay==2)
{
if(sessionIgnoreTuesday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
if(weekDay==3)
{
if(sessionIgnoreWednesday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
if(weekDay==4)
{
if(sessionIgnoreThursday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
if(weekDay==5)
{
if(sessionIgnoreFriday) return true;
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionFridayOpen || timeFromMidnight+lastBarFix>sessionFridayClose;
}
else if(weekDay<5)
{
int lastBarFix=sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionMondayThursdayOpen || timeFromMidnight+lastBarFix>sessionMondayThursdayClose;
}
else
{
int lastBarFix=sessionCloseAtFridayClose || sessionCloseAtSessionClose ? periodLength : 0;
skipTrade=timeFromMidnight<sessionFridayOpen || timeFromMidnight+lastBarFix>sessionFridayClose;
}
return (skipTrade);
}
Does it work correctly?