Органичения MQL4

 
Понимаю, что все в ожиданиии 5-ки, которая будет гораздо быстрее, но все же (пока это актуально) хотел спросить об ограничениях в скорости расчетов в 4-ке. Написал скрипт, который анализирует распределения отклонений цены на заданных (сигналами) участках. Пытаясь "прогнать" скрипт по параметрам сигналов (что то вроде оптимизции в тестере) столкнулся с проблемой постепенного замедления расчетов. С чем это связано не могу понять. Может кто подскажет?
 
ugus >>:
Пытаясь "прогнать" скрипт по параметрам сигналов (что то вроде оптимизции в тестере) столкнулся с проблемой постепенного замедления расчетов. С чем это связано не могу понять. Может кто подскажет?

С неоптимальностью алгоритма расчетов.

 

Обратите внимание на динамику файла подкачки. Возможно, алгоритм жрет память, и замедление происходит из-за перекидывания из ОЗУ на винт.

Или просто, как уже написали, сам алгоритм неоптимален. Сложно сказать - все хорошие алгоритмы счастливы одинаковы, а кривые - мучаются по-своему...)))

 

Я понимаю, что в оптимизации алгоритма есть значительный резерв для увеличения скорости. Но все же не понятно как алгоритм может влиять на замедление расчетов на каждой последующей итерации (комбинации параметров). Вот отрывок лога для расчета со 162-й итерации (по прошествии значительного времени с момента запуска скрипта):

16:00:19 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,13,1,1,1

16:04:26 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,14,1,1,1

16:07:33 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,15,1,1,1

видно, что расчет одной итерации занимает около 4-х минут. А вот лог для "прогона" по тем же параметрам, но с 1-й итерации (с начала запуска скрипта):

19:54:17 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,13,1,1,1

19:54:25 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,14,1,1,1

19:54:36 gran_ver GBPUSD,M15: p1,p2,p3,p4,p5= 6,15,1,1,1 расчет одной итерации занимает секунды. Почему такая разница?

Хотя, скорее всего, дело в "забивании" ОЗУ..

 
ugus >>:
Почему такая разница?

Вот простой советник, запустите его на тестирование на минутках и увидите как будет падать скорость .

//+------------------------------------------------------------------+
//|                                                ConsumptionEA.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                   https://forum.mql4.com/cn/17189 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "https://forum.mql4.com/ru/22936"


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double sum=0;
   for (int i=0;i<Bars;i++) sum+=Close[i];
   sum/=Bars;
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Rosh писал(а) >>

Вот простой советник, запустите его на тестирование на минутках и увидите как будет падать скорость .

Я Вас понял, но мой скрипт анализирует фиксированное (неувеличивающееся) количество баров. Дело, действительно, скорее всего в памяти.