Работа MT5-тестера с RAM/Disk.

1 сентября 2025, 17:28
fxsaber
1
36

Многоядерный MT5-тестер имеет свои особенности работы с памятью и диском, знание которых дает понимание его ограничений на запускаемых конфигурациях и объясняет некоторые возникающие ошибки во время расчетов - режим оптимизации.


Будет рассматриваться только режим тестера по реальным тикам и расчет прибыли в пипсах. Т.е. используются данные только одного торгового символа.


Ошибки.

Вот некоторые из ошибок, на которые несложно нарваться при попытках оптимизации.

  • Tester Agent is wrong for task processing due low disk space.
  • no disk space in ticks generating function.


Так это выглядит в самом Тестере.


При возникновении таких ошибок Агент выключается из расчетов. И, как правило, это приводит к выключению всех Агентов (см. скрин).


Механизм.

Режим оптимизации даже только с одним включенным Агентом сильно отличается от режима одиночного прохода.


Распишем некоторые шаги режима Оптимизации после его запуска.

  1. Идет генерация/подготовка расчетных данных.
  2. Подготовленные данные (кусками по мере готовности) записываются на диск - копий столько, сколько Агентов задействовано.
  3. Каждый Агент во время работы расчетов подтягивает данные из своей копии на диске.

Пункт 2 можно видеть по следующему пути \Tester\Agent-127.0.0.1-3XXX\temp\*.tmp.

На скрине виден объем данных только для одного Агента. И такие данные копируются для каждого работающего Агента.


Возможно, раньше они хранились исключительно в RAM, но средняя конфигурация пользователя не располагает таким количеством памяти, а запросы пользователей растут. Поэтому теперь (исследовал MT5_b5233) расчетные данные хранятся на диске.


Пункт 3 существенно снижает требования к объему RAM, т.к. расчетные данные попадают в RAM последовательным чтением с диска небольшими порциями.


Выводы.

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


Соответственно, требуются и высокие скоростные показатели чтения (не записи) с диска. Как правило, это не играет существенной роли, т.к. пользователи запускают столь тяжелые расчеты (Маркет-продукты алгоритмически написаны безграмотно), что чтение с диска в них занимает небольшое влияние на итоговую производительность.


Однако, для особых случаев, как и раньше, имеет смысл использовать RAMDrive. И если раньше, когда данные хранились в памяти, RAMDrive мог быть небольшим, то теперь требуется регулировать его размер перед запуском оптимизации. Однако, суммарное потребление памяти при использовании RAMDrive не поменялось.