synchronization with the server

 

I don't know if here is the right place to put this message, I try. I have the the account with the number 1110200 in the A.T. Championship. When the symbol (in this case AUDUSD) is not synchronized with the server, the E.A. plays a sound ("alert.wav") and a message is written on the expert log file ("symbol is not synchronized! EA exits...Please restart the EA."); this log file may then becomme very large. I ask you please in this case to restart the E.A. Thank you.

 
JMRodMartins:

I don't know if here is the right place to put this message, I try. I have the the account with the number 1110200 in the A.T. Championship. When the symbol (in this case AUDUSD) is not synchronized with the server, the E.A. plays a sound ("alert.wav") and a message is written on the expert log file ("symbol is not synchronized! EA exits...Please restart the EA."); this log file may then becomme very large. I ask you please in this case to restart the E.A. Thank you.

I'm afraid, MetaQuotes can't do that.

In the ATC 2012 rule (https://championship.mql5.com/2012/en/rules) point III.5 states that "Experts will be working solely on the equipment of the Organizer, without external control.".

It means every EA is running without any intervention from any human. 

The Rules of Automated Trading Championship 2012
  • championship.mql5.com
The Rules of Automated Trading Championship 2012
 
"phi.nuts:

I'm afraid, MetaQuotes can't do that.

In the ATC 2012 rule (https://championship.mql5.com/2012/en/rules) point III.5 states that "Experts will be working solely on the equipment of the Organizer, without external control.".

It means every EA is running without any intervention from any human. "

 

I agree, MetaQuotes can't restart the E.A.. But it should be able to keep up, in the Championship, a constant connection to the server - without absolutly any need for restarting.

But, in the facts: the server is not synchronized from 00:00 to 12:00 almost every day! No trading in this time!  => I think,  this is no serious championship.

 

JMRodMartins:

I agree, MetaQuotes can't restart the E.A.. But it should be able to keep up, in the Championship, a constant connection to the server - without absolutly any need for restarting.

But, in the facts: the server is not synchronized from 00:00 to 12:00 almost every day! No trading in this time!  => I think,  this is no serious championship.

I hope you don't mind that I'm going to write a little bit detail here, so that if there's rookie reads this topic, they understand what it mean of not being synchronized. 

There is a reason why MetaQuotes create SymbolIsSynchronized(). Back in mql4, we only have RefreshRates() function which the same like right click the chart and select Refresh Rates. Basically it just download the latest data of the chart from the server. However, in mql4 we have no knowledge, if the price that EA or CI currently working is out of date and/or if there's new/updated price at server, therefore we have no knowledge if the RefreshRates() is really needed or necessary. Running RefreshRates() is actually took time in mql4, so it just waste of time if the price is actually synchronized.

So that's why MQ create SymbolIsSynchronized() function in mql5. If it return false, then we know that there's new/updated price at server, and/or the price that EA or CI is currently working is old/out-of-date. To update the price, we simply call SymbolInfoTick() (or RefreshRates method of SymbolInfo Class).

There are several reason why terminal is not synchronize with server. Just to name a few, there are, bad (internet) connection between terminal and server, EA or CI that takes too long in processing tick, or a price that move very fast which makes the EA or CI looks like too long in processing tick. 

But I think you already know that.

I can only guess why you get this synchronized error. Maybe MQ trying to emulate real trading environment in ATC, or the price is moving very fast.

I don't know the logic of your EA, however if there's a need to restart the EA, there are several work around to restart the EA without opening the EA property. Write all the codes of OnInit() in a user defined function, call it in OnInit() and when you get synchronize error, then call this function again.

Hopes that helps. 

RefreshRates - MQL4 Documentation
  • docs.mql4.com
RefreshRates - MQL4 Documentation