Issue in using TimeGMT method in MQL5

 

Hi all I am using TimeGMT() method in EA...  with I attached to live market (not in stratigee tester) in shows time one our back from current GMT time.


please help me...

 
salirazataqvi:

Hi all I am using TimeGMT() method in EA...  with I attached to live market (not in stratigee tester) in shows time one our back from current GMT time.


please help me...

What is current GMT time ?

Check your computer settings.

 
Alain Verleyen:

What is current GMT time ?

Check your computer settings.

Current GMT Time.

CurrentGMTTime


By computer settings do you mean by time zone settings, currently it is (UTC +05:00) Islamabad, Karachi.

 
salirazataqvi:

Current GMT Time.

lool

I mean, show what you have on your platform/chart.

By computer settings do you mean by time zone settings, currently it is (UTC +05:00) Islamabad, Karachi.

Ok.
 
salirazataqvi:

As you are discussing a similar topic here I have deleted your other topic "I am developing EA, I want to retrieve broker time and time zone in EA. Please help me how to get it done..."

Please do not start new topics unnecessarily.

 

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

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

fxsaber, 2018.03.29 14:32

#property strict

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

datetime GetBarTime( const datetime time, const bool NextBar = false, string Symb = NULL, const ENUM_TIMEFRAMES TimeFrame = PERIOD_M1 )
{
  if (Symb == NULL)
    Symb = _Symbol;
    
  return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0)));
}

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

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset( void )
{
  const datetime Sunday = GetTimeDayOfWeek();
  
  return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - 3) * HOUR);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
datetime TimeServerGMT( void )
{
  return(TimeCurrent() + TimeServerGMTOffset());
}


Применение

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}


Подход хорош тем, что работает не только на выходных, в Тестере и реал-тайме, но и на сторонних данных. Т.е. определяется GMT котировок, взятых не из MT.

Reason: