Доброго дня!
Честно просидел час в поиске, но так и не нашел решения.
Задача следующая:
Есть несколько графиков разных валют, на всех стоит один и тот же эксперт.
Входные параметры для каждой валюты свои. Соответственно есть набор пресетов, по 1-му на каждую валюту.
Поскольку счетов несколько и компьютеров на которых они установлены тоже, очень мучительно каждый раз применять вручную на каждом МТ5 эти настройки для каждого графика.
Собственно вопрос: есть ли способ программно (MQL5) загрузить файл пресета в соответствии с Symbol() текущего графика?
p.s: видел варианты решения с парсингом текстовых файлов... но этот тот еще гемор. Валют много, настройки постоянно меняются/добавляются. При парсинге неизбежно что-то с чем-то перепутается...
При этом надо иметь способ наглядного контроля за параметрами (т.е. через закладку "Входные параметры" и сохранения текущих настроек в файл и последующей автоматической загрузкой этих параметров в зависимости от валюты текущего графика)
//+------------------------------------------------------------------+ //| Expert Save settings function | //+------------------------------------------------------------------+ void SaveSettings() { string file_name = Symbol() + ".dat"; int file_handle; file_handle = FileOpen(file_name, FILE_WRITE|FILE_BIN); if(file_handle != INVALID_HANDLE) { if(FileSeek(file_handle, 0, SEEK_CUR) == true) { FileWriteLong(file_handle, e_high); FileWriteLong(file_handle, a_profit); FileWriteLong(file_handle, e_low); FileWriteLong(file_handle, ord_delta_high); FileWriteLong(file_handle, ord_delta_low); FileWriteLong(file_handle, order_delta); FileWriteLong(file_handle, exit_delta); } else Print(__FUNCTION__, ": Файл ", Symbol(), ".dat Не установлен в начало!"); FileClose(file_handle); } else Print(__FUNCTION__, ": Invalid file handle ", Symbol(), ".dat"); } //+------------------------------------------------------------------+ //| Expert Load setings function | //+------------------------------------------------------------------+ void LoadSettings() { string file_name = Symbol() + ".dat"; int file_handle; if(FileIsExist(file_name, 0) == true) { file_handle = FileOpen(file_name, FILE_READ|FILE_BIN); if(file_handle != INVALID_HANDLE) { e_high = FileReadLong(file_handle); a_profit = FileReadLong(file_handle); e_low = FileReadLong( file_handle ); ord_delta_high = FileReadLong(file_handle); ord_delta_low = FileReadLong(file_handle); order_delta = FileReadLong(file_handle); exit_delta = FileReadLong(file_handle); FileClose(file_handle); } else Print(__FUNCTION__, ": Invalid file handle ", Symbol(), ".dat"); } else Print(__FUNCTION__, ": Не найден файл ", Symbol(), ".dat"); }
- 2015.09.02
- www.mql5.com
Судя по требованиям, очень похоже на профиль -- https://www.metatrader5.com/ru/terminal/help/charts_advanced/templates_profiles
Настроить один со всеми чартами и экспертами в одной папке, а во всех копиях терминалов создать ссылки на эту папку \MQL5\Profiles\Charts\номерсчета.
Без программирования.
- www.metatrader5.com
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2019.04.21 09:08
В Маркете неоднократно видел, что авторы прикладывают сет-файлы своих ТС для каждого символа. Соответственно, покупатели используют их.
Предлагаю для Маркет-ТС использовать следующую логику
- Добавляется один входной параметр
input string FolderSets = NULL; // Папка с сетами нашей ТС
- Если эта папка задана пользователем, то советник автоматом подхватывает все сеты из этой папки и запускает свои соответствующие версии.
- Пользователю нужно только поместить сет-файл в папку и прописать путь к этой папке при запуске советника (вшить этот путь сразу может и автор советника).
- Если пользователь ошибся и запускает дважды, то можно автоматически не давать этого делать.
Такой подход удобен и для запуска своих ТС одним нажатием.
Конечно, решение может быть универсальным для обеих платформ. Грубо говоря, в исходный код любого советника потребуется добавить только одну строку.
Скорее всего, именно так теперь буду запускать советники. Если кто-то видит изъян в таком методе или вариант улучшения, дайте знать.
ЗЫ Допустим, у пользователя уже крутятся советники с настроенными параметрами. Можно автоматически сохранить сет-файлы всех запущенных советников. И далее использовать вышестоящий подход.
ЗЗЫ На MT5 возможно запускать советник не через сет-файла, а через opt-файлы. Представьте, что запустили штатную оптимизацию советника и видите несколько хороших наборов входных параметров. Хочется именно их использовать одновременно - размазать риски для диверсификации. Для этого можно создать свой opt-файл, в котором будут присутсвовать только избранные проходы. Можно будет автоматически запускать эти проходы на боевом счету. И допольнительно можно будет этот opt-файл открывать в MT5-тестере и прогонять каждый проход штатными средствами. Т.е. opt-файл становится диверсифицированным набором сет-файлов. Но при этом еще и полноценно читается самим Тестером.
Либо прописать универсальный код в советник, либо написать скрипт-загрузчик любых советников.
Лично я в экспертах Лиги ТС (а их без малого 700 штук) все настроечные параметры "забиваю" прямо в код. В результате эксперту все равно, на каком символе он открыт и на каком таймфрейме. Входных параметров у него нет, ценовые данные он запрашивает сам.
В результате - никаких перепутываний не бывает.
Спасибо всем за конструктивные подсказки.
Насколько я понял, нативного способа программно загрузить сеты сохраненные из настроек советника не существует.
Основная сложность в том, что те кто будут использовать советника с программированием никак не связаны, т.е. что-то поправить в коде не смогут. Так что если зашивать настройки в код, то по-любому придется делать какой-то интерфейс для их "ручной" правки и сохранения.
Судя по всему, библиотека предложенная fxsaber ближе всего в к тому что мне нужно... но с ней надо еще разобраться)
...или же изначально отказаться от входных параметров и просто править настройки в текстовом файле... а он уже будет автоматом подгружаться
Спасибо всем за конструктивные подсказки.
Насколько я понял, нативного способа программно загрузить сеты сохраненные из настроек советника не существует.
Основная сложность в том, что те кто будут использовать советника с программированием никак не связаны, т.е. что-то поправить в коде не смогут. Так что если зашивать настройки в код, то по-любому придется делать какой-то интерфейс для их "ручной" правки и сохранения.
Судя по всему, библиотека предложенная fxsaber ближе всего в к тому что мне нужно... но с ней надо еще разобраться)
...или же изначально отказаться от входных параметров и просто править настройки в текстовом файле... а он уже будет автоматом подгружаться
Чем профиль не подходит? Это стандартная фича для трейдеров, не требующая программирования.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго дня!
Честно просидел час в поиске, но так и не нашел решения.
Задача следующая:
Есть несколько графиков разных валют, на всех стоит один и тот же эксперт.
Входные параметры для каждой валюты свои. Соответственно есть набор пресетов, по 1-му на каждую валюту.
Поскольку счетов несколько и компьютеров на которых они установлены тоже, очень мучительно каждый раз применять вручную на каждом МТ5 эти настройки для каждого графика.
Собственно вопрос: есть ли способ программно (MQL5) загрузить файл пресета в соответствии с Symbol() текущего графика?
p.s: видел варианты решения с парсингом текстовых файлов... но этот тот еще гемор. Валют много, настройки постоянно меняются/добавляются. При парсинге неизбежно что-то с чем-то перепутается...
При этом надо иметь способ наглядного контроля за параметрами (т.е. через закладку "Входные параметры" и сохранения текущих настроек в файл и последующей автоматической загрузкой этих параметров в зависимости от валюты текущего графика)