MQL4 (MetaQuotes Language 4) — это встроенный язык программирования MetaTrader 4, на котором пишут пользовательские индикаторы, советники (торговых роботов) и скрипты. Синтаксис близок к языку C, а готовый код компилируется в файл .ex4 в MetaEditor.
Эта статья — обучающее ядро по разработке под MT4. Без воды про «сигналы» и «настройки»: здесь разбор того, из чего состоит язык, чем индикатор отличается от советника, как устроена функция OrderSend и с чего реально начать писать свой первый код. Материал — часть большого гида Индикаторы для MT4: полный гид по установке, настройке и применению, к которому стоит вернуться за прикладной частью.
Что такое MQL4 и зачем он трейдеру
MQL4 расшифровывается как MetaQuotes Language 4 — язык, который компания MetaQuotes Software создала специально для торговой платформы MetaTrader 4. Это не отдельная программа, а часть терминала: код пишется в редакторе MetaEditor (открывается клавишей F4 или кнопкой на панели MT4), а затем компилируется в исполняемый файл, который терминал запускает на графике.
Зачем это трейдеру? Язык даёт три практических возможности, которых нет у штатных инструментов платформы:
- Свой индикатор. Если стандартных MACD, RSI и скользящих средних не хватает, вы рисуете на графике собственную линию или стрелку по нужной формуле.
- Свой советник. Робот, который сам анализирует рынок и открывает сделки по заданным правилам — без участия человека.
- Автоматизация рутины. Скрипт может закрыть все позиции, выставить отложенные ордера сеткой или посчитать статистику одним нажатием.
Важно с самого начала понять: MQL4 работает только в MetaTrader 4. Для MetaTrader 5 существует отдельный язык MQL5, и код напрямую между ними не переносится. Если вы определились, что торгуете на MT4, — учить нужно именно MQL4.
Индикатор, советник и скрипт: в чём разница
Это первое, что путают новички. Все три — программы на MQL4, но решают разные задачи и хранятся в разных папках терминала. Разберём на таблице.
| Параметр | Индикатор | Советник (Expert Advisor) | Скрипт |
|---|---|---|---|
| Главная задача | Показывать данные на графике | Анализировать рынок и торговать | Выполнить одно действие |
| Может открывать сделки | Нет | Да (через OrderSend) | Да, но без логики ожидания |
| Когда запускается код | На каждый тик и при перерисовке | На каждый новый тик | Один раз и завершается |
| Ключевая функция | OnCalculate() / start() | OnTick() / start() | OnStart() |
| Папка в каталоге данных | MQL4/Indicators | MQL4/Experts | MQL4/Scripts |
| Работает после закрытия | Висит на графике постоянно | Висит на графике постоянно | Завершается сразу |
Главное отличие в одной фразе: индикатор только рисует и считает, а советник ещё и сам нажимает кнопку «купить» или «продать». Поэтому к коду советника требования к надёжности и контролю рисков на порядок выше — ошибка в индикаторе испортит картинку, ошибка в советнике потеряет депозит.
Основы языка: типы данных, функции, события
MQL4 наследует синтаксис языка C, поэтому, если вы видели любой «сишный» код, многое покажется знакомым: точки с запятой в конце строк, фигурные скобки для блоков, циклы for и while, условия if/else. Минимальный набор, который нужно понять новичку:
- Типы данных.
int— целые числа,double— дробные (цены, лоты),string— текст,bool— истина/ложь,datetime— время. Цены и объёмы почти всегдаdouble. - Переменные. Объявляются с указанием типа:
double lot = 0.1;илиint magic = 12345; - Функции-события. Терминал сам вызывает определённые функции в нужный момент. У советника это
OnInit()(при запуске),OnTick()(на каждое изменение цены) иOnDeinit()(при снятии с графика). - Встроенные функции. В языке уже есть сотни готовых команд:
AskиBid— текущие цены,iMA()— значение скользящей средней,OrderSend()— открыть сделку,Print()— вывести сообщение в журнал.
Простейший рабочий пример — советник, который при каждом тике выводит текущую цену покупки в журнал «Эксперты»:
// советник: печатает цену Ask на каждом тике
void OnTick()
{
Print("Текущая цена Ask = ", Ask);
}
Этого достаточно, чтобы скомпилировать файл, перетащить его на график и увидеть, как код реально исполняется. Дальше остаётся добавлять условия и торговые команды.
Функция OrderSend: как робот открывает сделку
OrderSend — центральная функция всей разработки советников под MT4. Именно она отправляет торговый приказ на сервер брокера. Без неё робот может анализировать рынок сколько угодно, но не совершит ни одной сделки. Её упрощённая сигнатура:
int ticket = OrderSend(
Symbol(), // инструмент, например "EURUSD"
OP_BUY, // тип: OP_BUY (покупка) или OP_SELL (продажа)
0.1, // объём в лотах
Ask, // цена открытия
3, // допустимое проскальзывание в пунктах
0, // Stop Loss (0 = без стопа)
0, // Take Profit (0 = без тейка)
"my comment", // комментарий к ордеру
12345, // magic number - метка советника
0, // срок жизни отложенного ордера
clrGreen); // цвет стрелки на графике
Несколько вещей, которые обязан знать новичок, прежде чем доверять этой функции реальные деньги:
- Возврат значения. Функция возвращает номер ордера (тикет) при успехе или
-1при ошибке. Результат всегда нужно проверять, иначе вы не узнаете, что сделка не открылась. - Magic number. Это число-метка, по которой советник отличает свои ордера от чужих. Если на счёте работает несколько роботов, без magic они «перепутают» сделки.
- Цена для покупки и продажи разная. Покупка открывается по
Ask, продажа — поBid. Перепутать — частая ошибка. - Stop Loss обязателен. Технически можно ставить 0, но в реальной торговле советник без защитного стопа — прямой путь к потере депозита.
Понимание OrderSend — водораздел между «написал индикатор» и «написал торгового робота». Дальше идут более сложные функции управления позицией: OrderModify() (передвинуть стоп или тейк), OrderClose() (закрыть сделку), OrderSelect() (выбрать существующий ордер для проверки).
С чего начать писать свой код
План для тех, кто открывает MetaEditor впервые. Последовательность проверена на собственном опыте обучения — она экономит недели хаотичного тыканья.
- Откройте MetaEditor. В терминале MT4 нажмите F4 или кнопку MetaEditor. Это среда, где пишут и компилируют код.
- Создайте шаблон через мастер. Файл — Создать — выберите «Советник» или «Пользовательский индикатор». Мастер сам подставит каркас функций
OnInit,OnTick,OnDeinit— не придётся помнить их наизусть. - Начните с индикатора, а не с советника. Индикатор не торгует, поэтому ошибка в нём ничего не стоит. Сначала научитесь рисовать линию по своей формуле, потом переходите к роботам.
- Изучите готовый код. В папке MQL4/Indicators уже лежат исходники стандартных индикаторов. Откройте, например, Moving Average.mq4 и разберите его построчно — это лучший учебник.
- Тестируйте в «Тестере стратегий». Прежде чем запускать советника на счёте, прогоните его на истории (Ctrl+R в терминале). Тестер покажет логику и ошибки без риска для денег.
- Только потом — демо-счёт. Реальное поведение на живых котировках проверяют на демо, и лишь затем — на минимальном объёме реального счёта.
Если своя разработка пока кажется сложной, начните с установки чужих готовых решений — подробный разбор есть в материалах Как установить пользовательские индикаторы в MetaTrader 4 и Советники и роботы для форекс. Чтение чужого рабочего кода — быстрый способ понять язык.
MQL4 или MQL5: что учить в 2026 году
Логичный вопрос новичка: тратить время на MQL4, когда есть более новый MQL5? Короткий ответ — зависит от того, на какой платформе вы торгуете. Сравнение по существу:
| Критерий | MQL4 (MetaTrader 4) | MQL5 (MetaTrader 5) |
|---|---|---|
| Сложность для новичка | Ниже, проще учётная модель | Выше, объектно-ориентированный подход |
| Модель сделок | Отдельные ордера (хеджинг) | Позиции и неттинг |
| Готовых индикаторов в сети | Очень много, накоплено за годы | Меньше, но растёт |
| Тестер стратегий | Базовый | Многопоточный, на тиках |
| Совместимость кода | Прямого переноса нет — языки разные | |
Практический вывод: если ваш брокер и привычка — MT4, и вокруг море готовых индикаторов под него, начинать разумно с MQL4. Он проще для понимания базовых принципов, а перейти на MQL5 после освоения первого языка несложно — синтаксис родственный. Тему платформ подробно разбирает гид про MetaTrader 5.
Типичные ошибки новичков
- Не проверяют результат OrderSend. Если функция вернула -1, сделка не открылась. Код, который этого не учитывает, «думает», что всё в порядке, и ломает всю логику.
- Путают Ask и Bid. Открытие покупки по цене продажи приводит к ошибке «неверная цена» (error 129).
- Забывают про magic number. Несколько советников на одном счёте без меток вмешиваются в чужие ордера.
- Сразу запускают на реальном счёте. Пропуск стадии тестера и демо — самая дорогая ошибка. Любой советник сначала проверяется на истории.
- Копируют чужой .ex4 вслепую. Скомпилированный файл нельзя прочитать. Доверять закрытому коду, тем более торгующему деньгами, без проверки на демо — риск.
Многие сильные платные роботы и индикаторы под MT4 стоят десятки и сотни долларов. На форуме трейдеров в разделе советников такие продукты покупают в складчину — совместно, скидываясь, и каждый получает доступ за малую долю цены. Готовые индикаторы для форекс там же. Заодно полезно посмотреть, как устроен код рабочих решений, прежде чем писать своё.
Частые вопросы (FAQ)
Нужно ли уметь программировать, чтобы освоить MQL4?
Базовое понимание программирования сильно ускоряет старт, но не обязательно. Синтаксис простой, а мастер MetaEditor создаёт каркас кода за вас. Многие трейдеры учат язык с нуля именно ради своих идей.
Чем индикатор отличается от советника одним предложением?
Индикатор только показывает данные на графике и сам не торгует, а советник анализирует рынок и открывает сделки через функцию OrderSend.
Что делает функция OrderSend?
Это команда, которая отправляет брокеру приказ открыть сделку: какой инструмент, покупка или продажа, объём, цена, стоп-лосс и тейк-профит. Без неё робот не совершит ни одной сделки.
Можно ли запустить код MQL4 в MetaTrader 5?
Нет. MetaTrader 5 использует язык MQL5, код напрямую не переносится. Под MT4 пишут на MQL4, под MT5 — на MQL5.
С чего начать писать первый код?
Откройте MetaEditor (F4), создайте через мастер шаблон индикатора, разберите исходник стандартного Moving Average.mq4 и только потом переходите к советникам, проверяя их в Тестере стратегий и на демо-счёте.
Автор: Дмитрий Ковалёв, трейдер и аналитик рынка Forex с 2012 года (более 12 лет практики). Специализация — EUR/USD, GBP/USD, USD/JPY, таймфреймы H1-D1.
Дисклеймер: материал носит обучающий характер и не является индивидуальной инвестиционной рекомендацией. Торговля на рынке Forex и использование торговых роботов связаны с высоким риском потери капитала. Любой код проверяйте на демо-счёте; решения принимайте самостоятельно.