Как определить начальную и конечную дату оптимизации советника из советника

 

Добрый день, уважаемые коллеги! 

Что-то не соображу... Прошу подсказать, как определить начальную и конечную дату оптимизации советника из советника? 

Эти даты есть в *.set, в разделе [Tester], в параметрах FromDate и ToDate. А как туда добраться? Можно, конечно, считать файл, разобрать и пр., но должен быть какой-то простой способ... По форуму не нашел. :(

  


Форум трейдеров - MQL5 community
Форум трейдеров - MQL5 community
  • www.mql5.com
MQL5: форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
 

Можно так:

datetime start_time=-1, stop_time=-1;

void OnTick()
   {
   if(start_time==-1) start_time=iTime(symbol,frame,0);
   stop_time=iTime(symbol,frame,0);
   }
   
void OnDeinit(const int reason)
   {
   printf(TimeToString(start_time)+" -> "+TimeToString(stop_time));
   }
 
Aleksei Stepanenko #:

Можно так:

Алексей, спасибо! Я правильно понимаю, что при 1-ом вызове OnTick() проинициализируются и start_time, и stop_time? А потом, при каждом обработанном тике, stop_time будет переинициализироваться текущим значением, и в конце концов приобретёт значение последнего тика? Тут единственный минус получается - обработка всего этого на каждом тике. Но, наверное, даже при очень большом объёме оптимизации существенного влияния на скорость оптимизации это не окажет?

 
Да всё правильно. Про скорость не волнуйтесь, одно действие сравнения и одно присваивание почти бесплатно.
 

Можно попробовать получить время сразу в ините и деините, но не уверен, что всегда будет получаться.

datetime start_time=-1;

int OnInit()
   {
   start_time=iTime(symbol,frame,0);
   return(INIT_SUCCEEDED);
   }

void OnDeinit(const int reason)
   {
   printf(TimeToString(start_time)+" -> "+TimeToString(iTime(symbol,frame,0)));
   }
 
Aleksei Stepanenko #:

Можно попробовать получить время сразу в ините и деините, но не уверен, что всегда будет получаться.

Понял, Алексей. Ещё раз спасибо!

Причина обращения: