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

MQL5 ライブラリ その他

仕事が完了した

実行時間4 日
依頼者からのフィードバック
Возможно, я не самый комфортный заказчик, но нам удалось найти с разработчиком общий язык, работу выполнял быстро, идею требований понимал четко, где-то даже делал красивей, удобней, чем ожидалось.
開発者からのフィードバック
Хороший заказчик. Большое спасибо за интересный проект.

指定

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


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

応答済み

1
開発者 1
評価
(34)
プロジェクト
55
31%
仲裁
8
0% / 63%
期限切れ
13
24%
パブリッシュした人: 22 articles, 1 code
2
開発者 2
評価
(49)
プロジェクト
134
27%
仲裁
62
13% / 53%
期限切れ
58
43%
パブリッシュした人: 277 articles, 1 code
3
開発者 3
評価
(51)
プロジェクト
66
30%
仲裁
2
0% / 0%
期限切れ
0
4
開発者 4
評価
(15)
プロジェクト
37
62%
仲裁
1
0% / 100%
期限切れ
1
3%
パブリッシュした人: 1 article, 29 codes
5
開発者 5
評価
プロジェクト
0
0%
仲裁
0
期限切れ
0
6
開発者 6
評価
(3)
プロジェクト
4
50%
仲裁
1
0% / 100%
期限切れ
0
7
開発者 7
評価
(69)
プロジェクト
146
34%
仲裁
13
8% / 62%
期限切れ
26
18%
パブリッシュした人: 6 codes

プロジェクト情報

予算
200 - 300 USD
締め切り
最高 10 日