Суббота, 06.06.2026, 09:39
Главная Регистрация RSS
Приветствую Вас, Гость
Форма входа
Поиск
Архив записей
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Яндекс.Метрика


Учимся программировать на языке MQL4-урок1


Если Вы умеете программировать на C или C++, то Вы уже очень многое знаете про MQL4. Если Вы не изучали никакого языка программирования, то никаких проблем в этом нет - я заодно научу Вас понимать концепцию программирования.

Итак, начнём с самого начала.

MQL4? Что, где и почему?

MQL4 обозначает MetaQuotes Language 4.
MetaQoutes - это компания, которая создала торгговую платформу MetaTrader.
Для того, чтобы сделать эту торговую платформу сильней платформ своих конкурентов, компания MetaQuotes снабдила её встроенным языком программирования, которые позволяют пользователю (Вам) реализовывать свои торговые стратегии.

Этот язык позволяет Вам создавать следующее:

1-Советники
2-Индикаторы
3-Скрипты
Советник - это программа, которая может автоматизировать Ваши сделки. Например, она может автоматизировать открытие Ваших сделок, закрывать их, отменять/заменять сделки.
Индикатор - это программа, которая позволяет Вам пользоваться функциями технических индикаторов, но не может автоматизировать Ваши сделки.
Скрипт - Это программа, выполняющая одну функцию. В отличии от советников, скрипты исполняются однократно - при востребовании, а не на каждом тике. И, конечно же, скрипт не имеет доступа к техническим индикаторам.
Это были ответы на вопросы: "Что" такое MQL4? "Почему" надо использовать MQL4?
Теперь, "Где" писать MQL4?

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

1-Сложный путь:

Сложный путь заключается в использовании Вашего любимого текстового редактора и команды prompt для компиляции.
Блокнот - неплохой выбор, но не забывайте две вещи:

1-сохранять файл, который Вы создали в обычном текстовом формате.
2-сохранять файл с расширением .mq4 (это чтобы потом было легче открыть его с помощью MetaEditor), хотя можете сохранять в любом формате.

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

MetaTrader снабжён своим собственным компилятором (программа, которая превращает Ваш код в машинный язык), называемым MetaLang.exe.

MetaLang.exe - консольная программа, которая на входе берёт два параметра, а на выходе даёт файл формата .ex4 (такие файлы понимает метатрейдер).
Первый параметр - это опции, и единственная возможная опция - это -q (quit)
Второй параметр - полный путь к Вашему .mql файлу.

Синтаксис выглядет так:
metalang [options...] filename

Пример:

1- найдите путь к своему metalang.exe, он лежит там же, где и MetaTrader (например: D:\Program Files\MetaTrader 4)

2- создайте batch-файл и назовите его compile.bat (или любым другим именем)

3- напишите следующие строки в bat-файл, а затем сохраните его:
cd D:\Program Files\MetaTrader 4
metalang -q "D:\ProgramFiles\MetaTrader 4\my_first_script.mq4"
(не забудьте подставить свой путь к MetaTrader)

4- Запустите batch-файл, и если Вам повезёт, то Вы увидите:



Рис. 1



Как видите, у Вас появился файл "my_first_mql4_script.ex4"

2-Простой путь

В MetaTrader есть хороший встроенный редактор, называемый MetaEditor, который имеет три особенности:

1- Он подчёркивает различные конструкци языка MQL4, пока вы читаете/набираете код.

2- Очень легко компилировать программы. Надо просто нажать F5, и MetaEditor сам сделает всю сложную работу и создаст файл .ex4.
К тому же, очень легко понять, что не так в Вашей программе, взглянув в инструментарий.

3- Встроенный исчерпывающий словарь.


Урок 2 - СИНТАКСИС

Всем привет.

Сегодня мы разговариваем про синтаксис языка MQL4.

И, как я уже говорил, если Вы программируете на C или C++, то Вы уже очень многое знаете про MQL4.

