Перейти к содержанию

Скрипт автоматизации тестирования советников ConveyerMT на Excel VBA


Рекомендуемые сообщения

Скрипт автоматизации тестирования советников … Опубликовано

Предлагаю пользоваться автоматизатором задач тестирования большого количества сетов в МТ5, их сравнения и подбора оптимальных сочетаний в корзины, написанным для себя для облегчения жизни)  

Для работы нужен только excel, начиная с 2007 версии. Скрипт взаимодействует только с МТ5 и ходит в интернет за историей валют.

Начально описание прилагается ниже. Снято обзорное видео. Напишите, что хотите видеть на видео.

Кто разработчик в VBA, может улучшить структуру кода, т.к. написано любительски, и предложить свой доп. функционал для включения в меню "конвеера". Кто решится переносить код в свои разработки, оставляйте ссылки на автора.

Только МТ5.

 

В архиве находится файл xlsm с примером расчёта корзины Setka M0kass_5_lite, который был родителем боевого счёта копирования автора. 

Сеты запускались на двух машинах и тестировались под 3 типами счетов Roboforex. Есть проблемы с МТ5, когда терминал "успешно" отдает результаты тестирования, но по факту есть пропуски в загрузках истории терминалом, о которых можно только косвенно узнать при изучении отчета МТ. Возможно, вариант с внешним гарантированным поставщиком тиков с равномерной плотностью будет лучше, чем МТ5.

 

В списке буду вести предложения для доработок:

1) добавить графики валютных пар и размеры позиций по каждому сету на них.

2) упростить работу с параметрами из сетов на листе SETs: строковые числа, транспонирование таблицы на отдельный лист и обратно.

 

2023-07-27_10-34-57.png

 

 

21.09.2024 новый релиз 1.11.1 выложен вложением. Описание не поменялось.

Исправлено: 

30.09.2023    1.10.10    Добавлена загрузка депозита в Equity, исправлена запись "Нет Equity", добавлена очистка 4 ячеек на Result1
01.03.2024    1.10.11    Исправление формат лога "D.HH:MM", доработка Menu4_MTReportsProcessing и Menu4_MTtasksHandler на распознавание отсутствия графика png
26.03.2024    1.10.11    Испр макс дата расчета эквити на текущую дату, испр. ошибка очистки строки в Menu4_PNG2Cell
19.05.2024    1.10.11    Добавлена обработка пустых значений данных графиков RemoveNaNCells в Menu8_ChartsUpdate
11.06.2024    1.10.11    Добавлено условие поиска заголовка на англ.языке Deals в отчетах МТ5
02.07.2024    1.10.12    Изменен расчет просадки внутри дня со сделками (добавлен параметр в коде), теперь нет расчёта внутридневной просадки от мин-макс дневного бара, а только используются имеющиеся строки из отчёта МТ5, в связи с чем могут пропускаться сильные движения внутри дня, но не забраковываются много сетов, которые не сливались в тестах МТ5.
 

Известные проблемы и неудобства на текущий момент:

  1. МТ4 нет, только МТ5
  2. Если сортировать лист Result1, то не сортируются вторая колонка графиков
  3. Лимит записей сделок из отчетов МТ по всем выполненным тестам - 1 млн., поэтому максимально до 100 сетов можно запустить на 7 лет горизонта (если другой горизонт, то пропорционально считайте)  
  4. Часто приходится включать на первом листе [Tester]ShutdownTerminal в 1, что бы прочитать лог терминала и понять причину прекращения тестов, потом возвращать в 0 (иначе не находит отчёт МТ после ручного закрытия МТ)
  5. Нужно вручную удалять зеленые колонки (опциональные) на листе SETs или править чёрные, если импортировать сеты под новые версии советников, где изменились обязательные параметры

 

