Каталог роботов

Основы языка программирования MQL4 для начинающих

Friday, 5 January 2018 09:38
Основы языка программирования MQL4 для начинающих

За годы существования терминала MetaTrader было создано огромное количество скриптов, советников и индикаторов. Они находятся в свободном доступе на различных ресурсах, включая торговые платформы МТ4 и МТ5, и любой желающий может ими воспользоваться. Тем не менее, рано или поздно каждый трейдер задумывается о том, чтобы создать собственного торгового робота.

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

Что можно делать с помощью MQL4

Язык программирования MQL4 позволяет создавать следующие виды инструментов:

  • Скрипты – программы, которые выполняют механическое одноразовое действие. Они могут открывать противоположные ордера, закрывать торговые позиции, выводить информацию на графике и пр. Скрипты облегчают работу трейдера, делая за него рутинную работу.
  • Пользовательские индикаторы — инструменты технического анализа, которые выводятся на экран терминала в виде графика или гистограммы при каждом изменении цены (тике). В отличие от стандартных программ, которые встроены в Metatrader 4, пользовательские индикаторы отражают именно ту информацию, которая вам необходима, позволяя избавиться от лишних показателей.
  • Торговые советники — более сложные программы, одновременно объединяющие в себе свойства скрипта и индикатора. Советник анализирует ситуацию на рынке и выполняют действия в соответствии с алгоритмом, который заложен в его коде. При написании собственного робота вы можете использовать личный опыт, если считаете, что чужие стратегии менее эффективны, чем ваша.
  • Библиотека — список функций, которые будет использовать ваш торговый робот при выполнении определенных задач. Это могут быть стандартные математические функции или ваши авторские разработки, в соответствии с которыми ваш советник будет открывать и закрывать позиции.

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

Как создать торгового робота

Скрипты, индикаторы и прочие торговые роботы создаются в приложении MetaTrader 4 — MetaEditor 4. Чтобы его вызвать, нужно нажать F4 при открытом клиентском терминале. Появится окно конструктора:

MQL4 (1)

Для создания инструмента переходим в меню «File – New» или нажимаем на клавиатуре сочетание клавиш Ctrl+ N.

MQL4 (2)

Затем выбирает нужный инструмент и нажимаем кнопку «Далее».

MQL4 (3)

В появившемся окне прописываем имя скрипта (индикатора, советника), имя автора, адрес веб-узла в строке Link, после чего нажимаем кнопку «Готово».

MQL4 (4)

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

MQL4 (5)

Готовый код будет понятен вам, но не терминалу Metatrader. Чтобы перевести написанный вами исходный код на «язык», понятный МТ4, нужно выполнить его компиляцию. Для этого нажимаем F5, находясь в окне MetaEditor. После этого два раза кликаем по названию скрипта в меню Metatrader и проверяем его функциональность.

Программирование торговых роботов: основные понятия

Код торгового робота, как и код любой другой программы представляет собой определенный синтаксис, который содержит следующие элементы:

  • переменные;
  • комментарии;
  • функции;
  • массивы;
  • циклы;
  • условия.

Рассмотрим каждый из них подробнее.

Переменные

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

Возраст любого человека изменяется со временем, то есть, возраст – это переменная с математической точки зрения. При написании кода переменная с именем «Возраст», будет хранить данные о том, как изменялось значение этого параметра во времени.

Возраст обычно обозначается целым числом, поэтому он будет относиться к типу переменных «int». Если отобразить переменную «Возраст» с помощью языка MQL4, получим: «int age = 20».

Но, если мы работаем с параметрами, значение которых отображается дробными числами, например, рост, нам понадобится другой тип переменных — «double». Пример: «double height = 1.65».

Существуют и другие переменные:

  • «string» - тип данных, значениями которых являются строка, состоящая из символов алфавита (Пример: string name = «Bob»). Обратите внимание, что буквенные значения пишутся в кавычках;
  • «bool» - тип переменных, которые могут принимать лишь одно из двух значений: true (правда) или false (ложь) Пример: bool trend = true.

В MQL4 имена переменных часто обозначаются буквами «а», «b», «с» и пр.

Важно: При написании кода на языке MQL4 необходимо придерживаться регистра: одинаковые названия переменной, написанные строчными и заглавными буквами, будут восприниматься системой как две разные переменные. Название переменных не может начинаться с цифр или специальных знаков, иначе программа не сможет их распознать.

Комментарии

Комментарии – один из важных элементов кода MQL4. Он не воспринимается программой, но представляет ценность для самого трейдера, который может получить информацию о переменной с помощью комментария. Для обозначения этого элемента нужно поставить перед ним «//», и тогда он не будет восприниматься МТ4 после компиляции, но останется в качестве подсказки в коде. Пример:

MQL4 (6)

Функции

Функция – это фрагмент кода, который возвращает заранее определенные параметры из любого места программы. При написании скриптов в MQL4 часто используется функция Message Box, которая выводит на экран какое-то сообщение. В нем может содержаться информация о значении переменных или выводиться результат расчетов по заданным параметрам. Например, если в коде мы укажем:

MQL4 (7)

После компиляции программы, получим:

MQL4 (8)

Функции часто используются во всех языках программирования, поскольку они позволяют сократить объем исходного кода, и MQL4 – не исключение.

Массивы

Массив - еще один элемент, позволяющий сократить объем исходного кода. Он объединяет несколько одинаковых переменных, которые следуют друг за другом и имеют соответствующие индексы (0, 1, 2, 3 и т.д). Например, нам нужно запомнить пять цен:

MQL4 (9)

Здесь мы видим несколько значений одного и того же параметра – цены. Мы может объединить их в один массив: «double price [5]» – массив из пяти элементов. В будущем будет достаточно прописывать не весь перечень переменных, а лишь элемент, к которому нужно обратиться на данном участке программы.

MQL4 (10)

Массив также позволяет сократить объем кода, если при его объявлении присвоить каждому элементы начальное значение: double price [2] = {1,3525, 1,3548}. В этом случае даже необязательно указывать количество элементов «2». Компилятор сам установит нужное значение.

Циклы

Цикл — элемент кода, который запускает выполнение большого количества операций, пока не настанут условия для их остановки. Например, нам нужно посчитать среднее арифметическое максимальной цены всех баров на участке графика. Кроме того, необходимо, чтобы программа делала это, пока средняя цена не окажется больше значения «Bars». Без использования цикла придется каждый раз вставлять в код огромное количество переменных:

MQL4 (11)

Но, если преобразовать эти данные в цикл и задать условия, при которых он будет выполняться, объем кода значительно сократится:

MQL4 (12)

Данный цикл начинается со слова «for». Это значит, что в этом случае увеличение счетчика (int a = 0) будет каждый раз выполняться на единицу. Существуют также более сложные виды циклов – while и repeat, где для счетчика задаются индивидуальные условия.

Условия

Элемент «if» позволяет запрограммировать выполнение какого-то действия при наступлении определенных условий. Он часто используется вместе с командой «else». Например:

MQL4 (13)

В коде выше указано, что b = 1 только, когда а> 10, в противном случае b = 2. Поскольку заданное значение a = 10 (не больше 10), b примет значение «else», то есть 2.

Условия помогают задать алгоритм работы советника: робот будет открывать позиции только когда цена соответствует заданным условиям.

При написании торговых роботов часто возникают ситуации, когда нужно сразу задать несколько условий для открытия сделки. В MQL4 это можно реализовать, указав каждый параметр через «&&». Пример: «if((a>5) && (b<10))».

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

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

Оцените статью:
5 из 5 на основе 1 оценок
David Melton
David Melton

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

Поделиться