Работа с результатами оптимизации

Функции для организации собственной обработки результатов оптимизации в тестере стратегий. Могут вызываться при оптимизации в агентах тестирования, а также локально в экспертах и скриптах.

При запуске эксперта в тестере стратегий можно создать собственный массив данных на основе простых типов или простых структур (не содержат строки, объекты класса или объекты динамических массивов). Этот набор данных можно сохранить с помощью функции FrameAdd() в специальной структуре, называемой фрейм (кадр). Каждый агент при оптимизации эксперта может посылать в терминал серию фреймов. Все полученные фреймы в порядке поступления от агентов записываются в *.MQD-файл по имени эксперта в папку каталог_терминала\MQL5\Files\Tester. Поступление фрейма в клиентский терминал от агента тестирования генерирует событие TesterPass.

Фреймы можно сохранять как в память компьютера, так и в файл с указанным именем. Нет никаких ограничений на количество фреймов со стороны языка MQL5.

Ограничения на память и дисковое пространство в MQL5 Cloud Network

При запуске оптимизации в MQL5 Cloud Network существует ограничение: тестируемый советник не может записывать на диск более 4ГБ информации и использовать более 4ГБ оперативной памяти. При превышении лимита агент сети не сможет корректно завершить расчет, и вы не получите результат тестирования. При этом с вас будет удержана оплата за уже затраченное на расчеты время.

Если вам необходимо получать информацию с каждого прохода оптимизации, используйте для этого отправку фреймов без записи на диск. Для того, чтобы не использовать файловые операции в советниках при вычислениях в MQL5 Cloud Network, можно применять такую проверку:

   int handle=INVALID_HANDLE;
   bool file_operations_allowed=true;
   if(MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_FORWARD))
      file_operations_allowed=false;
 
   if(file_operations_allowed)
     {
      ...
      handle=FileOpen(...);
      ...
     }

 

Функция

Действие

FrameFirst

Переводит указатель чтения фреймов в начало и сбрасывает ранее установленный фильтр

FrameFilter

Устанавливает фильтр чтения фреймов и переводит указатель на начало

FrameNext

Читает фрейм и перемещает указатель на следующий

FrameInputs

Получает input-параметры, на которых сформирован фрейм

FrameAdd

Добавляет фрейм с данными

ParameterGetRange

Получает для input-переменной информацию о диапазоне значений и шаге изменения при оптимизации эксперта в тестере стратегий

ParameterSetRange

Устанавливает правила использования input-переменной при оптимизации эксперта в тестере стратегий: значение, шаг изменения, начальное и конечное значения

Смотри также

Статистика тестирования, Информация о запущенной MQL5-программе