За год использования выполнено тестов ~100 суток и основной сценарий использования такой:

  1. Отбираются интересуемые сеты в папку, импортируются на SETs, проверяются, удаляются незначимые зеленые колонки параметров,
  2. Размножаются строки вниз на SETs загруженных сетов и задаётся в них вариативность нужных параметров,
  3. Задаются в начале SETs параметры разных терминалов МТ5 для ускорения тестов (параллельные запуски, например Ducas + Roboforex) и запускается конвейер,
  4. Не выполненные строки анализируются причины и запускаются повторно пока не будет накоплено МТ отчетов для работы,
  5. Если по мини-графикам из МТ-отчетов видно ,что сет плохой, то такие строки выключаются в Вкл=0 на SETs, по остальным запускается расчёт Equity,
  6. По рассчитанным Equity далее уже строятся большие графики на Result2 и накидываются сеты в корзины, смотрим общие графики корзин,
  7. Оставляем Вкл=1 по тем строкам, которые нужно выгрузить в файлы типа *.set, выгружаем из SETs в новые set файлы и далее повторяем с п.1 для уже финальной проверки перед выкладкой в "бой".

 

Краткое описание программы ConveyerMT5.pdf

 

ConveyerMT5_v1.11.1.Demo.xlsm

Изменено пользователем kDelu
релиз 1.11.1
  • Лайк 11
  • Спасибо 1
  • Огонь! 5
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 65
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Предлагаю пользоваться автоматизатором задач тестирования большого количества сетов в МТ5, их сравнения и подбора оптимальных сочетаний в корзины, написанным для себя для облегчения жизни)   Для

Перейти

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

Перейти

Выложил новый релиз 1.10.7.  В поле Conveyer Log будут складываться ошибки копирования. Можно скопировать в 1.10.7 содержимое листов GenParams, SETs из 1.10.4 поверх и попробовать выполнить задач

Перейти
Скрипт автоматизации тестирования советников … Опубликовано

Добрый день, коллега. Не могу запустить тестирование. Не запускается терминал. Посмотрите, что не так делаю. Скрины ниже.

1.png

11.png

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
9 минут назад, alextron сказал:

Не запускается терминал. Посмотрите, что не так делаю.

Выглядит, будто не запускается терминал. Причины - возможно он другой папке.

Поставьте 0 в параметре [Tester]ShutdownTerminal в 84 строке на первом листе. Оставьте Вкл только 1 строку на листе SETs и запустите в меню 4 команду. Должен открыться МТ5 и не закрываться в конце задачи. Далее по ситуации - либо он будет занят задачей, либо в своем логе напишет диагностику. От нее дальше нужно разбираться. Может не логинится к брокеру, может мод не видит в Experts, .. После починки вернуть 1 [Tester]ShutdownTerminal

 

Еще я только что перезалил архив с самой последней версией, но на эту проблему она не влияет.

Изменено пользователем kDelu
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

Метотрейдер запускается, не проходит инициализация, не проходят настройки тестера... Как посмотреть, где тормозится?

Вручную тестер запускается, все ок.

Может это влияет, я тестирую на котировках от Дукаса, которые находятся в папке 

 

23.png

22.png

Изменено пользователем alextron
ошибка
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
2 часа назад, kDelu сказал:

Оставьте Вкл только 1 строку на листе SETs и запустите в меню 4 команду. Должен открыться МТ5 и не закрываться в конце задачи.

После выполнения рекомендаций выше, найдите лог в папке терминала ..\logs\20230728.log и посмотрите там ошибки или выложите.

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

еще, вдогонку, если будет время, посмотрите:

 1. У меня два монитора, при запуске программы на 2м , не основном мониторе иконка меню выходит за пределы монитора на котором раскрывается программа. Можно сделать, чтобы иконка меню открывалась на том-же мониторе?

 2. при случайных ошибочных действиях, программа зависает . Можно ли сделать так чтобы был какой-то аварийный останов, чтобы не надо было перезагружать программу снова?

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

лог терминала, за последнее время:

 

LI    0    21:47:06.661    Terminal    exit with code 0
PN    0    21:47:06.665    Network    '51730608': disconnected from Alpari-MT5-Demo
CG    0    21:47:06.743    Terminal    stopped with 0
LG    0    21:47:06.750    Terminal    shutdown with 0
HS    0    21:47:36.387    Startup    successfully initialized from start config "C:\Users\alext\Desktop\setka\Jocker\Результаты\1690580854_51730608_1.ini"
ML    0    21:47:36.504    Terminal    Alpari MT5 x64 build 3802 started for Alpari
JO    0    21:47:36.504    Terminal    Windows 10 build 19045, 4 x Intel Core i7-6500U  @ 2.50GHz, AVX, 2 / 7 Gb memory, 82 / 237 Gb disk, UAC, GMT+5
KL    0    21:47:36.504    Terminal    C:\Users\alext\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685
GD    0    21:47:36.504    Terminal    launched with C:\Users\alext\Desktop\setka\Jocker\Результаты\1690580854_51730608_1.ini
OG    2    21:47:38.248    Tester    Experts\(EA) - Setka v1.46-RSI-CCI-AS.ex5 not found
NP    0    21:47:38.742    Network    '51730608': authorized on Alpari-MT5-Demo through MT5-Demo.Europe.3:1119 (ping: 81.11 ms, build 3661)
FR    0    21:47:38.742    Network    '51730608': previous successful authorization performed from 94.140.133.142 on 2023.07.28 19:28:47
JM    0    21:47:39.469    Network    '51730608': terminal synchronized with Alpari: 0 positions, 0 orders, 747 symbols, 0 spreads
MP    0    21:47:39.469    Network    '51730608': trading has been enabled - hedging mode
 

 

