Быстрое погружение в MQL5
Зачем вам нужен MQL5
Есть множество причин, по которым вы решили изучать современный язык программирования торговых стратегий MQL5, и мы только приветствуем это! Старожилы легко ориентируются как в самой документации по языку, так и в статьях и множестве сервисов, которые здесь представлены. Но если вы только открыли для себя клиентский терминал MetaTrader 5, то в первый момент многое может показаться непривычным и непонятным.
Итак, что вы можете получить от знания MQL5? Возможно, вы решили научиться программировать на современном языке с поддержкой ООП (объектно-ориентированного программирования). После MQL5 вы при желании легко сможете освоить другие высокоуровневые языки, такие как C++, С#, Java и т.д. Конечно, это не означает, что они очень похожи, но общие основы в них очень близки.
Или вы уже владеете одним из этих языков и решили создать собственного торгового робота или информационно-аналитическую систему для работы на финансовых рынках? Вам не составит в таком случае труда освоить специализированный язык MQL5, который создан именно для этих целей.
А может, вы уже хорошо знаете язык MQL4, на котором создано огромное количество торговых роботов и индикаторов для популярного торгового терминала MetaTrader 4? Тогда вам достаточно будет приложить немного усилий, и вы увидите всю мощь нового языка MQL5 и все те выгоды, которые дает новая среда разработки MetaEditor 5.
Причин для изучения MQL5 может быть множество, мы хотим в этой статье дать вам несколько советов, с чего начать и на что обратить внимание. Итак, начнем.

Возможности и особенности языка
Язык MetaQuotes Language 5 (MQL5) разработан компанией MetaQuotes Software Corp. на основе многолетнего опыта по созданию информационно-торговых платформ нескольких поколений. Основные достоинства:
Новичкам в программировании
Если вы не имеете опыта программирования на языках высокого уровня, то можете взять любой учебник по языку C++ и на его примере изучить основы языка MQL5: синтаксис, типы данных, переменные, операторы, функции, ООП и т.д. Разработчики языка MQL5 стремились к тому, чтобы максимально обеспечить его совместимость по возможностям с широко распространенным языком C++.
Поначалу вам может показаться неудобным новый подход к написанию индикаторов, от множества новых функций обработки событий будут разбегаться глаза, а Си-подобный синтаксис и новые типы данных на первых порах будут непривычны.
Но пройдет совсем немного времени, и вы оцените все те преимущества, которые дает MQL5 по сравнению с привычным для вас языком предыдущего поколения MQL4. А богатые возможности по работе с чартами, графическими объектами и возможностью самому нарисовать какой угодно рисунок, как на холсте! Вы сами сможете всё оценить после знакомства с MQL5.
Если вы пишете на одном из современных языков, то вам не составит труда в кратчайшие сроки освоить и MQL5. ООП и событийная модель уже знакомы вам, останется только изучить специфические функции, специально заточенные под алготрейдинг:
Есть и небольшие отличия в синтаксисе языка, которые сделаны из соображений безопасного написания кода и оптимального времени выполнения программы:
Если вы ранее не торговали, то некоторые вопросы при написании торгового робота могут вызвать торговые термины и работа с тестером стратегий. Но на этот случай в разделе Статьи есть полезные публикации:
Таким образом, для профессионального программиста сам по себе язык MQL5 не является проблемой, тут главным является знакомство с торговлей и связанными с ней понятиями.
Установка терминала MetaTrader 5
И если вы не сильны в администрировании или не любите ходить по многочисленным скрытым каталогам и копаться в них, то укажите папку для установки терминала где-нибудь вдали от Program Files, чтобы данные терминала хранились в том же каталоге, где и сам терминал MetaTrader 5. Например, установите терминал на диск D:\, если сама операционная система установлена на диске C:\.
Подробнее о различиях в режимах работы терминала MetaTrader 5 в зависимости от пути установки можно почитать во встроенной справке в разделе Начало работы → Запуск платформы.
Индикаторы, скрипты и советники
В языке MQL5 существуют три основных вида программ, каждый из которых наилучшим образом приспособлен для решения своего круга задач:
Изучение основ языка MQL5 лучше всего начинать с написания скриптов, в которые можно вставлять примеры из Документации MQL5 или брать примеры скриптов из Code Вase. Далее можно приступать к работе с графическими объектами и начинать опыты с торговыми операциями на демосчете.
В качестве следующего этапа в изучении можно порекомендовать написание собственных пользовательских индикаторов и разбор примеров из Code Base и статей с примерами индикаторов. К тому времени, как вы освоите индикаторы, вы уже будете готовы к пониманию функций обработки событий.
Конечной целью является создание простых экспертов и проверка их на истории в тестере стратегий терминала MetaTrader 5. На эту тему также опубликовано множество статей в разделах Эксперты, Тестер и Торговые Системы.
Событийная модель
Программа в MQL5 работает только по возникновению событий. Событием может быть загрузка и инициализация программы MQL5, появление тика (изменение цены финансового инструмента), изменение свойства графика, смена символа или таймфрейма на графике, срабатывание отложенного ордера и т.д.
Таким образом, событийная модель позволяет писать интерактивные программы наиболее простым путем. Тут открываются широкие возможности по созданию собственных графических панелей и удобного пользовательского интерфейса, необходимого конкретному трейдеру. Встроенные функции по работе с графикой позволяют создавать полноценные приложения как по качеству работы программы, так и по качеству её дизайна.
Возможность генерации пользовательского события функцией EventChartCustom() для любого открытого графика в терминале MetaTrader 5 позволяет создавать сложные интерактивные системы. Перехват и обработка событий производится функцией OnChartEvent(). Иллюстрацией таких возможностей могут служить статья Плеер торговли на основе истории сделок и пример для функции EventChartCustom ().
Отладка и справка
Терминал MetaTrader 5 и редактор MetaEditor 5 содержат хорошо документированную встроенную справку, которую можно вызвать по F1. Вся документация обновляется автоматически по LiveUpdate. Кроме того, эта справка доступна в онлайне на официальном сайте торговой платформы MetaTrader 5 на нескольких языках:
Наиболее важной при изучении является документация MQL5, которая представлена не только в онлайн версии на странице https://www.mql5.com/ru/docs, но доступна там же для скачивания в CHM- и PDF-форматах на множестве языков.
Клиентский терминал и редактор MetaEditor 5 тесно интегрированы между собой. Вы всегда можете перейти из одного приложения в другое по кнопке F4. Это очень удобно для правки кода, особенно если у вас открыто несколько терминалов.
Режим отладки просто необходим как для поиска ошибок в своей программе, так и для понимания и изучения языка MQL5. При этом вы можете не только расставлять в своем коде точки останова. Существует специальная функция DebugBreak(), которая сработает только если программа работает в режиме отладки.
И конечно, стоит упомянуть о мощной поисковой системе, интегрированной в редактор MetaTrader 5, которая позволяет искать нужные результаты не только в самом исходном файле или папке, но и на сайте сообщества MQL5.community в статьях, на форуме и в Code Base.

