Автоматизация MT5-Тестера потребовала параллельного использования нескольких Тестеров на одной машине: оптимизация (MultiTester) и одиночные проходы (Validate и TesterDashboard). Необходимость продиктована экономией времени и вычислительных ресурсов. Например, если делаете одиночные проходы, то работает только одно ядро, остальные - простаивают, а могли бы работать параллельно.
Ниже пойдет речь о том, как технически реализовать схему параллельной работы.
Для полного контроля за историческими данными торговых символов использую в Тестере только кастомные символы. Поэтому готовый рецепт только для них. И, конечно, обязателен portable-режим работы Терминалов.
Все довольно легко можно сделать и руками, но для облегчения немного автоматизировал: в корне папки Терминала запускается такой bat-файл.
@echo Make sure the source terminal is closed! @timeout /T -1 @set SINGLETESTER="SingleTester" mkdir %SINGLETESTER% copy *.exe %SINGLETESTER%\*.exe mkdir %SINGLETESTER%\MQL5 mklink /j %SINGLETESTER%\MQL5\Experts MQL5\Experts mklink /j %SINGLETESTER%\MQL5\Scripts MQL5\Scripts xcopy MQL5\Profiles %SINGLETESTER%\MQL5\Profiles /I/E/D/Y xcopy config %SINGLETESTER%\config /I/E/Y xcopy bases %SINGLETESTER%\bases /I/Y xcopy bases\Custom %SINGLETESTER%\bases\Custom /I/E/D/Y @echo Details: https://www.mql5.com/ru/blogs/post/748365 @timeout /T -1 @set "SINGLETESTER="
После чего создается SingleTester-папка, в которой присутствует все для запуска копии Терминала.
После запуска копии в TaskManager оба Терминала выглядят следующим образом.
После этого можно использовать несколько Тестеров параллельно.
На скрине видно, что 18 агентов работают от имени одного Терминала (оптимизация), а один - другого (одиночные проходы). Обратите внимание на выделенный на скрине адрес каждого агента: 127.0.0.1:30xx. Они не пересекаются. Т.е. каждое ядро CPU занято своим агентом. MT5 распределяет агенты правильным образом.
ЗЫ Важно закрывать Терминал-источник перед запуском bat-файла, т.к. свежие hcc-файлы недоступны для копирования. К сожалению, решение через mklink для клонирования bases-папки не подходит по той же причине.