Download MetaTrader 5

wait x ticks makes strategy tester loop

To add comments, please log in or register
Mariusz
28
Mariusz  

                             for (i=certainamountofticks;i>=1;i--)
                             {
                               Alert("Ticks to go ",i);
                               
                               while(RefreshRates()==false)  // To the new tick
                               {
                                  Alert("waiting");                  // Cycle delay
                               }   
                             }

Hi,

this code makes my EA loop until certain amount of ticks passes and it works fine.

The problem is in strategy tester. It makes the tester loop infinitly.

How can i make it work in tester as well?

Thanks.

                       

whroeder1
15086
whroeder1  

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. How can i make it work in tester as well?
    You can't. You must return from start() and count the number of times start() is called.
  3. and it works fine.
    And it uses all available CPU time both in the EA thread and in the GUI thread. You're probably missing ticks unless you have a fast enough processor.
Simon Gniadkowski
Moderator
18018
Simon Gniadkowski  
maniam01:

Hi,

this code makes my EA loop until certain amount of ticks passes and it works fine.

The problem is in strategy tester. It makes the tester loop infinitly.

How can i make it work in tester as well?

Do it properly, count a tick each time start() is executed,  if you haven't had enough ticks   return(0); 
Mariusz
28
Mariusz  
WHRoeder:

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. How can i make it work in tester as well?
    You can't. You must return from start() and count the number of times start() is called.
  3. and it works fine.
    And it uses all available CPU time both in the EA thread and in the GUI thread. You're probably missing ticks unless you have a fast enough processor.

The processor usage is 25% during testing (quad core) and few% during trading. i`m not missing ticks, i checked.
Mariusz
28
Mariusz  
RaptorUK:
Do it properly, count a tick each time start() is executed,  if you haven't had enough ticks   return(0); 


I don`t want properly, i prefer by using RefreshRates, it`s more convinient in my EA.

So, RefreshRates in a loop will not work in tester?

Is there another way to count ticks without loop but using RefreshRates, that will work in tester too?

Thanks 

Tjipke de Vries
6339
Tjipke de Vries  
maniam01:


I don`t want properly, i prefer by using RefreshRates, it`s more convinient in my EA.

So, RefreshRates in a loop will not work in tester?

Is there another way to count ticks without loop but using RefreshRates, that will work in tester too?

Thanks 


yes,   every tick is old fresh tick you have from history data

newer history you won't get testing 

int start()
  {
   tick++;


 
GreenMoney
379
GreenMoney  
maniam01:


I don`t want properly, i prefer by using RefreshRates, it`s more convinient in my EA.

So, RefreshRates in a loop will not work in tester?

Is there another way to count ticks without loop but using RefreshRates, that will work in tester too?

Thanks 


If you don't want to do it properly, that is your choice.  You should listen to RaptorUK and WHRoeder.

int max_ticks_to_wait = 50;   // choose whatever number you want
int current_tick_count = 0;

int start() {
   if (current_tick_count <= max_ticks_to_wait) {
      current_tick_count++;
      return (0);
   }
   else
      current_tick_count = 0;

   // the rest of your code here

   return (0)
}
Ex Ovo Omnia
3230
Ex Ovo Omnia  

RefreshRates() does nothing in the strategy tester, so you might wait forever. Neither does Alert(), so you have clear infinite loop with no option to break it. 

Mariusz
28
Mariusz  
Ovo:

RefreshRates() does nothing in the strategy tester, so you might wait forever. Neither does Alert(), so you have clear infinite loop with no option to break it. 

 


Thank you all. It was helpfull.
whroeder1
15086
whroeder1  
maniam01:


I don`t want properly, i prefer by using RefreshRates, it`s more convinient in my EA.

So, RefreshRates in a loop will not work in tester?

Asked and answered. You must return in the tester. End of Thread.
albericolima
11
albericolima  

Hi guys,

I know this thread is already a little bit old but I'm with the same problem as maniam01, and there is no start() function on my EA.  Was it replaced for OnTick() in newer versions of MT4 or something like that ?

I'm totally newbie on MQL4 and strugling to backtest my first EA, I'll appreciate any help.

 

Thanks in advance. 

To add comments, please log in or register