Найденные результаты вы можете отфильтровать по категориям, выбрав только нужные. Таким образом, среда разработки предоставляет не только встроенную справку по редактору и языку MQL5, но и возможность найти полезные материалы на сайте mql5.com.
Профилировка кода
На картинке показан пример профилировки кода, который в свое время приводился на форуме (https://www.mql5.com/ru/forum/7134). Вы можете самостоятельно проверить его возможности, скачав код из указанной ветки.
MQL5 Storage: храните и пользуйтесь своими разработками централизованно

Жизнь индикаторов, чартов и графических объектов
Кроме того, в MQL5 можно вычислять значения одного индикатора на значениях другого индикатора, а также на значениях массивов. Это позволяет создавать универсальным и простым способом сложные индикаторные расчеты. И как уже упоминалось выше, возможностей по графическому представлению значений индикатора в языке MQL5 более чем достаточно.
Все операции по управлению свойствами чартов и графических объектов являются асинхронными, это позволяет не тратить время на ожидание, пока видеосистема терминала отобразит изменения цвета, размеров и т.д. Если вам необходимо получить немедленный результат выполнения функции из раздела Графические объекты или Операции с графиками, вызывайте ChartRedraw() для принудительной перерисовки графика. В остальных случаях перерисовка будет сделана терминалом автоматически при первой возможности.
Торговые операции
Можно совершить покупку или продажу, выставить отложенный ордер для совершения покупки/продажи по условию либо удалить существующий отложенный ордер. При успешном выполнении функции OrderSend() результат выполнения торгового запроса записывается в структуру MqlTradeResult.
На первых порах в ам вовсе необязательно самостоятельно разбираться с правильностью заполнения структуры MqlTradeRequest при изучении MQL5, для проведения торговых операций в Стандартной библиотеке существует специальный класс CTrade, который как раз и призван упростить жизнь программиста на MQL5:
| Операции с ордерами | |
|---|---|









