Несколько MT5-тестеров параллельно на одной машине.

21 марта 2022, 13:01
fxsaber
0
391

Автоматизация 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-папки не подходит по той же причине.