
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5
Описание
Данное руководство посвящено углубленному изучению языка программирования MQL5 для торговой платформы MetaTrader 5. Вы научитесь создавать пользовательские индикаторы и советники, используя практические примеры и подробные объяснения. Работа с событиями, обработчиками и функциями обратного вызова, а также с различными свойствами индикаторов будут рассмотрены детально. Изучение кода индикаторов, начиная от объявления свойств и заканчивая обработкой событий, позволит вам создать собственные инструменты для анализа рынка. Книга подойдет для тех, кто уже знаком с основами MQL5 и желает расширить свои навыки программирования для MetaTrader 5.
Создано в интеллектуальной издательской системе Ridero
Надеюсь, вы все уже прочитали справочник MQL5 на сайте https://www.mql5.com/ru/docs.
Здесь мы не будем пересказывать этот документ, а сосредоточимся на его практическом использовании. Мы будем позволять себе изредка только его цитирование.
Как сказано в предисловии к справочнику:
Программы, написанные на MetaQuotes Language 5, имеют различные свойства и предназначение
И далее идет перечисление Советник, Пользовательский индикатор, Скрипт, Библиотека и Включаемый файл.
Скрипты используются для выполнения одноразовых действий, обрабатывая только событие своего запуска, и поэтому не будут нам здесь интересны.
Также нам не будут интересны библиотеки, так как использование включаемых файлов более предпочтительно для уменьшения накладных расходов.
Поэтому мы сосредоточимся на создании советников и индикаторов с использованием включаемых файлов. Такова наша цель применения языка программирования MQL5, синтаксис которого конечно интересен, но будет нам только в помощь.
На самом деле программирование на языке MQL5 представляет собой яркий пример событийно-ориентированного программирования, так как весь код MQL5-приложения построен на переопределении функций обратного вызова – обработчиков событий клиентского терминала и пользователя. А уже в коде функций обратного вызова можно использовать либо процедурное программирование, либо объектно-ориентированное программирование. Здесь мы рассмотрим оба этих подхода.
Код индикатора начинается с блока объявления свойств индикатора и различных объектов, используемых индикатором, таких как массивы буферов индикатора, параметры ввода, глобальные переменные, хэндлы используемых технических индикаторов, константы.
Данный блок кода выполняется приложением Торговая Платформа MetaTrader 5 сразу при присоединении индикатора к графику символа.
После блока объявления свойств индикатора, его параметров и переменных, идет описание функций обратного вызова, которые терминал вызывает при наступлении таких событий, как инициализация индикатора после его загрузки, перед деинициализацией индикатора, при изменении ценовых данных, при изменении графика символа пользователем.
Для обработки вышеуказанных событий необходимо описать такие функции как OnInit , OnDeinit , OnCalculate и OnChartEvent .
В функции OnInit индикатора, как правило, объявленные в начальном блоке массивы связываются с буферами индикатора, определяя его выводимые значения, задаются цвета индикатора, точность отображения значений индикатора, его подписи и другие параметры отображения индикатора. Кроме того, в функции OnInit индикатора могут получаться хэндлы используемых технических индикаторов и рассчитываться другие используемые переменные.
В функции OnDeinit индикатора, как правило, с графика символа удаляются графические объекты индикатора, а также удаляются хэндлы используемых технических индикаторов.
В функции OnCalculate собственно и производится расчет значений индикатора, заполняя ими объявленные в начальном блоке массивы, которые в функции OnInit индикатора были связаны с буферами индикатора, данные из которых берутся терминалом для отрисовки индикатора. Кроме того, в функции OnCalculate могут изменяться цвета индикатора и другие параметры его отображения.
В функции OnChartEvent могут обрабатываться события, генерируемые другими индикаторами на графике, а также удаление пользователем графического объекта индикатора и другие события, возникающие при работе пользователя с графиком.
На этом код индикатора заканчивается, хотя там могут быть также определены пользовательские функции, которые вызываются из функций обратного вызова OnInit , OnDeinit , OnCalculate и OnChartEvent .
Цитата из справочника:
Свойства программ (#property). У каждой mql5-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска. В первую очередь это касается внешних настроек индикаторов. Свойства, описанные во включаемых файлах, полностью игнорируются. Свойства необходимо задавать в главном mq5-файле. #property идентификатор значение
В качестве первого свойства, как правило, указывается имя разработчика, например:
#property copyright «2009, MetaQuotes Software Corp.»
Далее указывается ссылка на сайт разработчика:
#property link http://www.mql5.com
После этого идет описание индикатора, каждая строка которого обозначается с помощью идентификатора description, например:
#property description «Average Directional Movement Index»
Далее указывается версия индикатора:
#property version «1.00»
На этом, как правило, объявление общих свойств индикатора заканчивается.
Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
Эта книга – ваш полный гид по работе с программой 1С:Управление небольшой фирмой 8.2. Вы научитесь автоматизировать управленческий учет основных операций, а также процессы маркетинга и кадрового планирования. Подробные уроки охватывают все аспекты деятельности современного предприятия, от ввода данных до формирования отчетов. Практические примеры и рекомендации основаны на реальных ситуациях, гарантируя эффективное применение полученных знаний. Изучите все возможности программы 1С:Управление небольшой фирмой 8.2 с нуля, шаг за шагом.

Искусство программирования для Unix
Эта книга не просто руководство по Unix, а исследование его философии и культуры. Она не ориентирована на технические подробности, а на понимание "почему это следует сделать", а не "как". Автор, Эрик Стивен Реймонд, обращается к опыту ведущих разработчиков Unix, чтобы показать, как коллективная культура и традиции влияют на создание эффективных и устойчивых программ. Книга разделена на четыре части: Контекст, Проектирование, Реализация и Сообщество. Каждый раздел раскрывает различные аспекты Unix-культуры, от истории и философии до практических рекомендаций для программистов. Книга подходит для тех, кто хочет понять не только "как", но и "почему" Unix-программирование так эффективно. Понимание принципов проектирования, заложенных в Unix, поможет вам создавать более качественные и гибкие программы.

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

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