Это потому, что синтаксис MQL4 очень похож на синтаксис C.

Синтаксис — сторона языка программирования, которая описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию). "Wikipedia"

Т.е. когда мы изучаем синтаксис языка, мы изучаем его грамматику и правила написания, которые состоят из:

Форматирование
Комментарии
Идентификаторы
Зарезервированные слова

Разберёмся с каждым из этих пунктов отдельно.

1 - Форматирование текста

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

Например, следующие коды равнозначны в MQL4:

Код:
double MacdCurrent, MacdPrevious, SignalCurrent;
Код:
double

MacdCurrent,

MacdPrevious,

SignalCurrent;
Код:
double MacdCurrent, MacdPrevious, SignalCurrent;
Но, как Вы видите, первый вариант более читаем и проще воспринимается.

Однако, к любому правилу есть исключения:

1. Запрещено исрользовать символ переноса строки после знака решётки:

Например, следующая строка неверна:

Код:
#property

copyright "Copyright © 2004, MetaQuotes Software Corp."
А эта верна:

Код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
2. Запрещено использовать пробельные символы внутри констант, идентификаторов и ключевых слов.

Например, следующая строка верна:

Код:
extern int MA_Period=13;
Здесь "extern" и "int" - ключевые слова, "MA_Period" - идентификатор, а "13" - константа.
Но об этом подробнее в следующем уроке.

Следующие строки неверны:

Код:
extern int MA_Period=1

3;
Код:
extern int MA_Period=1 3;
Код:
ex

tern int MA_Period=13;
2 - Комментарии

Чтобы упростить мир программирования (превратить его из невклидового четырёхмерного пространства в евклидово трёхмерное параметрическое) [шутка ;) - всё проще], в каждом языке программирования есть свой стиль написания комментариев к коду.

Вы пишите комментарии, которые компилятор игнорирует. Зато код становится понятней.

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

MQL4 (как и C/C++) и спользует два типа комментариев:

Однострочные комментарии

Однострочный комментарий начинается с символов // и заканчивается переходом на новую строку.

Например:

Код:
//Это комментарий

extern int MA_Period=13;
Код:
extern int MA_Period=13; //Это ещё один комментарий
Многострочные комментарии

Многострочные комментарии начинаются символами /* и заканчиваются символами */

Например:

Код:
/*Это

многострочный

комментарий*/
Однострочные комментарии разрешается вкладывать внутрь многострочных:

Код:
/*Это

многострочный //А это ещё один комментарий

комментарий*/
Ещё пример:

Код:
extern int /*HELLO! I’m a comment*/ MA_Period=13;
А вот так нельзя:

Код:
extern int //test MA_Period=13;
Многострочные комментарии вкладывать друг в друга запрещается.

3. Идентификаторы

Идентификатор - это имя, которое Вы присвоили своей переменной, константе или функции.

Например:

Код:
extern int MA_Period=13;
Здесь MA_Period - идентификатор.

Есть несколько правил и ограничений в выборе идентификаторов:
Длина идентификатора не должнеа превышать 31 символа.
Идентификатор должен начинаться с буквы (большой или маленькой) или с символа _.
В качестве идентификаторов нельзя использовать зарезервированные слова, с которыми мы скоро познакомимся.
Идентификаторы чувствительны к регистру. Т.е. MA_Period и ma_Period - это разные идентификаторы.

Рассмотрим несколько примеров:

Код:
Name1 верно

_Name1 верно

1Name неверно

~Name1 неверно

N~ame1 неверно

i_love_my_country_and_my_country_loves_all_the_world

неверно

Color верно

color неверно (зарезервированное слово)
4. Зарезервированные слова

Есть "слова", которые язык использует для определённых целей.

Их запрещается использовать в качестве идентификаторов или в любых других целях.

Список зарезервированных слов:

Например следующие строчки кода неверны:

Код:
extern int datetime =13;

int extern =20;

double continue = 0;

ПРОДОЛЖЕНИЕ УРОКОВ