Основы MQL5 программирования. Разработка технических индикаторов и торговых советников
Александр Вадимович Нечаев
Начиная с самых основ, мы пройдем базовые нюансы языка, разберемся со встроенными торговыми и информационными библиотеками, напишем технический индикатор, а также торговый советник. Также мы изучим основы обработки графики, разработав торгово-информационную панель для одного из наших алгоритмов. Книга рассчитана на разработчиков, имеющих некоторый опыт, но в то же время будет по силам и людям, имеющим на данный момент только усердие и настойчивость.
Основы MQL5 программирования
Разработка технических индикаторов и торговых советников
Александр Вадимович Нечаев
© Александр Вадимович Нечаев, 2021
ISBN 978-5-0053-8758-5
Создано в интеллектуальной издательской системе Ridero
Глава 1. Введение
В данной главе мы разберем, что представляет собой данный труд. Для чего он написан. Какой итог после его прочтения задумывался с точки зрения знаний разработчика.
В целом, учебник будет разделен на три части.
– Описание компилятора – для того, чтобы получить понимание того, как ориентироваться в данной программе в целом. Основы компилятора описаны для самого первого знакомства с одной стороны, но включают также и практические рекомендации, которые я сформулировал для себя из практики разработки торговых алгоритмов.
– Основы языка MQL5 – описание нюансов языка программирования, которых будет достаточно для форматирования базы или фундамента, на основе которых возможно самостоятельное углубление в особенности и возможности MQL5. В главах посвященных языку мы изучим основы, которых будет достаточно, чтобы переключиться на практическую разработку алгоритмов.
– Практика разработки – Что разумеется самое важное. Мы изучим основные особенности разработки технических индикаторов, автоматизированных торговых систем, а также разработаем торгово информационную панель, которая даст понимание по разработки утилит, содержащих графические модули, а также позволит улучшать ваши разработки качественными информационными элементами.
Изучив все три блока вы сможете самостоятельно алгоритмизировать вашу торговую идею, разработать индикатор для технического анализа по сформулированной вами системе.
Данный труд актуален для разработчиков, переходящих с C++ или других популярных языков, которые решили осваивать данное направление с нуля. Также данная работа актуальна для разработчиков торговых алгоритмов, планирующих осуществлять перенос своих разработок с MQL4 или других более старых и несовершенных языков программирования торговых алгоритмов.
Мы считаем язык MQL5 и терминал MetaTrader5 наиболее качественными и производительными инструментами для профессиональных спекуляций и будем рады предоставить информацию, которая поможет вам освоить данный инструментарий.
С уважением Нечаев А. В.
Глава 2. Основы компилятора
Первый запуск компилятора
Для простоты понимания взаимодействия с компилятором мы разделим его интерфейс на основные блоки. Далее разберем из чего эти блоки состоят. После понимания их состава мы настроим компилятор под наиболее подходящую нам стилистику.
На данном скриншоте приведен стартовый вид компилятора.
СКРИНШОТ 1. ОБЩИЙ ВИД КОМПИЛЯТОРА
Давайте рассмотрим каждый блок отдельно, посмотрим его состав и актуальные для текущего обсуждения элементы.
Блок 1. Навигатор
СКРИНШОТ 2. БЛОК НАВИГАТОРА КОМПИЛЯТОРА
Первоначально мы видим в Навигаторе 11 папок желтого цвета и 1 папку синего цвета. В них хранится весь объем кода, встроенные изображения, там-же мы будем хранить наши подключаемые файлы и многое другое. Давайте разберемся, что находится в этих папках и что может быть нам актуально в рамках данного курса.
Если говорить упрощенно, то папки Experts, Indicators, Scripts – это папки в которых находятся основные файлы соответствующих алгоритмов, основная работа будет вестись в них и в папке Include – в ней хранятся стандартные библиотеки, которые мы будем подключать к нашим продуктам. Остальные папки в рамках данного курса нас не сильно интересуют, но все же я приведу их полный перечень с комментариями к каждой:
– Experts – Папка с данными торговых экспертов, все новые эксперты, которые будут нами создаваться будут храниться в ней.
– Files – первоначально пустая, хранит создаваемые алгоритмами файлы. То есть если вы например создаете текстовые файлы из советника для переноса торговой статистики из текстового файла в Excel – то данная папка будет хранить в себе все первичные текстовые файлы.
– Images – Первоначально пустая. Используется для хранения подключаемых изображений. Наиболее распространенный пример – это изображения значков для кнопок торговых панелей.
– Include – Хранит файлы стандартных библиотек. Стандартные библиотеки позволяют серьезно сэкономить время разработки и их освоение является весьма важным элементом обучения работы с терминалом.
– Indicators – Папка данных технических индикаторов. хранит коды стандартных индикаторов. Также в ней будут располагаться все создаваемые нами торговые индикаторы.
– Logs – файлы записей журналов. При работе терминала при возникновении различных событий производятся записи в Journal или во вкладку Experts, они расположены в терминале, это то окно, в котором вы смотрите данные по открытым позициям или торговую историю вашего счета. В разработке данная папка не участвует, но если у вашего эксперта или индикатора появится ошибка выполнения – то она будет записана во вкладку Experts торгового терминала и будет видна в лог файлах из обсуждаемой в данном пункте папки. Относится к торговому терминалу, в данном курсе не рассматриваются.
– Presets – хранит. set файлы. То есть файлы сохраненных настроек советников. Относится к торговому терминалу, в данном курсе не рассматриваются.
– Profiles – в данной папке хранятся профили. Это перечни открытых символов в окне market watch, а также перечни открытых окон. Относится к торговому терминалу, в данном курсе не рассматриваются.
– Scripts – Хранящиеся в данной папке скрипты это программы, которые совершают одно действие и отключаются. Пример скрипта – программа закрывает все открытые позиции и отключается. В данном курсе мы не будем рассматривать скрипты ввиду простоты и сходства с созданием советников.
– Services – MetaTrader 5 предусматривает возможность подключения дополнительных подписок. Их рассмотрение не является частью данного курса.
– Shared Projects – В данной папке хранятся ваши проекты, которые могут разрабатываться совместно с другими разработчиками. Командная работа над выполнением масштабных проектов сильно упрощена с добавлением возможности работы над совместными проектами. В рамках данного курса мы не будем работать над проектами, поэтому данная папка также не будет использована.
Блок 2. Toolbox
СКРИНШОТ 3. БЛОК TOOLBOX КОМПИЛЯТОРА
– Errors – Вкладка Errors будет отображать результаты каждой компиляции. Какие файлы были объединены, сколько времени заняла их компиляция в. ex5 программу. Также в данной вкладке отображаются ошибки и предупреждения. Если ваш файл содержит ошибку – компиляция не пройдет и файл с ошибкой не будет запущен терминалом. Если у вас есть предупреждение – файл будет запущен, но лучше его не запускать, постольку поскольку предупреждения чаще всего появляются в местах генерирующих некорректный результат расчетов или преобразований.
– Search – Вкладка файлового поиска или поиска на mql5.com. Неактуальна для данного курса.
– Отладка, Профилировщик – Мы не будем рассматривать профилирование и отладку программ в рамках этой книги. Этот функционал следует изучать после завершения данного курса. Функционал этот важен для освоения. Его описание может быть найдено в справочнике к компилятору.
– Articles – Статьи по различным категориям. При клике открываются в браузере.
– Code Base – открытые коды сайта mql5.com, открываются в браузере.
– Public Projects – Список публичных проектов, в которые можно вступить. Подразумеваются проекты для совместной разработки. Могут быть полезны для обучения.
– Journal – Журнал обновлений компилятора, проектов, хранилища.
Блок 3. Toolbar.
СКРИНШОТ 4. TOOLBOX КОМПИЛЯТОРА