Как скомпилировать файл mql4

Обновлено: 28.06.2024

Теперь я компилирую свои файлы MetaTrader .mq4 в файлы .ex4 с помощью MetaEditor .

Но мои файлы .mq4 генерируются Java-процессом, и я хотел бы автоматизировать процесс компиляции.

Есть ли инструмент компилятора командной строки, который я мог бы вызвать программно?

3 ответа

Да, в каталоге установки терминала есть исполняемый файл. Он называется metalang.exe.

Чтобы скомпилировать файл исходного кода из командной строки, вы можете использовать для этого MetaEditor. Например:

Для 64-битной версии используйте metaeditor64.exe .

В Linux / macOS этого можно достичь с помощью Wine, например:

Для массовой компиляции вы можете указать папку, например:

Чтобы указать пользовательскую папку MQL5 / MQL4 с включаемыми файлами, вы можете использовать параметр /inc , например:

Для получения дополнительной информации о процессе компиляции вы можете использовать /log :

Чтобы проверить только синтаксис, добавьте дополнительный /s .

В случае сбоя компиляции в папке платформы будет создан файл MQL4.log с соответствующими данными. Он будет в формате UTF-16, поэтому вам может понадобиться специальный инструмент (например, Vim, Ruby, findstr или rg ).

Чтобы указать пользовательский файл журнала компиляции, используйте параметр /log:file.log , например

Примечание. Отображение на стандартный вывод не поддерживается (хотя в Linux вы можете использовать: /log:CON ).

Для получения дополнительной информации проверьте: Компиляция из командной строки

Некоторое время назад вы могли скачать компилятор программ MQL4 / MQL5, который запускается отдельно от MetaEditor - MQL.exe . Он распространялся отдельно от терминала и его можно было скачать по следующим адресам:

Использование (согласно MQL4 / MQL5 Compiler build 1162 от 02.07.2015):

Однако автономный компилятор был намеренно удален, поэтому теперь ссылки указывают на установщик в пользу MetaEditor.

В гораздо более старую версию MetaTrader до сборки 600 была включена платформа metalang.exe .

Однако в сборке 616 MetaQuotes намеренно удалил компилятор ( mql.exe / mql64.exe ) из стандартной установки MetaTrader.

Это означает, что если вы обновите платформу MT (> 616), исполняемый файл компилятора будет удален.

Это немного поздно, но поскольку я написал небольшой скрипт для UltraEdit / UEStudio и получил кучу помощи от stackoverflow, вот мой скрипт. Он компилирует, а затем копирует ex4 в несколько тестовых установок MT4:

Кнопка «Скомпилировать» на UE:

Обычно мой исходный код находится в дереве библиотек в папке D: \ Development \ MQ4 [Group] [ExpertName] [FileName] .mq4

Компиляция

Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе.

Компиляция состоит из нескольких этапов:

  • Лексический анализ
  • Синтаксический анализ
  • Семантический анализ
  • Генерация кода
  • Оптимизация кода
  • Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в результате компиляции основного MQ4/MQ5-файла программы или проекта.
  • Исполняемый файл создается в собственном закрытом формате, что скрывает исходный алгоритм программы.
  • Скомпилированные исполняемые EX4/EX5-файлы можно распространять без исходных MQ4, MQ5 и MQH-файлов. Без них отладка невозможна. Также не рекомендуется распространять исполняемые EX4/EX5-файлы, полученные в процессе отладки.

Чтобы получить исполняемый файл программы, откройте основной исходный файл или проект через "Навигатор", а затем нажмите " Компилировать" в меню "Файл" или "F7". Протокол процесса компиляции будет отображен на вкладке "Ошибки" в окне "Инструменты". Если компиляция прошла без ошибок, вы можете запустить полученную программу в торговой платформе.

Компиляция программы с выводом результатов во вкладке "Ошибки"

Если в процессе компиляции возникли ошибки или предупреждения, их описание будет показано на вкладке "Ошибки".

Ошибки компиляции обозначаются иконками как на вкладке "Ошибки", так и в самом коде при переходе к ним. При их возникновении исполняемый файл программы (*EX4 или *.EX5) не создастся. Чтобы перейти к строке, где возникла ошибка, дважды щелкните мышью на ошибке или нажмите " Перейти к строке" в контекстном меню. Номер строки и столбца, где была найдена ошибка, показываются в соответствующих колонках.

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

Прикладные программы на языке MQL4 - эксперты, скрипты и индикаторы - создаются с помощью редактора MetaEditor.

Исполняемый файл редактора MetaEditor (MetaEditor.exe) поставляется в составе клиентского терминала и находится в корневом каталоге терминала. Руководство по работе в редакторе MetaEditor открывается при нажатии клавиши F1. Здесь рассматриваются общие сведения, которые необходимы для создания новых программ. Открыть редактор для использования можно, например, кликнув по имени файла MetaEditor.exe или по ярлыку, предварительно расположенному на рабочем столе.

Структура клиентского терминала

Для удобства работы в редактор MetaEditor встроены панели "Навигатор" (Ctrl+D) и "Инструментарий" (Ctrl+T).



