Как конвертировать советник для MT4 в формат MT5
В этой статье будут раскрыты факты, касающиеся конвертации советников, написанных для работы на MT4, чтобы они также могли работать на MT5.
Другими словами, в статье объясняется, как преобразовать код MQL4 в код MQL5 максимально простым способом.
После многих лет застоя в развитии платформы MT5, компания Metaquotes Inc, стоящая за революционной серией MetaTrader, наконец решила сделать MT5 основной платформой для будущего.
Представители компании намекают, что, хотя её сверхпопулярная платформа MetaTrader 4 (MT4) продолжит работать, никаких дальнейших обновлений для MT4 больше не будет.
MetaQuotes Inc. планирует сосредоточить все свои усилия на платформе MetaTrader 5 (MT5).
Это заявление сделал во время Лондонского саммита финансовых магнатов Энтони Папаевагору, глава отдела продаж MetaQuotes.
С момента появления платформы MT5 в 2010 году, её продажи были незначительными по сравнению с MT4 – до недавних пор.
Начиная с июля 2016 года продажи MT5 стабильно опережают продажи MT4.
Таким образом, Metaquotes хочет развить успех своей новейшей платформы, а в случае MT4 планирует сосредоточиться исключительно на росте спроса и использования платформы среди клиентов.
Это развитие, как сообщают связанные с компанией люди, изменит ландшафт использования MetaTrader уже начиная с 2017 года.
Для всех пользователей этой платформы, как и для трейдеров и программистов, важно быть готовыми к тому, что предлагает новая платформа MT5.
Одной из привлекательных черт платформы MetaTrader является возможность запуска советников и индикаторов, позволяющих трейдерам торговать на «автопилоте«.
Это также привело к формированию рынка для программистов, которые работают над созданием такого программного обеспечения с использованием встроенных языков программирования.
Самый большой вопрос, который встает перед трейдерами и программистами в связи с этим запланированным переходом, заключается в следующем: как заставить советники, написанные на языке MQL4 (на котором работает MT4), работать на платформе MT5, учитывая, что MT4 и MT5 не являются совместимыми.
Этот вопрос становится ещё более актуальным в связи со следующими фактами
- MT4 и MT5 работают с использованием разных языков программирования. Поэтому советники, которые написаны для работы в MT4, не будут работать в MT5.
- Metaquotes внесла значительное количество изменений в функционал MT5, дав новой версии значительные преимущества перед MT4.
- В связи с недавним объявлением о прекращении обновлений для MT4, этой программе суждено стать реликвией истории в ближайшие годы.
Ещё есть довольно много времени, в течение которого брокеры, трейдеры, пользователи кодовой базы и программисты должны полностью мигрировать с MT4 на MT5, но самые большие проблемы, связанные с переводом советников MT4 на MT5, нужно решить уже сейчас.
Разве такое возможно? В этой статье будут раскрыты все секреты.
Конвертация советника MT4 для работы в MT5
Технически говоря, невозможно использовать советник MT4 на MT5 в том виде, в котором он существует.
Для любых преобразований потребуется определённая модификация исходного файла MQ4, чтобы советник мог работать на MT5.
Для выполнения этих модификаций требуется хорошее знание различий между языками MQL4 и MQL5 и соответствующими средами.
Сейчас мы продемонстрируем, как конвертировать советник MT4 в формат MT5, используя существующий советник для MT4, Moving Average.mq4.
Мы выбрали этот советник, потому что он предустановлен во всех MT4, и практически все программисты с ним знакомы.
Конвертация советника для MT4 в советник для MT5 на примере “Moving Average.mq4”
- Откройте исходный файл «MQL4ExpertsMoving Average.mq4» в MetaEditor 4, затем выделите и скопируйте весь текст (Ctrl + A, Ctrl + C). Открыть MetaEditor 4 можно нажатием клавиши F4 при запущенном клиентском терминале MT4.
- Предполагается, что вы уже установили десктопную версию терминала МТ5, скачав её у выбранного брокера. Откройте экземпляр клиента MT5 и запустите MetaEditor 5 для создания нового советника (шаблона), как показано на иллюстрации ниже:
- Присвойте название шаблону советника, заполнив поле “Name”. Например, вы можете использовать имя “SimpleEA” или просто назвать файл как-нибудь ещё. См. скриншот ниже:
После выполнения этого действия вы получите шаблон для своего будущего советника, который будет основан на коде MT5.
- Выделите весь текст в шаблоне (Ctrl + A) и удалите его, затем вставьте недавно скопированный текст из MetaTrader 4 (Ctrl + V), как показано на изображении ниже:
Вы получите что-то вроде того, что показано на скриншоте ниже:
MetaTrader 5 использует другие системные методы размещения ордеров (select, send, open, close…), но для того, чтобы показать самый простой способ конвертации из MT4 в MT5, мы будем использовать только одну библиотеку – mq4.mqh.
Эта библиотека позволяет программисту или пользователю работать с ордерами в MQL5 (например, MT5-hedge) так же, как и в MQL4.
Другими словами, библиотека позволяет добиться того, что система Order language system (OLS) становится идентичной MQL4.
Эта библиотека охватывает только системы ордеров. Файлы mq4.mqh от лучших программистов доступны в интернете.
Тот, который используется в этом примере, был получен от программиста, затем мы добавили немного функциональности, и всё это было объединено в один файл.
- Убедитесь, что как минимум один экземпляр платформы MT5 открыт. После того, как вы запустите платформу MT5, вы можете открыть File -> Open data folder ” ……MQL5Include” и перетащить в неё файл библиотеки (mq4.mqh) в папку.
- Обновите платформу MT5, закрыв её и снова открыв, затем откройте MetaEditor5. Откройте исходный код советника добавьте строку в исходный код SimpleEA.mq5: #include
- После добавления строки в исходный код, вы можете скомпилировать обновлённый исходный код SimpleEA.mq5, просто нажав на кнопку “F7” или на кнопку с надписью “Компилировать” на панели инструментов редактора MetaEditor 5:
После компиляции вы получите только 2 ошибки:
Это также подчёркивает ещё одно различие между платформами MT4 и MT5, и это различие заключается в особенностях вызова индикатора
- В MetaEditor 4 вы просто пишете iMA(symbol,timeframe,”settings ma”, shift), где «shift» – это номер свечи, например, 0, последняя свеча на графике. iMA() – это возвращаемое значение скользящей средней на нулевой свече.
- В MetaEditor5 нужно написать дескриптор для каждого индикатора или советника, а также функции для получения значений от советника или индикатора с помощью этого дескриптора.
Изменение исходного кода MT4 для получения работоспособной версии MT5. Пошаговое руководство
В этом кратком разделе объясняется, что вам нужно добавить в исходный код для MT4, чтобы он мог работать в MT5.
Эти изменения касаются только индикатора. Другими словами, изменить необходимо только одну строку в исходном коде.
Найдите строку:
и замените на
MAHandle = iMA(NULL, 0, MovingPeriod, MovingShift, MODE_SMA, PRICE_CLOSE);
Print(“Error creating MA indicator”).
Шаги по внедрению этих изменений описаны ниже
- Для начала вам нужно создать переменную Integer (int) для дескриптора индикатора MA и присвоить ей значение INVALID_HANDLE. Это показано ниже:
int MAHandle = INVALID_HANDLE;
Советники и индикаторы имеют раздел OnInit() для инициализации во время работы. Она выглядит так:
Вы можете почитать об этом, используя файл справки. Для доступа к файлу справки MetaEditor5 нужно нажать клавишу «F1«.
На веб-сайте сообщества MQL5 также есть документация, в которой содержится много полезной информации. Найти её можно в файле справки. Этот документ доступен по следующей ссылке:
- Следующий шаг – добавить этот код в текст (то есть исходный код) нашего советника, если этот раздел не существует (нажмите Alt + M из MetaEditor 5).
В списке функций мы видим 5 пунктов. Однако по умолчанию функция OnInit() не существует, поэтому мы должны создать её сами, написав код вручную. Это показано на иллюстрации ниже.
Можете нажать (Alt + M) на клавиатуре компьютера, чтобы функция OnInit() была добавлена в исходный код.
- В разделе OnInit() можно написать следующий код:
MAHandle = iMA(NULL, 0, MovingPeriod, MovingShift, MODE_SMA, PRICE_CLOSE);
Print(“Error creating MA indicator”);
Обычно в MetaEditor MT4 код пишется следующим образом:
Однако для MT5 код пишется аналогично дескриптору индикатора. Поэтому в MT5 код пишется следующим образом:
- Следующим шагом вам нужно будет написать функцию для получения значения от скользящей средней с помощью дескриптора, как показано на изображении ниже:
Ранее мы упоминали, что при использовании MetaEditor5 необходимо создать функцию получения значения для индикатора или советника.
Эта функция содержит строку с названием CopyBuffer(). CopyBuffer копирует данные из индикатора в массив.
CopyBuffer получает данные в нужном количестве из специализированного буфера определённого индикатора.
Более подробную информацию о CopyBuffer можно получить, прочитав документ, доступный по этой ссылке:
Код выглядит следующим образом:
[in] Дескриптор индикатора, возвращаемый соответствующей функцией.
[in] Номер буфера индикатора.
[in] Расположение первого копируемого элемента.
[in] Количество данных для копирования.
MA имеет 1 буфер с номером «0«. Вам нужно скопировать из MA одно значение.
В редакторе MetaEditor MT4 это записано следующим образом:
Последний «0» соответствует значению MA на нулевой свече (последняя свеча на графике).
В редакторе MetaEditor MT5 это записано следующим образом:
Скопируйте одно значение из позиции индекса в массив MA.
- Теперь давайте перейдём к устранению двух ошибок, которые появились при компиляции кода. Процесс начинается с двойного щелчка по первой ошибке записи, как показано на иллюстрации.
После этого вы будете перемещены в место, где находится эта ошибка в исходном коде MT5 вашего советника. Код ошибки в этом примере находится в строке 114. См. изображение ниже:
Строка в исходном коде, которая содержит эту ошибку, удаляется и заменяется строкой, содержащей код MaGet(0).
Это показано на следующем изображении. Обратите внимание, что код ошибки подчеркнут красным, а код MaGet(0), который используется для его замены, показан внизу.
После того, как вы замените код ошибки на строку MaGet(0), нужно будет скомпилировать код ещё раз, нажав клавишу F7. После перекомпиляции исходного кода мы видим, что осталась только одна ошибка:
Для того, чтобы заменить оставшийся код с ошибкой, мы выполняем ту же последовательность, которую использовали при устранении первой ошибки.
Дважды щёлкните по строке с кодом ошибки (140 в этом примере), закомментируйте её и замените, как показано на следующей иллюстрации.
Опять же, код ошибки подчёркнут зелёным, а в строке под ним показан код, который будет использоваться для замены и исправления ошибки.
Вот строка, которая используется для замены в этом случае:
После того, как вы закомментируете и замените строки кода с ошибками, необходимо перекомпилировать код.
Таким образом, вы ещё раз компилируете исходный код, нажав клавишу F7 на клавиатуре компьютера. Как видите, все ошибки были устранены. Ноль ошибок в коде, как показано на изображении ниже:
На следующем скриншоте показана разница между исходными кодами вызовов индикаторов MT4 и MT5, а также процесс конвертации из MT4 в MT5.
Теперь, когда мы закончили процесс преобразования нашего советника от MT4 в версию, которую можно использовать на MT5, можно запустить его на нашей платформе MT5, как показано ниже:
Заключение
Без использования библиотеки и шаблона, как показано выше, запустить советник от MT4 на MT5 было бы невозможно.
Скорее, программисту пришлось бы писать всю программу с нуля на интерфейсе программирования MetaEditor 5.
По мере роста количества пользователей МТ5 в 2017 году и далее, скорее всего, будут разработаны новые способы конвертации исходного кода индикаторов от МТ4 для использования на платформе МТ5.
MT5 уже претерпел несколько изменений в своей структуре и функциях, и, поскольку Metaquotes Inc продолжает движение к созданию платформы, которая по производительности должна намного превзойти MT4, программистам придётся постоянно обновлять свои знания, чтобы успевать за последними модификациями.
Над статьями работает команда авторов, переводчиков и редактор. На сайте команда Privatefinance.biz публикует информационные статьи, обзоры, рейтинги, гайды о торговле на финансовых рынках и инвестировании, рекомендации по выбору брокера и инструментов инвестирования, актуальные новости из мира финансов.
Почта для связи с нами: [email protected]
Как оптимизировать советник в MT4?
Перед тем, как доверить торговлю тому или иному советнику, рекомендуем провести его оптимизацию. То есть, проверить насколько он является прибыльным. И если всё пройдет гладко, рассматривать торговлю на реальном счете Форекс.
В данном материале мы покажем, как выглядит оптимизация советников Форекс в МТ4, и как правильно её проводить.
Для проверки советника на прибыльность понадобиться выполнить такие действия:
- Пропустить выбранного торгового робота через тестер стратегий, который есть в каждом МТ4.
- Настроить оптимизацию советника Форекс и посмотреть, что из этого получилось.
- Протестировать робот на демо-счете.
- Попробовать применить советник на центовом счете.
Сразу отметим, что пункты 1, 2, 4 нужно выполнить обязательно. Что касается третьего пункта, то его выполнение не столь обязательно, так как тестирование на демо-счете занимает много времени. Вот почему некоторые трейдеры-новички предпочитают пропустить 3-й этап.
Но мы настоятельно советуем, прежде чем, применять тот или иной советник на реальном счету, провести действия по всем четырем пунктам, а также изучить ниже, как правильно оптимизировать советник, на примере Илана.
Робот может хорошо показать себя на демо-счете и тестере стратегий Форекс, но на реальном счете (центовый счёт относится к реальным счетам), порой, картина совсем иная. Это происходит за счет проскальзывания цены и других моментов, которых нет на учебном счёте. Понятное дело, что здесь никак не обойтись без оптимизации советников Форекс.
Тестер стратегий
В качестве примера мы выбрали семейство советников Ilan. Когда “Илан” и установлен в торговый терминал, выбираем актив EUR/USD. Потом нужно выбрать “все тики”. Также понадобиться указать временной интервал в рамках, которого и будет проводиться наиболее точное тестирование. Мы выбрали часовой таймфрейм. Интервал тестирования июнь 2017 года.
(Здесь и далее кликните по изображению, чтобы увеличить его.)
Рисунок 1. Тестер советника Ilan 1.6 Dynamic.
Когда все необходимые настройки параметров заданы, жмем на кнопку «Старт», чтобы проверить его в действии и ждем окончания процесса тестирования советника. Настройки Илана мы оставили стандартные и получили следующие результаты:
Рисунок 2. Отчет торговли за месяц в тестере советников.
За месяц робот открыл всего 255 сделок. Чистая прибыль составила $21.18. Размер депозита $10 тыс. Максимальная просадка составила 6,57% от депо. Прибыльность советника 1.08. Причем оптимизация советника в МТ4 не проводилась.
Рисунок 3. Стейтмент торговли советника Илан.
Чтобы получить более точную картину, многие профессиональные трейдеры советуют подгрузить историю котировок. Для вызова диалогового окна нам потребуется нажать на кнопку F2:
Рисунок 4. Архив котировок.
Нам нужно выбрать нашу пару EUR/USD таймфрейм 1 минута:
Рисунок 5. Архив котировок EUR/USD таймфрейм 1 минута.
Теперь можно нажать на кнопку «Загрузить». После этого появится предупреждение о загрузке котировок. Жмем “ОК”. Через некоторое время процесс подгрузки котировок можно считать завершенным. Вот теперь все нормально. Нажимаем кнопочку «Загрузить» и ждем пока подгрузится история.
Переходим в тестер стратегии и жмем на кнопку “Старт”. Согласно данным из отчета, цифры несколько изменились:
Рисунок 6. Повторное тестирование советника Илан.
Было открыто 263 сделки. Чистая прибыль составила $19.52. Прибыльность та же 1.08. Максимальная просадка составила $658.43 или 6,57% от всего депозита. Вывод: особо ничего не изменилось, поэтому прибегнем к оптимизации советника Форекс в МТ4, чтобы извлечь максимально возможную прибыль.
Попытка оптимизации
Изначальные настройки робот Илан имеет такие:
Рисунок 7. Стандартные настройки робота Ilan 1.6 Dynamic.
Итак, как оптимизировать этот советник в МТ4? Попробуем изменить некоторые параметры настроек:
Рисунок 8. Оптимизация советника Ilan 1.6 Dynamic.
Жмём кнопку “ОК”. Затем стартуем по новой. Когда оптимизация Илан была завершена, то тестер показал следующие результаты:
Рисунок 9. Результаты торговли советника после оптимизации.
Всего было заключено 282 сделки. Читая прибыль составила $53,39. Прибыльность 1.10. Максимальная просадка 13.90% от общего значения счёта. Тестировался робот Илан с 01.06.2017 по 30.06.2017. То есть, это результаты за 30 дней.
А что, если протестировать его с начала года и до 30.06.2017 года? Однако нам нужно снова прибегнуть к оптимизации советников Форекс в МТ4 – изменить параметр DefaultPips (шаг между открытием новых ордеров) с 12 на 24.
После нажатия на “Старт” за более чем полгода роботу удалось достичь таких результатов:
Рисунок 10. Результаты торговли робота Илан за полгода.
Всего роботу удалось заключить 1479 сделок. Прибыль составила $357.77. Прибыльность 1.10. Максимальная просадка составила 77.16 % или $7863.44 при изначальном депозите $10 тыс. Для всех роботов-сеточников такая большая просадка — это нормальная практика. Если Вас не устраивает такая оптимизация советников Форекс, можете открыть тестер стратегий и попробовать изменить параметры настроек автоматического робота Илан. Возможно, Вам удастся вывести более удачную оптимизацию.
Заключение
Выше мы не только показали, как проводится оптимизация советников на Форекс и вывели оптимальные настройки робота Ilan 1.6 Dynamic, которые показали достаточно неплохие результаты. Вот почему, так важно самому разбираться в настройках параметров. Ведь это позволит вовремя исключить возможные просадки.
В качестве заключения отметим, что сеточный советник Ilan 1.6 Dynamic абсолютно рабочий торговый инструмент для получения прибыли на рынке Форекс. Главное, чтобы оптимизация советника в МТ4 была проведена грамотно. Применять его можно в рамках центового счета. Но понадобиться изменить в большую сторону параметр Lots, скажем до 0.2-0.3, а то и выше. Всё зависит от размера депозита. В любом случае рекомендуем проверить эту настройку в тестере, и только потом торговать на реальном счете.
Также обязательно выберите в тестере стратегий дату 365 дней, то есть 1 год, и подойдите к оптимизации советника в МТ4 более ответственно. То есть, выставляйте вышеуказанные параметры по максимуму, и только потом постепенно уменьшайте их значения, чтобы вывести оптимальные настройки. Помните, что лишь тот будет в выигрыше, кто постоянно снимает полученную прибыль. Ведь каждый торговый робот рано или поздно сольет депозит трейдера, но за время торговли с его помощью можно вывести приличную прибыль.
Все самое лучшее от Академии
только нашим подписчикам
Источник https://privatefinance.biz/kak-konvertirovat-sovetnik-dlya-mt4-v-format-mt5/
Источник https://academyfx.ru/article/blogi/2668-kak-optimizirovat-sovetnik-v-mt4