в журнале тестера, последняя запись:

 

2023.07.28 21:47:38.248    Tester    Experts\(EA) - Setka v1.46-RSI-CCI-AS.ex5 not found

 

так понимаю. не может найти советника...

советник в папке   C:\Users\alext\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Experts\Advisors

 

 

где настроить, чтобы он шел в   Advisors  а не  в   Experts ?

Изменено пользователем alextron
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
3 минуты назад, alextron сказал:

Experts\(EA) - Setka v1.46-RSI-CCI-AS.ex5 not found

Вам нужно положить в папку правильный файл советника и его имя вписать в параметр [Tester]Expert на 1 листе. Видно же в логе)

 

12 минут назад, alextron сказал:

У меня два монитора, при запуске программы на 2м , не основном мониторе иконка меню выходит за пределы монитора

Надо тестировать. Можно подключить горячую клавишу к кнопке, как пока не скажу

 

13 минут назад, alextron сказал:

при случайных ошибочных действиях, программа зависает

Есть кнопка Остановить - она заканчивает цикл по задачам. Если вообще все тормозит, то слабое железо для Excel + MT

 

28 минут назад, alextron сказал:

я тестирую на котировках от Дукаса, которые находятся в папке

Такой режим не тестировался. Только пока МТ5 + котировки брокера. Если заработает с файлами, буду рад.  Коды пар там 6 символьные?

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
5 минут назад, kDelu сказал:

Коды пар там 6 символьные?

да, 6-ти символьные.

 

Бинго! Заработало, но на дефолтных котировках.   

Хотелось бы на Дукосовских... дефолтные, часто дырявые/плохого качества, и чем глубже история, тем хуже качество...

Изменено пользователем alextron
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
19 минут назад, alextron сказал:

Хотелось бы на Дукосовских..

По идее, не видя связку, сам терминал получает команды через ini. Если бы коды тикеров были 6 символьные, то должно было автоматом запуститься. Но я вижу они 10 символьные  на скрине "EURGBP_cust", а с такими не будет считать equity. Но если пока устроит только циклический запуск МТ с сохранением результатов в папках, то укажите EURGBP_cust в поле [Tester]Symbol на 1 или 2 листе.

На выходных могу доработать, если будете тестировать.

Изменено пользователем kDelu
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
31 минуту назад, kDelu сказал:

"EURGBP_cust"

Это название я сам придумал, там можно хоть как обозвать. Когда из тикстори копируешь в МТ5, можно хоть как обозвать...

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
2 минуты назад, alextron сказал:

EURGBP

Из интернета подкачиваются история котировок без пропусков для дальнейших расчётов графиков, а там используются общеизвестные 6 симв коды пар. С такими все должно работать. Если не получится переименовать, то нужно дорабатывать код.

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
11 часов назад, kDelu сказал:

Если не получится переименовать

переименовать получится, НО дефолтные названия пар присвоить не получается , надо снова закачать тикстори, к сожалению я убил файлы, очень уж они большие (порядка 17 Гб пара, если с 14 года), и снова из конвертировать в МТ5, можно как угодно  с 6 символьными. НО проблема, как в ini файле, указать, чтобы тестер брал их из другой папки? Дефолтная папка на скрине и папка с загруженными символами/парами.

Screenshot_20.png

Изменено пользователем alextron
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
1 час назад, kDelu сказал:

На выходных могу доработать, если будете тестировать.

Обязательно буду тестировать. В Вашем конвейере вижу большое будущее, кроме тестирования корзин,(пока не уверен, что будут корректные результаты, по сравнению с реальными торгами, по крайней мере можно будет отслеживать когда просадки по парам будут накладываться одна на другую, это уже хорошо...). А вот автоматизация тестирования и оптимизация сетов - очень круто, как мне кажется.=b 

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
26 минут назад, alextron сказал:

НО проблема, как в ini файле, указать, чтобы тестер брал их из другой папки? Дефолтная папка на скрине и папка с загруженными символами/парами.

В МТ должна соблюдаться уникальность названий пар. Не может быть два EURUSD, один дефолтный, второй от другого поставщика. Проверял.
Если МТ разрешит убить дефолтный код EURUSD и подгрузить историю в тоже название, то ничего менять не надо. Иначе - нужна доработка.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
10 часов назад, kDelu сказал:

В МТ должна соблюдаться уникальность названий пар.

Да, вы правы. К сожалению не удалось создать такое-же название пары, как дефолтное, хотя и в другой папке...

 

 

Загрузка курсов и цен, ошибка, в чем может быть причина?

 

Screenshot_21.png

Изменено пользователем alextron
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
2 часа назад, alextron сказал:

Загрузка курсов и цен, ошибка, в чем может быть причина?

Тут не видно причины, лучше нажимать Debug и скрин места в коде, где ошибка.

Вероятно нет ключа в поле AlphavantageAPIKey. В документации написано, куда сходить и где его взять. Лучше читать и делать по хэлпу, меньше постов будет.

 

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

Цифры понемногу увеличиваются,
 но процесса не видно...

Терминал не запускается


Пробовал несколько раз, до конца ни разу  не дошел.
зависает в разных местах

 

Вручную все тесты проходят.

Screenshot_24.png

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
1 час назад, alextron сказал:

но процесса не видно...

Терминал не запускается

Сколько ядер и памяти на машине?  Может в памяти висит терминал и его видно в менеджере задач?

 

7 минут назад, alextron сказал:

как изменять масштаб по оси времени, по оси Y ?

 

Диаграммы настроены автоматически на диапазон ОТ и ДО по всем включенным на листе Result 1 графикам. Я вижу длинный светлоголубой график рядом с 0. Можно посмотреть в таблице рядов с 30 колонки на том же листе Result 2, какие номера сетов не с 0 значениями идут с 2016 года, а потом их отключить на листе Result 1.

 

Есть еще ручной вариант настройки осей - это обычно как работаете с диаграммами excel. Щелкаете на ось на диаграмме, правый клик, Формат оси - далее верхняя и нижняя граница (скрин). Но таким способом при пересчете придется заново настраивать.

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
В 28.07.2023 в 22:59, kDelu сказал:

Если не получится переименовать, то нужно дорабатывать код.

Получится, ли доработать код, для пар/символов закачанных из других источников, в частности Dukascopy?

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
2 минуты назад, alextron сказал:

Получится, ли доработать код

Только вставил в первую тему новый релиз, где можно использовать кастомные символы.

Если начинать с чистого листа и с первого пункта меню, то действуйте по инструкции. Если хотите переносить содержимое листов в новый файл 1.10.4, то аккуратно копи-паст всех листов (SETs, Result1, Pairs, History, Equity) - переносить только строки без заголовков. Пока нет четких инструкций и описанных шишек как корректно переносить - на свой риск.

  • Огонь! 1
Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

Пытаюсь сделать расчеты эквити, маржин... 

выходит ошибка, что не указано плечо.

Screenshot_26.png

Screenshot_27.png

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано

В какое место и как загружать котировки инструмента с не дефолтным названием?

как можно указать, что для новой пары брать те же значения, что и для дефолтной  из  сервиса   API alphavantage.co

Screenshot_28.png

Ссылка на сообщение
Поделиться на другие сайты

Скрипт автоматизации тестирования советников … Опубликовано
В 29.07.2023 в 21:53, kDelu сказал:

Сколько ядер и памяти на машине? 

Ответьте.

38 минут назад, alextron сказал:

В какое место и как загружать котировки инструмента с не дефолтным названием?

В хэлпе дописал и пометил цветом. Указать на Pairs свое название в специальной колонке. Обновлять котировки не нужно. Запустить расчет Equity после этого и далее по задачам. Перезапускать терминал не нужно.

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...