Язык программирования для мт4
Введение в программирование на языке MQL4
Приступая к изучению программирования на языке MQL4, необходимо обозначить общие границы наших интересов. Прежде всего отметим, что обсуждаемые в учебнике программы могут использоваться только как прикладные программы для работы в клиентском терминале MetaTrader 4. Чтобы понять, какую роль эти программы играют в практике управления торговлей, рассмотрим рис. 1.
Рис. 1. Программа на MQL4 в составе клиентского терминала MetaTrader 4.
Встроенные средства
Для ручного управления торговлей используется панель управления ордерами. С помощью этой панели трейдер может открывать, закрывать и модифицировать ордера. Кроме того, в клиентском терминале имеется возможность автоматически управлять положением стоп-приказов рыночных ордеров. В результате воздействия трейдера на встроенные средства управления торговлей в клиентском терминале формируются торговые приказы (ордера), которые отправляются на сервер.
Для получения подробной информации о работе клиентского терминала необходимо обратиться к «Руководству пользователя» (каталог_терминала\Terminal_russian.chm).
Программные средства
Технический анализ рынка и управление торговлей в клиентском терминале MetaTrader 4 могут также осуществляться с помощью программных средств. Язык MQL4 позволяет создавать такие программы. Различают три вида прикладных программ, создаваемых на языке MQL4 и предназначенных для работы в клиентском терминале:
На рис. 1 видно, что прикладная программа имеет те же средства доступа к информационной среде клиентского терминала, что и встроенные средства для ручной торговли (синие стрелки), а также может формировать управляющие воздействия (красные стрелки), сообщаемые в клиентский терминал. Программы разных видов могут использоваться одновременно и при этом обмениваться данными. С помощью этих приложений программист может механизировать значительную часть торговых операций или создать робот, способный осуществлять торговлю без вмешательства трейдера.
Прикладные программы и ручные средства управления могут использоваться в клиентском терминале одновременно, взаимно дополняя друг друга.
Основополагающая техническая особенность торговли c помощью информационно-торговой системы MetaTrader состоит в том, что все управляющие воздействия формируются в клиентском терминале и отправляются на сервер. Прикладные программы (эксперт, скрипт, индикатор) могут работать только в составе клиентского терминала при условии его подключения к серверу (дилинговому центру). На сервере никакие прикладные программы не устанавливаются. |
Сервер позволяет лишь обрабатывать приказы, поступающие со стороны клиентского терминала. Если клиентский терминал отключён от Интернета или запущенная в нём прикладная программа (эксперт или скрипт) по каким-то причинам не генерирует управляющие воздействия, то на сервере ничего происходить не будет.
Круг наших интересов будут составлять программы (эксперты, скрипты и пользовательские индикаторы), позволяющие вести механизированную или полностью автоматизированную торговлю и значительно расширяющие информационное сопровождение торговли (см. рис. 1). В представленном учебнике будет рассказано, из чего состоит программа, каковы основные правила составления и использования программ. Мы также детально рассмотрим примеры программ и параметры информационной среды клиентского терминала, доступные программе во время её исполнения.
Программы для автоматического трейдинга имеют гораздо больше потенциальных возможностей, чем ручные средства управления торговлей. |
В подавляющем большинстве случаев программа позволяет существенно облегчить труд трейдера, избавив его от необходимости непрерывно в течение длительного срока находиться возле монитора для наблюдения за развитием рынка. Она также может помочь снизить нервную нагрузку и уменьшить количество ошибок, возникающих в период сильного эмоционального напряжения. Но главное — применение программного способа управления торговлей позволяет разработать собственные идеи и проверить их на исторических данных, подобрать оптимальные параметры для применения этих идей, а в конечном итоге — реализовать на практике продуманную торговую стратегию.
Программирование форекс-роботов без знания языка MQL4
Эта статья будет интересна в основном трейдерам, а также форекс-инвесторам для расширения кругозора. Как известно, сколько трейдеров – столько и стратегий. Причем множество интересных стратегий не смогли стать достоянием широкого трейдерского сообщества лишь по той причине, что не были автоматизированы. А не были автоматизированы они в связи с тем, что разработчики стратегии не владели навыками пользования языком программирования – в бум автоматизации многие стратегии становятся известными в виде торговых роботов.
Конечно, знание языка программирования MQL версий 4 или 5 – это значительный шаг вперед для трейдера. Язык программирования позволяет создать собственный индикатор технического анализа, написать скрипт или торговый советник. А преимущества автоматической торговли общеизвестны – это и отсутствие влияния эмоций, и большее количество свободного времени. В этой статье мы рассмотрим вопросы и различные подходы к программированию торговых роботов:
Создание программных кодов
Я веду этот блог уже более 6 лет. Все это время я регулярно публикую отчеты о результатах моих инвестиций. Сейчас публичный инвестпортфель составляет более 1 000 000 рублей.
Специально для читателей я разработал Курс ленивого инвестора, в котором пошагово показал, как наладить порядок в личных финансах и эффективно инвестировать свои сбережения в десятки активов. Рекомендую каждому читателю пройти, как минимум, первую неделю обучения (это бесплатно).
Хорошую базу для познания MQL создает владение языком программирования «С++», но и без этих знаний язык MQL хорошо поддается изучению. Многие рядовые трейдеры, изучающие язык самостоятельно, считают, что для написания несложных скриптов и программ достаточно самостоятельного изучения языка программирования в течение недели.
В сети существует масса компаний, занимающихся разработкой программ и, параллельно, организующих онлайн видеокурсы по изучению языка MQL, индивидуальные удаленные занятия по программированию.
Программирование роботов, в большинстве случаев, производится в специальном разделе торгового терминала MetaTrader4 – MetaEditor. Это многофункциональный и удобный специализированный редактор, с помощью которого можно самостоятельно создавать любые торговые алгоритмы.
Достоинством редактора является то, что созданные алгоритмы могут быть запущены сразу после создания, так как они автоматически появляются в торговой платформе. MetaEditor в МТ4 обладает такими характеристиками, как:
Помимо встроенного редактора МТ4 существует еще множество платформ для программирования советников с использованием языка С++. Например, платформы WealtLab, StockSharp и TSLab обеспечивают реализацию сразу всех этапов создания экспертов, включая их тестирование.
Платформа StockSharp является библиотекой торговых экспертов, написанных на языке С. Работа на базе этой платформы требует знания языка программирования, изучение которого может занять достаточно длительное время.
Сервис копирования сделок RAMM от AMarkets
Что такое сервис RAMM и как в нём копировать сделки
Платформа TSLab представляет собой визуальный редактор, собирающий торговый советник из функциональных блоков. Блоки написаны на языке С#, но их код в процессе программирования скрыт от пользователя. Существует и возможность использования языка C# и комбинирования программирования с визуальным редактором. Так можно дописывать отсутствующие в стандартном наборе элементы.
Промежуточной по функционалу, между платформами StockSharp и TSLab является платформа WealtLab. Она имеет визуальный редактор, правда, не очень хорошо развитый, и возможность использования языка программирования. Достоинством является отличный тестер стратегий.
Модификация советника
Более простым способом, но также требующим знания языка программирования, является модификация кода существующего советника под собственную стратегию. Для этого подбирается торговый робот, близкий по функционалу необходимому. При этом необходимо обеспечить соответствие по типу советника и используемым средствам технического анализа. С помощью модификации возможно добиться ускорения работы системы, произвести добавление алгоритмов управления, индикаторов, правил. Модификация так же осуществляется в интегрированном редакторе MetaEditor.
Программы для создания эксперта
Одним из способов программирования торгового советника является использование специализированных программ. Функционально они мало отличаются от описанной выше платформы TSLab и друг от друга и разработаны для снижения трудоемкости написания исходного кода. Создание самой торговой системы остается за трейдером.
Одной из таких программ является Forex EA Generator, реализующая блочную схему построения эксперта. Программа предполагает наличие минимальных знаний проектирования механических торговых систем.
Программа Gordago Forex Optimizer разработана с функционалом, приближенным к торговой платформе. Помимо создания советника она позволяет тестировать разработку на истории, а так же осуществлять с ее помощью торговлю, в случае наличия доступа к торговым серверам. Работа с программой интуитивно понятна – начало работы начинается с задания условий входа в рынок и выхода из него, задания инструментов анализа рынка. Функционал программы позволяет использовать разработанные эксперты в МТ4.
Сервис копирования сделок RAMM от AMarkets
Что такое сервис RAMM и как в нём копировать сделки
Полностью в автоматическом режиме эксперты создаются в программе Hlaiman EA Generator. Программа работает с торговой платформой МТ4. Для создания эксперта необходимо добавить на график желаемые инструменты технического анализа и нанести на график стрелки, указывающие места и направления входа в рынок, где осуществил бы вход сам трейдер. После этого программа самостоятельно просчитывает заданные условия входа и разрабатывает алгоритм робота. При этом качество отработки условий входа зависит от качества и количества заданных точек – они должны расставляться строго в соответствии с разработанной стратегией и таких точек должно быть нанесено максимальное количество. К сожалению, программа отсутствует в свободном доступе, что не позволяет провести тестирование созданных с ее помощью советников.
Заключение
Этой статьей я хотел рассказать о том, что процесс программирования торгового советника становится все проще и требует минимальных специальных знаний. К тому же он имеет хорошую визуализацию, упрощающую построение эксперта. Такой подход к программированию освобождает трейдера от работы с громоздким кодом и устраняет возможность совершения ошибки в его написании. Но столь значительное упрощение работы не освобождает трейдера от разработки собственно торговой стратегии, являющейся основой программирования советника.
Статьи с примерами программирования торговых роботов на языке MQL4
Эксперты являются вершиной программирования и желаемой целью каждого разработчика в автоматическом трейдинге. Написать собственного торгового робота вы сможете с помощью статей этого раздела. Новички шаг за шагом смогут пройти все этапы в создании, отладке и тестировании автоматических торговых систем.
Статьи научат вас не только программировать на языке MQL5, но и покажут как реализовать любые торговые идеи и техники. Вы узнаете, как написать трейлинг стоп, как реализовать управление капиталом, как получить значение индикатора и многое-многое другое.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Доработка тестера стратегий для оптимизации индикаторов на примерах тренда и флета
При торговле по различным стратегиям зачастую требуется определить, трендовый сейчас рынок или флетовый. С этой целью разрабатывается множество индикаторов. Но как определить, справится ли индикатор с
Применение нечеткой логики в трейдинге средствами MQL4
В данной статье предлагаются примеры применения теории нечетких множеств в трейдинге средствами MQL4. Описывается разработка индикатора и советника с использованием библиотеки FuzzyNet для MQL4
Price Action. Автоматизация торговли по паттерну «Поглощение»
В статье описывается создание советника для MetaTrader 4, торгующего по паттерну «Поглощение», включая принцип нахождения паттерна, правила установки отложенных и стоп-ордеров. Приведены результаты
Price Action. Автоматизация торговли по внутреннему бару
В статье описывается создание советника для MetaTrader 4, торгующего по внутреннему бару, включая принцип нахождения внутреннего бара, правила установки отложенных и стоп-ордеров. Приведены результаты
Типичные ошибки в программах на MQL4 и методы их устранения
В старой версии компилятора во избежание критического завершения программ многие ошибки обрабатывались средой исполнения. Например, деление на ноль или выход за пределы массива являются критическими
Советник MetaTrader 4 обменивается информацией с внешним миром
Простое, универсальное и надежное решение обмена информацией между МetaТrader 4 Советником и внешним миром. Поставщики и потребители информации могут размещаться на разных компьютерах, связь
Механическая торговая система «Треугольник Чувашова»
Вашему вниманию предлагается обзор и программный код стратегии механической торговой системы по методике Станислава Чувашова. Основой построения треугольника является пересечение двух трендовых линий
Конкурс советников внутри советника
С помощью виртуальной торговли можно создать адаптивный советник, который будет выполнять включение/отключение сделок на реальном рынке. Соберите несколько стратегий в одном эксперте! Ваш
Исследование статистики повторяемости направления свечей
Экспертная система «Комментатор». Практическое использование встроенных индикаторов в MQL4-программе
Статья рассматривает использование технических индикаторов при программировании на языке MQL4
Управление ордерами – это просто
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов
Учёт ордеров в большой программе
Рассматриваются общие принципы построения учёта ордеров в сложной программе
Графический эксперт AutoGraf
Рассматриваются возможности использования графических средств для создания удобного интерфейса управления торговлей
Работа с файлами. Пример визуализация важных рыночных событий
Статья рассматривает перспективу использования MQL4 для более продуктивной работы на рынке ФОРЕКС
События в МetaТrader 4
Статья посвящена программному отслеживанию событий в терминале МetaТrader 4, таких как открытие, закрытие и модификация ордеров, и рассчитана на пользователя, обладающего базовыми навыками работы с
Ошибка 146 («Торговый поток занят») и как с ней бороться
Статья посвящена бесконфликтной торговле нескольких экспертов на одном терминале МТ 4 и рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL 4
Пример создания эксперта
Принципы построения пользовательских программ на языке MQL 4 рассматриваются на примере создания простейшей экспертной системы на основе стандартного индикатора MACD
Особенности и ограничения тестирования торговых стратегий в MetaTrader 4
Эта статья поможет больше узнать об особенностях и ограничениях тестера торговых стратегий в MetaTrader 4
Особенности написания экспертов
Написание и тестирование экспертов в торговой системе MetaTrader 4
MQL4: основы языка, типы программ и примеры использования
Что такое MQL4? MQL4 означает MetaQuotes Language. Это язык программирования, включенный в торговый терминал MetaTrader 4. Язык программирования – это язык, на котором разработчик пишет программу. Программа в свою очередь позволяет компьютеру выполнять определенную последовательность действий.
MQL4 был выпущен вместе с первой версией MetaTrader 4 в 2005 году. За прошедшие годы он прошел через множество обновлений. В 2014 году он был полностью переработан и был выпущен 600 билд, важное обновление, в котором было представлено больше возможностей, что привело его почти к такому же уровню, как и MQL5.
MQL4 и MQL5 имеют некоторые важные различия, но сейчас мы сосредоточимся только на MQL4 и MetaTrader 4.
Введение в MQL
В последние годы валютный рынок быстро стал одним из самых популярных рынков для торговли. Из-за круглосуточной работы, высокого кредитного плеча и низкого уровня маржи тысячи простых людей смогли стать активными трейдерами.
MetaTrader 4 стал одной из самых популярных торговых платформ для торговли на форекс и предлагается сотнями брокеров по всему миру.
Популярность MetaTrader обусловлена тем, что он бесплатный, постоянно поддерживается и включает в себя множество полезных инструментов технического анализа. Но, вероятно, главной причиной успеха MetaTrader является мощный язык программирования MQL.
MQL позволил трейдерам программировать собственные пользовательские индикаторы и советники для автоматической торговли, не платя за это ни копейки. Подобные торговые пакеты для акций и фьючерсов могут стоить более 1000 долларов. Появилось всемирное сообщество трейдеров и программистов, предлагающее сотни бесплатных и платных советников и индикаторов, а также услуги и советы по программированию.
Сходство MQL с такими языками, как C, позволяет опытным программистам относительно легко разобраться в его коде, а сам язык хорошо документирован. Однако обучение эффективному программированию торговых стратегий на MQL – это постоянный процесс проб и ошибок.
MQL – это язык относительно низкого уровня, и поэтому программисту необходимо создавать собственные процедуры для обработки многих общих торговых функций. Например, написать трейлинг стоп может быть непросто для начинающего программиста на MQL.
При программировании надежной стратегии необходимо учитывать множество факторов, и сам MetaTrader имеет много особенностей, о которых должен знать программист. Обучение может потребовать десятки часов постоянной практики, чтобы изучить методы, необходимые для программирования советников.
На официальном веб-сайте MQL4 по адресу http://www.mql4.com вы сможете найти подробный справочник по MQL, который всегда будет для вас полезным. Также на этом сайте вы найдете множество информационных статей, в которых рассматриваются базовые и продвинутые концепции программирования на MQL, библиотеку кода с дополнительными индикаторами и примерами, а также форум, где вы можете обратиться за помощью по вопросам программирования.
Расширения файлов MQL4
Файлы MQL4 имеют следующие расширения:
.mq4 – исходный, текстовый формат файла, который содержит инструкции, предназначенные для исполнения. Вы можете открыть его с помощью MetaEditor или любого редактора текстовых файлов. Этот файл должен быть скомпилирован для запуска в MetaTrader.
MQL4 использует синтаксис, аналогичный С, C++, C Sharp, Java. Если вы уже знаете некоторые из этих языков, вам не понадобится много времени, чтобы изучить MQL4.
Расположение файлов
Все файлы MetaEditor хранятся в папке MQL4. Папка MQL4 находится в каталоге установки MetaTrader.
Внутри папки MQL есть множество подпапок:
Что вы сможете делать с помощью MQL4?
MQL4 – чрезвычайно мощный инструмент, который при правильном использовании может значительно расширить ваши торговые возможности. С помощью MQL4 вы можете:
Как видите, MQL4 предоставляет вам множество дополнительных возможностей и позволяет автоматизировать вашу торговлю.
Типы программ MQL4
С помощью MQL4 можно создавать различные типы программ, каждая из которых будет отличаться от других. Также стоит отметить, что один тип программы может быть включен в другие типы программ. К примеру, индикатор может использоваться в скрипте или в торговом эксперте.
MQL-программы можно разделить на несколько категорий:
Разберем каждый тип программ более подробно.
Включаемые файлы
Включаемые файлы – это исходные текстовые файлы, содержащие код, который вы можете использовать в других программах. Включаемые файлы имеют расширение MQH и хранятся в папке Include в каталоге MetaTrader или в той же папке, что и исходные файлы. Включаемые файлы не могут быть запущены сами по себе, они могут быть только включены в другие типы программ.
Предположим, что у вас есть строгие правила управления рисками. Все ваши сделки должны иметь размер позиции, рассчитанный в соответствии с вашими правилами управления капиталом. Вы можете создать особую функцию для расчета размера вашей позиции и сохранить ее во включаемом файле, а затем использовать этот файл в скрипте или советнике. Это позволит вам воспользоваться данной функцией без необходимости повторного написания кода.
Библиотеки
Библиотеки имеют ту же функцию, что и включаемые файлы, но имеют расширение MQ4 и сохраняются в папке Libraries. Они также не могут быть использованы отдельно и должны быть включены в другие типы файлов.
Скрипты
Скрипты – это программы, которые после запуска выполняют определенное действие всего лишь один раз. Исходный файл скриптов имеет расширение MQ4, в то время как скомпилированная исполняемая версия имеет расширение EX4. Скрипты сохраняются в папке Scripts.
Скрипты и советники похожи между собой. Оба они могут выполнять определенные действия, однако между ними есть фундаментальное различие: скрипты выполняют задачу только один раз, а затем прекращают свою работу, в то время как советники могут выполнять определенный алгоритм множество раз.
С помощью скриптов вы сможете:
Скрипты могут использовать стандартные и пользовательские индикаторы, а также могут включать в себя различные библиотеки и включаемые файлы. Просто помните, что при запуске они выполняются только один раз.
Индикаторы
Индикаторы представляют собой графическое представление движения цены.
Исходные файлы индикаторов имеют расширение MQ4, в то время как скомпилированные исполняемые версии для MetaTrader 4 имеют расширение EX4. Файлы индикаторов сохраняются в папке Indicators.
В MetaTrader 4 уже есть несколько встроенных индикаторов, но иногда их бывает недостаточно. В интернете вы сможете найти множество других индикаторов, которые могут лучше соответствовать вашему стилю торговли. Также с помощью MQL4 вы можете создать свой собственный индикатор.
Когда вы прикрепляете индикатор к графику, он показывает вам информацию, на отображение которой он был запрограммирован.
Некоторые примеры стандартных индикаторов:
Пользовательские индикаторы могут быть улучшенными версиями существующих или совершенно новыми индикаторами.
Советники (эксперты)
Советники или эксперты, пожалуй, это самый мощный инструмент, который вы можете разработать с помощью MQL4. Они представляют собой программы, которые вы запускаете и которые будут работать, пока вы не остановите их вручную. Советник, как правило, запускаются на каждом тике.
Советник позволяет MetaTrader постоянно отслеживать значения цены и показания индикаторов, выполняя при этом определенные запрограммированные действия.
Исходные файлы экспертов имеют расширение MQ4, в то время как исполняемые скомпилированные версии имеют расширение EX4. Папка, в которой хранятся эти файлы называется Experts.
Чаще всего советники относятся к инструментам, которые используются для автоматизации торговой деятельности. Их также называют роботами. В интернете вы можете найти множество советников как бесплатных, так и платных. Однако всегда будьте осторожны, так как вокруг много мошенников. В качестве альтернативы вы можете создать своего собственного робота.
Вот некоторые примеры действий, которые могут выполнять советники:
Как вы можете видеть, эксперты могут быть очень полезны, и в следующих статьях мы рассмотрим другие примеры их использования.