Download MetaTrader 5

Difference between TimeTradeServer and TimeLocal

To add comments, please log in or register
kemalturgay
271
kemalturgay  

Both of them returns the computer time, isn't it?

What is the difference between them?

Enrico Lambino
6649
Enrico Lambino  
kemalturgay:

Both of them returns the computer time, isn't it?

What is the difference between them?

Yes. If you are on the same timezone as your broker's trade server and your computer time is up-to-date, TimeTradeServer and TimeLocal would return the same time.


kemalturgay
271
kemalturgay  

My computer time and the time on the market watch are both 22:49 now ... and for experiencing with the TimeTradeServer, I changed my computer time temporarily to 23:49.

TimeTradeServer now returns 23:49 ... equal to my computer time even though the time on the market watch is still 22:49.

So, I think that TimeTradeServer always shows the computer time ... and so it always returns the same time with TimeLocal ... am I wrong?

Biantoro Kunarto
20081
Biantoro Kunarto  

TimeLocal() will returns the local time of a computer, where the client terminal is running.


TimeTradeServer() will returns the calculated current time of the trade server ( your broker server time )

Anthony Garot
552
Anthony Garot  

Trying to get a handle on the purpose of TimeTradeServer().

In my test:

        Print(StringFormat("diff [%d]", TimeCurrent() - TimeTradeServer()));
        Print(StringFormat("diff [%d]", TimeLocal() - TimeTradeServer()));

I get the following results:

2018.05.16 14:15:51.865 Quick (EURUSD,M30)      diff [95]
2018.05.16 14:15:51.865 Quick (EURUSD,M30)      diff [-36000]

My interpretation:

[36000] seconds is 10 hours. Thus TimeTradeServer() tracks the same minutes and seconds as my desktop computer, but changes the hour so that it seems as though I am on the server's time zone.

TimeCurrent() is the "last known server time," which comes in as the time of the last quote. So for an active market time, I could say that this value is a good approximation (with perhaps a little lag) of the server time. The [95] seconds (sometimes 94) difference suggests that my desktop and the server time are off by a little over a minute and a half.

So my question is: what do I use TimeTradeServer() for? Especially when it's off from tick data times by 94 or 95 seconds?

Alain Verleyen
Moderator
36405
Alain Verleyen  
Anthony Garot:

Trying to get a handle on the purpose of TimeTradeServer().

In my test:

I get the following results:

My interpretation:

[36000] seconds is 10 hours. Thus TimeTradeServer() tracks the same minutes and seconds as my desktop computer, but changes the hour so that it seems as though I am on the server's time zone.

TimeCurrent() is the "last known server time," which comes in as the time of the last quote. So for an active market time, I could say that this value is a good approximation (with perhaps a little lag) of the server time. The [95] seconds (sometimes 94) difference suggests that my desktop and the server time are off by a little over a minute and a half.

So my question is: what do I use TimeTradeServer() for? Especially when it's off from tick data times by 94 or 95 seconds?

I am using it to get the server time (with an approximation of +/- 1 second) when running code in OnTimer.

For example, on some EA I have a protection code to close a position without SL/TP after a timeout (from the opening) :

void OnTick()
  {
   timeCorrection=int(TimeCurrent()-TimeTradeServer());
   ...
  }
void OnTimer()
  {
   datetime ts = TimeTradeServer()+timeCorrection;
   ...
   datetime ot = (datetime)PositionGetInteger(POSITION_TIME);

   if(tp==0.0 && sl==0.0 && ts>=ot+PROTECTION_TIMEOUT)
     {
       // run protection code
       ...
     }
   ...
  }
Anthony Garot
552
Anthony Garot  
Alain Verleyen:

I am using it to get the server time (with an approximation of +/- 1 second) when running code in OnTimer.

For example, on some EA I have a protection code to close a position without SL/TP after a timeout (from the opening) :

Interesting.

Thank you for your response.

kypa
777
kypa  

Correcting Windows ntp time settings with faster update interval and good ping server may be helpful. By default update interval is a week, MS servers are often unreachable and Windows kernel is horrible in keeping up time.

Needed registries in Windows 8.1, probably same for other versions:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers

Free and reliable servers: http://support.ntp.org/bin/view/Servers/NTPPoolServers

NTPPoolServers < Servers < NTP
  • support.ntp.org
NTP users are strongly urged to take immediate action to ensure that their NTP daemons are not susceptible to being used in distributed denial-of-service (DDoS) attacks. Please also take this opportunity to defeat denial-of-service attacks by implementing Ingress and Egress...
Anthony Garot
552
Anthony Garot  
kypa:

Correcting Windows ntp time settings with faster update interval and good ping server may be helpful. By default update interval is a week, MS servers are often unreachable and Windows kernel is horrible in keeping up time.

Needed registries in Windows 8.1, probably same for other versions:

Free and reliable servers: http://support.ntp.org/bin/view/Servers/NTPPoolServers

I have confirmed that these registry settings are the same for Windows 7.

It would certainly help if I was pointing to a valid time server. :-D

Now I am only 7 to 8 seconds behind the broker server. I can live with that.

kypa
777
kypa  

I've set mine to update on 8000 seconds from local servers at 0.bg.pool.ntp.org, haven't seen more than 2 seconds difference.

Broker's server could also be out of sync by the way, it's not always our PC's fault.

To add comments, please log in or register