Писать в один файл - свой формат.
т.е. написать скрипт, который из нескольких set-файлов создаст один единый set-файл? Ну что ж, как вариант, вполне подойдет, да и потребует минимального кол-ва подготовительных действий перед прогоном советника EA2, спасибо.
Напишите, пожалуйста, в СД про директиву #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.
Работают сразу куча сетов. Единственное - у меня они не в отдельном файле, а прямо в тексте советника. Мне кажется, что гораздо проще и надежнее иметь один модуль безо всяких настроек, чем возиться с установками.
Следствием такого подхода будет постоянная перекомпиляция советника, если потребуется изменить хотя бы один параметр. Если советник был заказан вместе с исходным кодом, то как вариант может и пройдет, и то, если заказчик согласится компилировать советник после каждой корректировки параметров. А если у пользователя нет исходного кода, то тогда у него не будет и возможности изменять настройки советника. Нет, настройки советника все-таки надо хранить отдельно от его кода.
- www.metatrader5.com
Следствием такого подхода будет постоянная перекомпиляция советника, если потребуется изменить хотя бы один параметр. Если советник был заказан вместе с исходным кодом, то как вариант может и пройдет, и то, если заказчик согласится компилировать советник после каждой корректировки параметров. А если у пользователя нет исходного кода, то тогда у него не будет и возможности изменять настройки советника. Нет, настройки советника все-таки надо хранить отдельно от его кода.
Разумеется. Я именно так и делаю, и мне это очень нравится.
Но, действительно - этот вариант годится "для себя". Для заказчика - не пойдет.
Однако, я сомневаюсь, что заказчик обрадуется необходимости выставлять файлы сетов. Как я вижу, большинство заказчиков хотели бы, чтобы в советнике была только одна настройка - кнопка "рубить бабло". В крайнем случае еще и вторая кнопка "рубить огромное бабло". А все эти сеты - только мешают. Даже когда он один. Когда же их десяток - думаю, это отпугнет большую часть заказчиков.
Изначально задача ставилась так: создать советник, который бы торговал несколько set-файлов одновременно, кол-во торгуемых советником set-файлов в принципе неограничено, ну или ограничено общей производительностью компьютера, торгового сервера, скоростью сети и т.п.
Сами set-файлы создаются в тестере стратегий MT5 с помощью базового советника, назовем его EA1. Найденные таким образом set-файлы складываются в определенный каталог (папку). После этого запускается советник EA2, у которого есть только один input-параметр: имя указанной выше папки. Так вот, если запустить советник EA2 в онлайне, то все работает, как и должно. Но вот запустить советник EA2 в тестере стратегий не удается до тех пор, пока в код советника EA2 не вставишь соответствующие директивы с явными именами всех set-файлов:
Согласитесь, это как минимум неудобно, когда имена файлов и их кол-во заранее неизвестно. Отсюда возникает вопрос, нельзя ли по аналогии и наряду с директивой #property tester_file добавить в MQL директиву #property tester_folder, в которой указать тестеру имя папки, содержащей сразу все необходимые советнику файлы?
Вопрос, конечно, в первую очередь адресован разработчикам языка, но прошу также откликнуться тех, кто уже сталкивался с аналогичной проблемой по какому-либо поводу. А пока такой директивы #property tester_folder в языке нет, хотелось бы также услышать, какое решение можно использовать сейчас для чтения неограниченного, заранее неизвестного кол-ва файлов в случае, если советник запускается в тестере стратегий.
Категорически против!
Функционала даже больше чем предостаточно. После каждого добавления функционала потом месяцами баги отлавливать.
Если хотите запомнить все существующие котировки и потом использовать их в тестере, лучше используйте нейросеть. Не так сильно будет заметно, что вы подглядываете в историю.
Категорически против!
#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 МБ и расширение файлов. Иначе все будут злоупотреблять - не заморачиваясь, прописывать передачу всей песочницы.
А зачем вообще "запоминать существующие котировки и потом использовать их в тестере", я честно говоря не понял. Задача лежит в другой плоскости, как прочитать, находясь в тестере стратегий, заранее неизвестное кол-во файлов, не прописывая их имена явно в советнике с помощью директивы #property tester_file. Полагаю, что и "нейросеть" здесь не пригодится.
А добавление нового функционала - это естественный процесс развития в любом деле, без такого развития язык MQL на сегодняшний день имел бы бледный вид, но, слава Б-гу, это не так.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Изначально задача ставилась так: создать советник, который бы торговал несколько set-файлов одновременно, кол-во торгуемых советником set-файлов в принципе неограничено, ну или ограничено общей производительностью компьютера, торгового сервера, скоростью сети и т.п.
Сами set-файлы создаются в тестере стратегий MT5 с помощью базового советника, назовем его EA1. Найденные таким образом set-файлы складываются в определенный каталог (папку). После этого запускается советник EA2, у которого есть только один input-параметр: имя указанной выше папки. Так вот, если запустить советник EA2 в онлайне, то все работает, как и должно. Но вот запустить советник EA2 в тестере стратегий не удается до тех пор, пока в код советника EA2 не вставишь соответствующие директивы с явными именами всех set-файлов:
Согласитесь, это как минимум неудобно, когда имена файлов и их кол-во заранее неизвестно. Отсюда возникает вопрос, нельзя ли по аналогии и наряду с директивой #property tester_file добавить в MQL директиву #property tester_folder, в которой указать тестеру имя папки, содержащей сразу все необходимые советнику файлы?
Вопрос, конечно, в первую очередь адресован разработчикам языка, но прошу также откликнуться тех, кто уже сталкивался с аналогичной проблемой по какому-либо поводу. А пока такой директивы #property tester_folder в языке нет, хотелось бы также услышать, какое решение можно использовать сейчас для чтения неограниченного, заранее неизвестного кол-ва файлов в случае, если советник запускается в тестере стратегий.