how to get the last Sunday Time:2045

 

can anyone know how to get the last Sunday Time:2045

datetime getSundayTime()    
{
 datetime x ;  //x is Time:2045 , which is the last sunday
  return(x)
  }   
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2021.09.20 12:59

#define HOUR 3600
#define HOURS 24
#define DAY (HOURS * HOUR)
#define WEEK 7

ENUM_DAY_OF_WEEK TimeDayOfWeek( const datetime time )
{
  return((ENUM_DAY_OF_WEEK)((time / DAY + THURSDAY) % WEEK));
}

datetime GetTimeDayOfWeek( const datetime time, const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
  const datetime Res = time / DAY * DAY;
  
  return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK)) * DAY);
}


void OnStart()
{
  Print(GetTimeDayOfWeek(D'2046.01.01' - 1)); // https://www.mql5.com/ru/forum/170952/page209#comment_24726214
}


Result.

2045.12.31 00:00:00
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: TimeDaylightCorrections

fxsaber, 2021.09.20 12:28

#define DAY (24 * 3600)
#define WEEK 7

ENUM_DAY_OF_WEEK TimeDayOfWeek( const datetime time )
{
  return((ENUM_DAY_OF_WEEK)((time / DAY + THURSDAY) % WEEK));
}

datetime LastDayWeekMonth( const int Year, const int Month, const ENUM_DAY_OF_WEEK DayWeek = SUNDAY )
{
  const datetime time = (datetime)((string)(Year + (Month == 12)) + "-" + (string)((Month + 1) % 12) + "-01") - DAY;
  
  return(time - ((WEEK + TimeDayOfWeek(time) - DayWeek) % WEEK) * DAY);
}


void OnStart()
{
  Print(LastDayWeekMonth(2045, 12)); // https://www.mql5.com/ru/forum/376510#comment_24723343
}


Result.

2045.12.31 00:00:00