Рис. 25. Расположение окон в редакторе MetaEditor.

Текст программы располагается в окне редактирования, а окна инструментария и навигатора имеют вспомогательное значение. Окна навигатора и инструментария имеют подвижные границы и могут быть отображены/скрыты в редакторе с помощью кнопок и .

Создание новой программы


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

В результате этого действия "Мастер создания Советника" предложит выбрать вид создаваемой программы:



Рис. 26. Выбор вида программы при её создании.

Если требуется создать эксперт, то необходимо сделать отметку в графе Советник и нажать кнопку Далее. В следующем окне необходимо вписать название создаваемого эксперта. Пусть этот эксперт называется create.mq4.

Имя создаваемого файла указывается без расширения (указания типа).

Мастер создания советника выведет окно, в котором необходимо заполнить несколько полей ввода:



Рис. 27. Окно для указания общих параметров советника.

После клика по кнопке Готово в основном окне отобразится некоторый набор текста, и одновременно с этим в файловой системе и в окне навигатора появится полноценное название созданного нами эксперта create.mq4.



Рис. 28. Отображение созданного файла эксперта в файловой системе и в окне навигатора.

Посмотрим, какой текст программы был сгенерирован редактором MetaEditor:

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

В программе имеются три специальные функции (init(), start() и deinit() ), содержанием каждой из которых является всего один оператор return(0) выхода из функции. Таким образом, код программы, сгенерированный мастером создания советников, являет собой лишь шаблон, используя который программист может создать новую программу. Конечный код программы не обязательно должен содержать все указанные специальные функции. Они представлены в программе мастером создания программ лишь потому, что обычная программа средней сложности, как правило, содержит все эти функции. Если же использование какой-либо из функций не предполагается, то её описание можно удалить.

Следующие строки в коде программы также можно опустить:

Несмотря на то, что эта программа не несёт никакой полезной нагрузки, она составлена корректно с точки зрения соблюдения синтаксиса. Поэтому, вообще говоря, эту программу можно было бы скомпилировать и запустить на выполнение. И она исполнялась бы как любая полноценная программа (при этом не выполнялись бы никакие вычисления ввиду их отсутствия в исходном коде).

Внешний вид программы

Использование подробных комментариев в программе крайне желательно, а в некоторых случаях и жизненно необходимо. Следует особо подчеркнуть, что программисту приходится не только составлять программы, но и читать их. В ряде случаев при чтении программы могут возникнуть значительные затруднения. Опыт многих программистов свидетельствует о том, что логика собственных рассуждений, на основе которых была построена программа, забывается (в случае чужой программы - неизвестна) и без построчных комментариев понять смысл иных фрагментов кода довольно сложно, а в некоторых случаях - просто невозможно.

Корректно составленная программа обязательно содержит комментарии.

Основные достоинства комментариев состоят в следующем:

  • Во-первых, комментарии позволяют отделить одну логически обособленную часть программы от другой. Гораздо легче читать удобно форматированный текст, нежели текст, составленный сплошным потоком.
  • Во-вторых, построчные комментарии позволяют пояснить обычными словами, что имел ввиду программист в каждой отдельно взятой строке кода.
  • В-третьих, в верхней части программы можно указать некоторый набор сведений, касающихся программы в целом: фамилию и реквизиты автора (в том числе, авторский сайт, адрес электронной почты и пр.), назначение программы (является она законченной торгующей программой или библиотечной функцией), основные её характеристики и ограничения, а также другую полезную информацию на усмотрение автора.

Каждый программист по своему вкусу может выбрать любой удобный ему стиль комментариев. Стиль, предлагаемый разработчиками языка MQL4, представлен в эксперте create.mq4. Рассмотрим основные особенности любого приемлемого стиля оформления программы.

1. Длина строки кода не должна превышать размер основного окна. Это ограничение не является формальным требованием синтаксиса языка, однако чтение программы, содержащей длинные строки, очень неудобно. Любую длинную строку всегда можно расположить в несколько программных строк, так, чтобы все они были полностью видны на экране. Для монитора с разрешением 1024 х 768 пикселей максимальная длина строки составляет 118 символов.

2. Объявление переменных осуществляется в начале программы. К каждой переменной желательно дать описание в комментарии: кратко отметить сущность и (если необходимо) особенности использования переменной.

3. Каждый оператор желательно располагать в отдельной строке.

