Оптимизатор для бэктестов рандомных комбинаций рандомных значений параметров стратегии. С записью потранзакционных результатов прогонов в файл.

MQL5 Bibliotecas Outros

Trabalho concluído

Tempo de execução 4 dias
Comentário do cliente
Возможно, я не самый комфортный заказчик, но нам удалось найти с разработчиком общий язык, работу выполнял быстро, идею требований понимал четко, где-то даже делал красивей, удобней, чем ожидалось.
Comentário do desenvolvedor
Хороший заказчик. Большое спасибо за интересный проект.

Termos de Referência

Не достаточно глубоко знаком с возможностями MQL5 и MetaTrader 5, поэтому описываю функционально как это должно выглядеть, по форме не знаю, как это может выглядеть (скрипт, библиотека, программный запуск отдельных версий mt5 или без этого и т.д.). Для простоты дальше буду называть это «приложением».

 

Суть и назначение приложения:

Есть некая (планируется использовать этот флоу для всех стратегий) стратегия, которая содержит некоторое кол-во параметров (задающихся через ключевое слово input). Необходимо генерировать рандомные комбинации значений параметров (в рамках их min, max, step), инициировать прогон для каждой комбинации, по итогам прогона писать потранзакционные результаты прогона в файл.

 

Функциональные требования:

1.    Задействование многопоточности (если процессор имеет большое число ядер – все они задействуются).

2.   Результаты пишутся в файл по итогам каждого прогона (где прогон – бэктест на одном тикере для одной комбинации значений параметров). Т.е. прошло 5 минут – записались результаты, например, 25 прогонов, прошел час – итого записались результаты 130 прогонов.

3.    При записи потранзакционных результатов прогона пишутся все сделки с их результатами, а так же значениями параметров стратегии для данного прогона. Записать в csv формат. В примере поля основные, вроде, привел, лучше побольше полей писать. Пример:

strategy_params;position_entry_datetime;position_comment;entry_price;profit;ticker

window=10,sma_window=10,k=2.7;10.11.2021 10:00:00;”входим по тренду”;10.5;127;SBER

4.    Тестирование производится по набору инструментов (тикеров). Срандомили кобминацию значений параметров – прогнали эту комбинацию для каждого из тикеров из набора. Дальше следующая рандомная комбинация значений параметров – прогнали её по всем тикерам.

5.   Стратегии могут обрабатывать событие OnTick() поэтому подавать тикер при прогоне как параметр нельзя, нужен какой-то другой механизм, как я понимаю. Т.е. стратегия всегда берет тикер из _Symbol, закладываемся на это.

6.    Комбинации значений параметров генерятся бесконечно, т.е. прерывание процесса только от пользователя. Не обязательно изящно, можно удалением скрипта с графика или аналогичным способом.

7.    Потранзакционные результаты пишутся после каждого прогона (тикер-набор значений параметров).

8.    Запуск процедуры тестирования разовое для одной стратегии (не требует вмешательства по ходу – а-ля перезапускать для каждого символа или чего-т подобного), т.е. настроил, запустил, периодически поглядываешь, когда видишь, что объем данных достаточен – прерываешь (пользователь прерывает) процесс.


Готовое приложение передается вместе с исходными файлами.

Respondido

1
Desenvolvedor 1
Classificação
(34)
Projetos
55
31%
Arbitragem
8
0% / 63%
Expirado
13
24%
Livre
Publicou: 22 artigos, 1 código
2
Desenvolvedor 2
Classificação
(49)
Projetos
134
27%
Arbitragem
62
13% / 53%
Expirado
58
43%
Livre
Publicou: 277 artigos, 1 código
3
Desenvolvedor 3
Classificação
(51)
Projetos
66
30%
Arbitragem
2
0% / 0%
Expirado
0
Livre
4
Desenvolvedor 4
Classificação
(15)
Projetos
37
62%
Arbitragem
1
0% / 100%
Expirado
1
3%
Livre
Publicou: 1 artigo, 29 códigos
5
Desenvolvedor 5
Classificação
Projetos
0
0%
Arbitragem
0
Expirado
0
Livre
6
Desenvolvedor 6
Classificação
(3)
Projetos
4
50%
Arbitragem
1
0% / 100%
Expirado
0
Livre
7
Desenvolvedor 7
Classificação
(69)
Projetos
146
34%
Arbitragem
13
8% / 62%
Expirado
26
18%
Livre
Publicou: 6 códigos

Informações sobre o projeto

Orçamento
200 - 300 USD
Prazo
para 10 dias