Download MetaTrader 5

ATC2011 Testing Time 5min - Big Red Light for MultiCurrEAs

To add comments, please log in or register
Liliput
512
Liliput  

Hi ALL,

I understand what a challenge is to prepare and organize such a huge event as the ATC11. My ALL respect to the organizers for all efforts!

It is not a "fast" task to test more than 900 EAs no one will place this in question, but let us analyze the 5min limitation rule in closer. To pass the check the EA developer should consider this main questions:

1. Is the history downloaded in terminal for the selected from the developer to trade pairs?

In championship rules it is said

IV. Trading terms

...

3. There are 12 currency pairs with accessible minute histories from the year of 2005, selected for the Championship.

Question to the organizers:

Is that mean that the history is already downloaded into terminal? How should we understand the word accessible?  As the history is available for download from the year of 2005 or it is available and already downloaded?

This is critical because the time needed for downloading is large. On my PC for instance it takes more than 5min to download EURUSD only. I know this depends on net speed so let's say on the championship stations it is 5x faster for instance 1min. What if the EA wants to trade all 12 pair. The time will be 12min to download history for all pairs. Which already disqualify the EA from the contest. We can not skip downloading because it is automatically started.

Please explain this in detail. How we handle this situation?

2. Is is possible to increase the time of testing to 15min as it was in ATC10?Why is it reduced again to 5min after it was 15min?

Here i want to make an example of EA that does nothing just checks for new bar on 4 Pairs.

void OnTimer()
  {
//---
    if(isNewBar_eurusd())
    {
     .....do nothing just check
    }
    if(isNewBar_gbpusd())
    {
     .....do nothing just check
    }
    if(isNewBar_audusd())
    {
     .....do nothing just check
    }  
    if(isNewBar_eurjpy())
    {
     .....do nothing just check
    }
}

To speed up the execution I use on Timer with 30sec event subscription. Nothing on OnTick() event just the timer. So every tick is not handled practicly. Each of the isNewBar functions had this form. Only name,pair are changed. Different functions are needed because new bar on EURUSD does not mean new bar on GBPUSD or any other pair. There are also ways to put all this into a class for each pair an use instances but is has equal speed so i'm showing the simple version:

bool isNewBar_eurusd()
  {
//--- remember the time of opening of the last bar in the static variable
   static datetime last_time=0;
//--- current time
   datetime lastbar_time=SeriesInfoInteger(Symbol(),PERIOD_M5,SERIES_LASTBAR_DATE);

//--- if it is the first call of the function
   if(last_time==0)
     {
      //--- set time && exit
      last_time=lastbar_time;
      return(false);
     }

//--- if the time is different
   if(last_time!=lastbar_time)
     {
      //--- memorize time && return true
      last_time=lastbar_time;
      return(true);
     }
//--- if we pass to this line ){ the bar is not new, return false
   return(false);
  }

And here are the results:

When tested from 2011.01.01 to today (2011.07.08) it takes 4:10min and it is without downloading history! It was already downloaded.

So just to make sure new bar has arrived on those 4 pairs takes almost 2/3 of the limited tested time. Also the test showed that only 1 pair takes less than a 1 min but 4 more than 4mins. This concludes that testing time is not increasing proportional to pairs number. It is growing faster as pairs number increase.

Have not tested all 12pairs how long it will take because 4 is already to slow. I know all this depend on PCspeed may be on championship stations it will be faster but if we say 2x faster it will still not be enough to cover all 12pairs. I'm using P4 CPU on 4Ghz with 3Gb RAM just to reference.

Conclusion:

I hope a discussion here will occur and something will change. Because this is how multi currency EAs suffer and are excluded from ATC11. I will be glad to hear opinions from organizers and developers to find work around this problems.

Good lock to all participants in ATC11 and let the best EA win!!!

Appendix 1: Contract Specifications of Automated Trading Championship 2011
  • championship.mql5.com
Appendix 1: Contract Specifications of Automated Trading Championship 2011
Alexey Petrov
Admin
1231
Alexey Petrov  

Liliput:

1. Is that mean that the history is already downloaded into terminal? How should we understand the word accessible?  As the history is available for download from the year of 2005 or it is available and already downloaded?

It means already donwloaded.

Liliput:

2. Is is possible to increase the time of testing to 15min as it was in ATC10?Why is it reduced again to 5min after it was 15min?

It is left 15 minutes as for the previous competition. You can find more detailes in the "How to Prepare an Expert Advisor for the Automated Trading Championship 2011" article.

How to Prepare an Expert Advisor for the Automated Trading Championship 2011 - Automated Trading Championship 2011
  • championship.mql5.com
The Automated Trading Championship 2011 will start soon. In this competition, hundreds of participants from all over the world will demonstrate their best developments. All Expert Advisors participating in the Championship must meet the Championship Rules. In this article, we cover the main points to help participants prepare their Expert Advisors for the ATC 2011.
Liliput
512
Liliput  

I only see this written:


In the first three Championships, the maximum time of a test run was 5 minutes, on the Automated Trading Championship 2010 the time of automatic check was increased to 15 minutes.


If the testing of an Expert Advisor takes more than 5 minutes, it will not pass the check due to excessive consumption of resources.
Is it a type error or not?


If his is already downloaded it speeds up things much. This will save time to cover more pairs. Where from do you have this information?

Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
Alexey Petrov
Admin
1231
Alexey Petrov  
Liliput:

I only see this written:

If the testing of an Expert Advisor takes more than 5 minutes, it will not pass the check due to excessive consumption of resources.
Is it a type error or not?
It's a misprint, I've corrected it to 15 minutes. Thanks.
Liliput
512
Liliput  

Very good news!

In those cases things look much better for MultiEAs.


Brett Luedtke
114
Brett Luedtke  
We are limited by what we calculate, and isNewBar() is not very efficient without some logical boundries to limit its usage.
Brett Luedtke
114
Brett Luedtke  
My Windows Mobile SE phone (i bought for mt4 mobile) is bugging in the quick reply window.I have a heck of a time typing replies, my cursor keeps losing focus on the text field/just testing .
Liliput
512
Liliput  
Lugner:
We are limited by what we calculate, and isNewBar() is not very efficient without some logical boundries to limit its usage.
It is basic and fundamental to know when newBar has occur. This is a milestone for every strategy which works on bar opening. Therefore can't be limitations in its usage. So it leaves us the task to make isNewBar simpler as possible to gain speed. It looks that SeriesInfoInteger() is to "slow" or updating a static variable takes time. The rest are simple checks (ifs). That is why one should think of way to get rid of the slowing parts.
Stephen Njuki
5204
Stephen Njuki  
Lugner:
My Windows Mobile SE phone (i bought for mt4 mobile) is bugging in the quick reply window.I have a heck of a time typing replies, my cursor keeps losing focus on the text field/just testing .
Yep!... apple products i.e. ipod touch, iphone, and ipad with MT5 are the way to go... :)
Stephen Njuki
5204
Stephen Njuki  
Liliput:
It is basic and fundamental to know when newBar has occur. This is a milestone for every strategy which works on bar opening. Therefore can't be limitations in its usage. So it leaves us the task to make isNewBar simpler as possible to gain speed. It looks that SeriesInfoInteger() is to "slow" or updating a static variable takes time. The rest are simple checks (ifs). That is why one should think of way to get rid of the slowing parts.

Hello former champion,

Have you tried assembling an advisor with the standard library and setting ontick to false? This is with the wizard but after you have coded your signal script.

To add comments, please log in or register