Скачать MetaTrader 5

Расход памяти в тестере стратегий

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexander Laur
7792
Alexander Laur  

Вот такой простенький эксперт расходуем 400 Мб памяти при прогоне с 03.01.10 по 01.09.10. Почему это происходит? Как же писать мультивалютников на Чемпионат? Если пустой мультивалютник потребляет столько памяти?

Вот код эксперта :

#property copyright "Copyright 2012, Papaklass"
#property link      "http://www.mql5.com"
#property version   "1.00"

#define   instr     12  //количество рабочих инструментов

//--------------------------ОБЪЯВЛЕНИЕ ВНЕШНИХ ПАРАМЕТРОВ------------------------------------------------+

//--------------------------ОБЪЯВЛЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ---------------------------------------------+
string sy[instr];
   
//--------------------------ИНИЦИАЛИЗАЦИЯ ЭКСПЕРТА-------------------------------------------------------+
int OnInit(){
//---Инициализациия рабочих инструментов
   sy[0]   = "EURUSD";
   sy[1]   = "GBPUSD";
   sy[2]   = "AUDUSD";
   sy[3]   = "USDCHF";
   sy[4]   = "USDCAD";
   sy[5]   = "USDJPY";
   sy[6]   = "EURGBP";
   sy[7]   = "EURAUD";
   sy[8]   = "EURCHF";
   sy[9]   = "EURJPY";
   sy[10]  = "GBPJPY";
   sy[11]  = "GBPCHF";//*/

//---
   return(0);
}
//--------------------------ДЕИНИЦИАЛИЗАЦИЯ ЭКСПЕРТА-----------------------------------------------------+
void OnDeinit(const int reason){
//---

//---
}
//--------------------------ЭКСПЕРТ----------------------------------------------------------------------+
void OnTick(){
   static int  k;

//---   
   if( k >= instr ){ k = 0; }
   
   Volume(k);
   k++;

//--- успешное завершение функции OnTick
   return;
}


//---расчет лота для инструмента
bool Volume(int nmb){
//---
   double vl = SymbolInfoDouble(sy[nmb],SYMBOL_VOLUME_MIN);
//---
   if(vl > 0){
      
      return(true);
   }
   return(false);
}//------------------------------------------------------------------------------------------------------+



MetaQuotes
Админ
25053
Renat Fatkhullin  

Это не пустой мультивалютник.

Вы самостоятельно запросили и активировали полнофункциональное моделирование 12 инструментов. Вы не воспользовались запрошенными данными в полной мере, но это не значит, что тестер должен отказаться от моделирования запрошенного рыночного окружения.

Alexander Laur
7792
Alexander Laur  
Renat:

Это не пустой мультивалютник.

Вы самостоятельно запросили и активировали полнофункциональное моделирование 12 инструментов. Вы не воспользовались запрошенными данными в полной мере, но это не значит, что тестер должен отказаться от моделирования запрошенного рыночного окружения.

 То есть такой расход памяти считается нормальным? Я помню stringo говорил, что у меня тажелый мультивалютник, хотя он потреблял примерно столько же памяти.
Alexander Laur
7792
Alexander Laur  

Удивляет тот факт, что память растет с увеличением промежутка тестирования. Вот картинки по расходу памяти в зависимости от промежутка тестирования:

- месяц

 

 - два месяца

- три месяца 

- четыре месяца  

- пять месяцев 

 

Из рисунков видно, что при увеличении продолжительности тестирования, расход памяти тоже растет. Если расход памяти определяется рыночным окружением, то продолжительность тестирования не должна оказывать влияние на расход памяти. 

Valerii Mazurenko
3485
Valerii Mazurenko  
papaklass:
Пару билдов назад увеличили размеры кеша - в память грузится история котировок для скорострельности. Ранее, видимо, из файлов подчитывалась. Поэтому, потребляемая тестером память - это скорее не память потребляемая экспертом, а размер истории котировок в памяти + потребляемая экспертом память.
Slava
Модератор
6918
Slava  

Не забывайте о том, что всегда есть "поддерживающая" история - как минимум с начала предыдущего от даты тестирования года. И она хранится в памяти.

Кроме того, сгенерированные тики тоже хранятся в памяти для использования при следующем прогоне. Но для тиков мы ограничиваем использование памяти - после определённого порога начинается страничный обмен памяти с диском.

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

Дмитрий Александрович
1705
Дмитрий Александрович  
papaklass:

Удивляет тот факт, что память растет с увеличением промежутка тестирования. Вот картинки по расходу памяти в зависимости от промежутка тестирования:


Из рисунков видно, что при увеличении продолжительности тестирования, расход памяти тоже растет. Если расход памяти определяется рыночным окружением, то продолжительность тестирования не должна оказывать влияние на расход памяти. 

По моему, все логично, тестер скорее всего берет данные о истории кусками с диска в кэш.
А далее по ним проходит уже в оперативке.

Если бы он каждый раз обращался к диску, то на перестроение головок уходило бы в сотни раз больше времени чем на считывание самих данных.

ADD: опоздал :)

Andrey Sharov
3422
Andrey Sharov  

papaklass:
 То есть такой расход памяти считается нормальным? Я помню stringo говорил, что у меня тажелый мультивалютник, хотя он потреблял примерно столько же памяти.

 

Насколько я понимаю, расклад со времен билда 567 остался примерно тем же: https://www.mql5.com/ru/forum/4927/page100#comment_135166

Мы запускаем облачный сервис MQL5 Cloud Network!
Мы запускаем облачный сервис MQL5 Cloud Network!
  • www.mql5.com
Для начала работы в MQL5 Cloud Network достаточно скачать и установить MetaTrader 5 Strategy Tester Agent.
Valerii Mazurenko
3485
Valerii Mazurenko  
stringo:

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

Запуск тестирования по всем тикам за пару лет, да ещё хотябы по двум символам - делает работу за компьютером некомфортной, а временами и невозможной. Приходится отключать агентов. Может оставить  четверть памяти другим приложениям?
Sceptic Philozoff
Модератор
17844
Sceptic Philozoff  
notused: Может оставить  четверть памяти другим приложениям?

А еще лучше отдать этот параметр (% выделения полной памяти тестеру, от 0 до 100) юзеру.

Надо - сделал 100% и пошел спать. Проснулся - уменьшил до 60-70. И работать комфортно.

Andrey Sharov
3422
Andrey Sharov  
Mathemat:

А еще лучше отдать этот параметр (% выделения полной памяти тестеру, от 0 до 100) юзеру.

Надо - сделал 100% и пошел спать. Проснулся - уменьшил до 60-70. И работать комфортно.

 

 

Комфортнее, по-моему, было бы не грузить в память принудительно историю за 2 года (в минимальном случае) - примерно по 20 МБ за год (минуты) по одному инструменту...

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий