Требуется директива #property tester_folder по аналогии сдирективой #property tester_file

 

Изначально задача ставилась так: создать советник, который бы торговал несколько set-файлов одновременно, кол-во торгуемых советником set-файлов в принципе неограничено, ну или ограничено общей производительностью компьютера, торгового сервера, скоростью сети и т.п.

Сами set-файлы создаются в тестере стратегий MT5 с помощью базового советника, назовем его EA1. Найденные таким образом set-файлы складываются в определенный каталог (папку). После этого запускается советник EA2, у которого есть только один input-параметр: имя указанной выше папки. Так вот, если запустить советник EA2 в онлайне, то все работает, как и должно. Но вот запустить советник EA2 в тестере стратегий не удается до тех пор, пока в код советника EA2 не вставишь соответствующие директивы с явными именами всех set-файлов:

#property tester_file "(1)BREXIT-FX v.2.2 EURUSD H1 D1.set"
#property tester_file "(2)BREXIT-FX v.2.2 EURUSD H1 D2.set"
#property tester_file "(3)BREXIT-FX v.2.2 EURUSD H1 D3.set"
#property tester_file "(4)BREXIT-FX v.2.2 EURUSD H1 D4.set"
#property tester_file "(5)BREXIT-FX v.2.2 EURUSD H1 D5.set"
...
#property tester_file "(18)BREXIT-FX v.2.2 EURUSD H1 D1.set"
#property tester_file "(19)BREXIT-FX v.2.2 EURUSD H1 D2.set"
#property tester_file "(20)BREXIT-FX v.2.2 EURUSD H1 D3.set"

Согласитесь, это как минимум неудобно, когда имена файлов и их кол-во заранее неизвестно. Отсюда возникает вопрос, нельзя ли по аналогии и наряду с директивой #property tester_file добавить в MQL директиву #property tester_folder, в которой указать тестеру имя папки, содержащей сразу все необходимые советнику файлы?

Вопрос, конечно, в первую очередь адресован разработчикам языка, но прошу также откликнуться тех, кто уже сталкивался с аналогичной проблемой по какому-либо поводу. А пока такой директивы #property tester_folder в языке нет, хотелось бы также услышать, какое решение можно использовать сейчас для чтения неограниченного, заранее неизвестного кол-ва файлов в случае, если советник запускается в тестере стратегий.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

Писать в один файл - свой формат.

 
fxsaber: Писать в один файл - свой формат.

т.е. написать скрипт, который из нескольких set-файлов создаст один единый set-файл? Ну что ж, как вариант, вполне подойдет, да и потребует минимального кол-ва подготовительных действий перед прогоном советника EA2, спасибо.

 
Eugene Myzrov:

Напишите, пожалуйста, в СД про директиву #property tester_folder. Идея очень даже здравая.

Я бы только добавил ограничение на размер передаваемой папки < 1 МБ и расширение файлов. Иначе все будут злоупотреблять - не заморачиваясь, прописывать передачу всей песочницы.

 
fxsaber: Напишите, пожалуйста, в СД про директиву #property tester_folder. Идея очень даже здравая. Я бы только добавил ограничение на размер передаваемой папки <1 МБ и расширение файлов. Иначе все будут злоупотреблять - не заморачиваясь, прописывать передачу всей песочницы.

отправил предложение в сервис-деск, ну а насчет дополнительных ограничений - согласен, это могло бы, например, выглядеть так

#property tester_folder_name        "folder_name"        // имя вложенной папки \MQL5\Files\folder_name\
#property tester_folder_filter         "*.set"                    // шаблон для фильтрации файлов в папке
#property tester_folder_size             1.5                      // макс. размер файлов, отобранных по фильтру, Мб

Хотя, как говорится, ученого учить, только портить, разработчики MQL, как самые заинтересованные люди, придумают здесь что-нибудь поинтересней...

 

У меня - сделано именно так, как предлагает fxsaber.

Работают сразу куча сетов. Единственное - у меня они не в отдельном файле, а прямо в тексте советника. Мне кажется, что гораздо проще и надежнее иметь один модуль безо всяких настроек, чем возиться с установками.

 
George Merts: У меня - сделано именно так, как предлагает fxsaber. Работают сразу куча сетов. Единственное - у меня они не в отдельном файле, а прямо в тексте советника. Мне кажется, что гораздо проще и надежнее иметь один модуль безо всяких настроек, чем возиться с установками.

Следствием такого подхода будет постоянная перекомпиляция советника, если потребуется изменить хотя бы один параметр. Если советник был заказан вместе с исходным кодом, то как вариант может и пройдет, и то, если заказчик согласится компилировать советник после каждой корректировки параметров. А если у пользователя нет исходного кода, то тогда у него не будет и возможности изменять настройки советника. Нет, настройки советника все-таки надо хранить отдельно от его кода.

Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
Eugene Myzrov:

Следствием такого подхода будет постоянная перекомпиляция советника, если потребуется изменить хотя бы один параметр. Если советник был заказан вместе с исходным кодом, то как вариант может и пройдет, и то, если заказчик согласится компилировать советник после каждой корректировки параметров. А если у пользователя нет исходного кода, то тогда у него не будет и возможности изменять настройки советника. Нет, настройки советника все-таки надо хранить отдельно от его кода.

Разумеется. Я именно так и делаю, и мне это очень нравится.

Но, действительно - этот вариант годится "для себя". Для заказчика - не пойдет.

Однако, я сомневаюсь, что заказчик обрадуется необходимости выставлять файлы сетов. Как я вижу, большинство заказчиков хотели бы, чтобы в советнике была только одна настройка - кнопка "рубить бабло". В крайнем случае еще и вторая кнопка "рубить огромное бабло". А все эти сеты - только мешают. Даже когда он один. Когда же их десяток - думаю, это отпугнет большую часть заказчиков.

 
Eugene Myzrov:

Изначально задача ставилась так: создать советник, который бы торговал несколько set-файлов одновременно, кол-во торгуемых советником set-файлов в принципе неограничено, ну или ограничено общей производительностью компьютера, торгового сервера, скоростью сети и т.п.

Сами set-файлы создаются в тестере стратегий MT5 с помощью базового советника, назовем его EA1. Найденные таким образом set-файлы складываются в определенный каталог (папку). После этого запускается советник EA2, у которого есть только один input-параметр: имя указанной выше папки. Так вот, если запустить советник EA2 в онлайне, то все работает, как и должно. Но вот запустить советник EA2 в тестере стратегий не удается до тех пор, пока в код советника EA2 не вставишь соответствующие директивы с явными именами всех set-файлов:

Согласитесь, это как минимум неудобно, когда имена файлов и их кол-во заранее неизвестно. Отсюда возникает вопрос, нельзя ли по аналогии и наряду с директивой #property tester_file добавить в MQL директиву #property tester_folder, в которой указать тестеру имя папки, содержащей сразу все необходимые советнику файлы?

Вопрос, конечно, в первую очередь адресован разработчикам языка, но прошу также откликнуться тех, кто уже сталкивался с аналогичной проблемой по какому-либо поводу. А пока такой директивы #property tester_folder в языке нет, хотелось бы также услышать, какое решение можно использовать сейчас для чтения неограниченного, заранее неизвестного кол-ва файлов в случае, если советник запускается в тестере стратегий.


Категорически против!

Функционала даже больше чем предостаточно. После каждого добавления функционала потом месяцами баги отлавливать.

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

 
Sergey Chalyshev:

Категорически против!

#property tester_folder_name "\\Folder1\\Folder2" // Перенос папки из песочницы Терминала в песочницу Агента

Есть папка Termial'\MQL5\Files\Folder1\Folder2\  с какими-то файлами.

При наличии такой директивы тестер перед прогоном создает папку Terminal\Tester\Agent-127.0.0.1-3000\MQL5\Files\Folder1\Folder2\ с таким же содержимым (все файлы, включая подпапки).

Тогда через файловые операции советнику в тестере доступны те же данные, что и в онлайн-режиме.

Это очень удобно! А вот как и кто будет использовать данную возможность - это уже о другом.


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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Требуется директива #property tester_folder по аналогии сдирективой #property tester_file

fxsaber, 2017.11.02 08:55

ограничение на размер передаваемой папки < 1 МБ и расширение файлов. Иначе все будут злоупотреблять - не заморачиваясь, прописывать передачу всей песочницы.

 
Sergey Chalyshev: Категорически против! Функционала даже больше чем предостаточно. После каждого добавления функционала потом месяцами баги отлавливать. Если хотите запомнить все существующие котировки и потом использовать их в тестере, лучше используйте нейросеть. Не так сильно будет заметно, что вы подглядываете в историю.


А зачем вообще "запоминать существующие котировки и потом использовать их в тестере", я честно говоря не понял. Задача лежит в другой плоскости, как прочитать, находясь в тестере стратегий, заранее неизвестное кол-во файлов, не прописывая их имена явно в советнике с помощью директивы  #property tester_file. Полагаю, что и "нейросеть" здесь не пригодится.

А добавление нового функционала - это естественный процесс развития в любом деле, без такого развития язык MQL на сегодняшний день имел бы бледный вид, но, слава Б-гу, это не так.

Причина обращения: