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

MQL5 Bibliotheken Sonstiges

Auftrag beendet

Ausführungszeit 4 Tage
Bewertung des Kunden
Возможно, я не самый комфортный заказчик, но нам удалось найти с разработчиком общий язык, работу выполнял быстро, идею требований понимал четко, где-то даже делал красивей, удобней, чем ожидалось.
Bewertung des Entwicklers
Хороший заказчик. Большое спасибо за интересный проект.

Spezifikation

Не достаточно глубоко знаком с возможностями 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.    Запуск процедуры тестирования разовое для одной стратегии (не требует вмешательства по ходу – а-ля перезапускать для каждого символа или чего-т подобного), т.е. настроил, запустил, периодически поглядываешь, когда видишь, что объем данных достаточен – прерываешь (пользователь прерывает) процесс.


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

Bewerbungen

1
Entwickler 1
Bewertung
(34)
Projekte
55
31%
Schlichtung
8
0% / 63%
Frist nicht eingehalten
13
24%
Frei
Veröffentlicht: 22 Artikel, 1 Beispiel
2
Entwickler 2
Bewertung
(49)
Projekte
134
27%
Schlichtung
62
13% / 53%
Frist nicht eingehalten
58
43%
Frei
Veröffentlicht: 277 Artikel, 1 Beispiel
3
Entwickler 3
Bewertung
(51)
Projekte
66
30%
Schlichtung
2
0% / 0%
Frist nicht eingehalten
0
Frei
4
Entwickler 4
Bewertung
(15)
Projekte
37
62%
Schlichtung
1
0% / 100%
Frist nicht eingehalten
1
3%
Frei
Veröffentlicht: 1 Artikel, 29 Beispiele
5
Entwickler 5
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
6
Entwickler 6
Bewertung
(3)
Projekte
4
50%
Schlichtung
1
0% / 100%
Frist nicht eingehalten
0
Frei
7
Entwickler 7
Bewertung
(69)
Projekte
146
34%
Schlichtung
13
8% / 62%
Frist nicht eingehalten
26
18%
Frei
Veröffentlicht: 6 Beispiele

Projektdetails

Budget
200 - 300 USD
Ausführungsfristen
bis 10 Tag(e)