Многоядерный MT5-тестер имеет свои особенности работы с памятью и диском, знание которых дает понимание его ограничений на запускаемых конфигурациях и объясняет некоторые возникающие ошибки во время расчетов - режим оптимизации.
Будет рассматриваться только режим тестера по реальным тикам и расчет прибыли в пипсах. Т.е. используются данные только одного торгового символа.
Ошибки.
Вот некоторые из ошибок, на которые несложно нарваться при попытках оптимизации.
- Tester Agent is wrong for task processing due low disk space.
- no disk space in ticks generating function.
Так это выглядит в самом Тестере.
При возникновении таких ошибок Агент выключается из расчетов. И, как правило, это приводит к выключению всех Агентов (см. скрин).
Механизм.
Режим оптимизации даже только с одним включенным Агентом сильно отличается от режима одиночного прохода.
Распишем некоторые шаги режима Оптимизации после его запуска.
- Идет генерация/подготовка расчетных данных.
- Подготовленные данные (кусками по мере готовности) записываются на диск - копий столько, сколько Агентов задействовано.
- Каждый Агент во время работы расчетов подтягивает данные из своей копии на диске.
Пункт 2 можно видеть по следующему пути \Tester\Agent-127.0.0.1-3XXX\temp\*.tmp.
На скрине виден объем данных только для одного Агента. И такие данные копируются для каждого работающего Агента.
Возможно, раньше они хранились исключительно в RAM, но средняя конфигурация пользователя не располагает таким количеством памяти, а запросы пользователей растут. Поэтому теперь (исследовал MT5_b5233) расчетные данные хранятся на диске.
Пункт 3 существенно снижает требования к объему RAM, т.к. расчетные данные попадают в RAM последовательным чтением с диска небольшими порциями.
Выводы.
Конечно, нужно иметь достаточно свободного места на диске под соответствующее количество копий подготовленных для расчетов котировочных данных.
Соответственно, требуются и высокие скоростные показатели чтения (не записи) с диска. Как правило, это не играет существенной роли, т.к. пользователи запускают столь тяжелые расчеты (Маркет-продукты алгоритмически написаны безграмотно), что чтение с диска в них занимает небольшое влияние на итоговую производительность.
Однако, для особых случаев, как и раньше, имеет смысл использовать RAMDrive. И если раньше, когда данные хранились в памяти, RAMDrive мог быть небольшим, то теперь требуется регулировать его размер перед запуском оптимизации. Однако, суммарное потребление памяти при использовании RAMDrive не поменялось.