4. Построчный комментарий, если он присутствует в строке, должен начинаться с 76 позиции (рекомендуется для мониторов 17" с разрешением 1024 х 768 пикс.). Это требование также не является обязательным. Например, если строка кода занимает 80 позиций, то её не обязательно разбивать на две строки, можно написать комментарий, начиная с 81 позиции. Обычно содержательная часть программы (код) составляют строки длиной около 50 символов, поэтому построчный комментарий выглядит как столбец текста в правой части экрана.

5. Для разделения логически обособленных фрагментов используются строки комментария на всю ширину (118 символов).

6. При использовании фигурных скобок обязательно используется отступ на величину табуляции (обычно 3 символа).

Посмотрим? как может выглядеть эксперт после того, как в него вписан программный код. В данном случае логика программного алгоритма не обсуждается. Здесь важно отметить только подробности оформления программы. Комментированная программа (эксперт create.mq4) может выглядеть, например, так:

Легко увидеть, что законченные смысловые блоки программы отделены друг от друга комментарием - сплошной строкой. Таким способом выделяются специальные, пользовательские функции и головная часть программы:

Объявление переменных выполняется в отдельном блоке, причём каждая переменная описана. Иногда в программе используются переменные, для объяснения смысла которых приходится использовать комментарий в несколько строк. Такое случается редко, но при необходимости делать это нужно обязательно, иначе не только другой программист, но и автор программы не сможет в ней разобраться по прошествии некоторого срока.

В правой части каждой строки кода дан поясняющий комментарий. Ценность комментариев становится понятной только в том случае, если их нет, и при чтении программы возникают проблемы с пониманием алгоритма. Например, если этот же код представить без комментариев и без выделения блоков с помощью табуляции, то, даже несмотря на то, что программа достаточно простая и короткая, воспринимать её станет значительно сложнее:

Компиляция программы

При этом в соответствующем каталоге (в данном случае в Каталог_терминала\experts) появится новый файл create.ex4. Это - программа, готовая к работе в клиентском терминале MetaTrader 4. В момент компиляции в том же каталоге сохранится также последняя редакция исходного текста программы с тем же названием, в нашем случае - это файл create.mq4.

Одновременно с этим в окне навигатора клиентского терминала, в разделе Советники появится строка с названием созданного эксперта:



Рис. 30. Отображение названия эксперта в окне навигатора клиентского терминала.

Использование программы в практической работе

Если прикладная программа (эксперт, скрипт, индикатор) успешно скомпилирована и её название появилось в окне навигатора клиентского терминала, то её можно использовать в практической работе. Для этого достаточно мышкой перетащить соответствующий значок из окна навигатора в окно финансового инструмента. Это будет означать, что программа присоединена к окну графика финансового инструмента и будет запущена на исполнение.

Эксперт и индикатор будут оставаться в работе до тех пор, пока пользователь вручную не прекратит работу программы. Обычный скрипт, после выполнения заложенного в него алгоритма, самостоятельно прекратит свою работу.

Здесь необходимо ещё раз подчеркнуть, что:

Любые прикладные программы (эксперт, скрипт, индикатор) могут быть использованы для торговли только в составе клиентского терминала MetaTrader 4 при условии его подключения к серверу (дилинговому центру) с помощью сети Интернет; никакие программы не могут быть установлены пользователем на сервере или использоваться в терминалах других производителей.

Иными словами, если трейдер хочет использовать в своей работе какую-либо прикладную программу, он должен включить свой компьютер, открыть клиентский терминал MetaTrader 4 и запустить в окне финансового инструмента исполняемый файл *.ex4. При исполнении программы (в зависимости от её алгоритма) могут быть сформированы торговые приказы, которые будут отправлены на сервер, в результате чего и будет осуществляться управление торговлей.


Школа MQL Кирилл Еременко

Давайте начнём с самых азов и ответим на вопросы что же такое MQL4, и почему нужно использовать именно MQL4?

Термин MQL4 является аббревиатурой от MetaQuotes Language 4. MetaQoutes — компания, создавшая торговую платформу MetaTrader.

Чтобы их торговая платформа стала сильнее, чем платформы конкурентов, в компании MetaQuotes в дополнение решили снабдить её своим собственным интегрированным языком программирования, позволяющим пользователям (то есть нам с Вами) легко реализовать свои торговые идеи и стратегии.

Благодаря этому языку программирования можно создавать советники, индикаторы и скрипты.

Рассмотрим все по порядку.

• Советник — это специальная программа, автоматизирующая Ваши сделки. К примеру, торговый советник может автоматизировать открытие и закрытие сделок, может их отменять или заменять.
• Индикатор — это программа, позволяющая использовать функции технических индикаторов, но не способная автоматизировать сделки.
• Скриптом называется программа, которая выполняет одну определенную функцию. В отличие от советника, скрипт выполняется всего один раз — при запуске, а не на каждом тике как советник. Важной особенностью также является тот факт, что скрипту не дали доступ к техническим индикаторам.

Как компилировать код на языке MQL4?

Чтобы написать свой собственный код на языке MQL4 (впрочем, это касается и любого другого языка) нужен компилятор!

Компиляция — это превращение написанного человеком и понятного ему кода в машинный код, который уже поймет компьютер.

MetaTrader4 имеет свой собственный компилятор (программу, превращающую Ваш текстовый код в машинный язык). Называется этот редактор — MetaEditor.

У компилятора MetaEditor имеется несколько важных особенностей:

Он может находить и подчеркивать опечатки и различные языковые конструкции в тексте программы, пока вы изучаете или набираете код.

В нем весьма просто компилировать программы. Достаточно нажать F7, и MetaEditor сделает всю сложную работу за вас и создаст скомпилированный файл .ex4. Плюс ко всему, заглянув в инструментарий, совсем несложно понять, что не так в вашем коде.

Читайте также: