Как объясняют сами дилинговые центры, они отправляют на реальный внебиржевой рынок не все клиентские ордера, а только их агрегированную составляющую, превышающую определенный размер. А остальные ордера дилинговый центр сводит с противоположными ордерами, полученными от других клиентов.
На самом деле, как правило, ни один дилинговый центр практически никогда не выводит «сделки» своих клиентов на открытый рынок, потому как знает, что условия игры таковы, что клиент рано или поздно проиграет. Следовательно, выводить сделки на рынок нет никакой надобности.
Таким образом клиент или трейдер торгует не против рынка, а против дилингового центра.
В начале мы сказали, что нам нужен какой-нибудь посредник, чтобы подключиться к его серверу и получать реальные котировки рынка для разработки и тестирования наших MQL5 приложений.
Так как у нас нет миллионов долларов, чтобы непосредственно торговать на Форексе, и мы не можем себе позволить установить свой межбанковский информационно-торговый терминал, в качестве посредника выберем дилинговый центр.
Давайте выберем, например, дилинговый центр Forex Club.
Я не являюсь фанатом данной компании, это просто для нашего кодирования.
Для реальной торговли лучше выбрать, наверное, какой-нибудь банк.
Зарегистрируемся и создадим демо-счет для платформы MetaTrader 5.
Forex Club предлагает два типа счетов:
Немедленное исполнение (Instant Execution)
В этом режиме исполнение рыночного ордера осуществляется по предложенной цене. При отправке запроса на исполнение, платформа автоматически подставляет в ордер текущие цены.
И исполнение по рынку (Market Execution)
В этом режиме исполнения рыночного ордера решение о цене исполнения принимает дилинговый центр без дополнительного согласования с трейдером.
Мы откроем счет – немедленное исполнение (Instant Execution).
Далее скачаем и установим платформу MetaTrader 5.
И подключимся к серверу Forex Club, используя логин и пароль демо счета.
Далее, нажав правой кнопкой мышки на графике и зайдя в свойства, настроим внешний вид графика, как вам нравится.
Мультирыночная платформа MetaTrader 5 позволяет совершать торговые операции на Forex, фондовых биржах и фьючерсами.
С помощью MetaTrader 5 можно также проводить технический анализ котировок, работать с торговыми роботами и копировать сделки других трейдеров.
Более подробно про платформу MetaTrader 5 и про ее интерфейс можно почитать в соответствующей справке.
Мы не будем пересказывать эту справку, так как это было бы слишком нагло брать деньги за книгу, в которой пересказывается общедоступная справка.
Также помимо терминала MetaTrader 5, нас интересует редактор MQL5, который можно открыть либо с помощью ярлыка, либо в меню Сервис терминала MetaTrader 5.
MetaEditor – это современная среда разработки торговых стратегий, интегрированная с платформой MetaTrader.
С помощью MetaEditor можно создавать торговых роботов, технические индикаторы, скрипты, графические панели управления и многое другое.
Для редактора MetaEditor также есть подробная справка, которую мы также не будем пересказывать.
Мы лучше сразу займемся практическим кодированием.
Общая структура индикатора
Для создания основы пользовательского индикатора используем редактор MetaEditor.
Нажмем кнопку меню Создать и в окне мастера выберем Пользовательский индикатор.
Нажмем Далее, введем имя создаваемого индикатора, нажмем Далее и отметим функции, которые мастер должен сгенерировать и в следующем окне нажмем Готово.
В результате будет создан код основы индикатора.
Код индикатора начинается с блока объявления свойств индикатора и различных объектов, используемых индикатором, таких как массивы буферов индикатора, параметры ввода, глобальные переменные, хэндлы используемых технических индикаторов, константы.
Данный блок кода выполняется приложением Торговая Платформа MetaTrader 5 сразу при присоединении индикатора к графику символа.
После блока объявления свойств индикатора, его параметров и переменных, идет описание функций обратного вызова, которые терминал вызывает при наступлении таких событий, как инициализация индикатора после его загрузки, перед деинициализацией индикатора, при изменении ценовых данных, при изменении графика символа пользователем.
Для обработки вышеуказанных событий необходимо описать такие функции как OnInit(), OnDeinit(), OnCalculate() и OnChartEvent().
В функции OnInit() индикатора, как правило, объявленные в начальном блоке массивы связываются с буферами индикатора, определяя его выводимые значения, задаются цвета индикатора, точность отображения значений индикатора, его подписи и другие параметры отображения индикатора. Кроме того, в функции OnInit() индикатора могут получаться хэндлы используемых технических индикаторов и рассчитываться другие используемые переменные.
В функции OnDeinit() индикатора, как правило, с графика символа удаляются графические объекты индикатора, а также удаляются хэндлы используемых технических индикаторов.
В функции OnCalculate() собственно и производится расчет значений индикатора, заполняя ими объявленные в начальном блоке массивы, которые в функции OnInit() индикатора были связаны с буферами индикатора, данные из которых берутся терминалом для отрисовки индикатора. Кроме того, в функции OnCalculate() могут изменяться цвета индикатора и другие параметры его отображения.
В функции OnChartEvent() могут обрабатываться события, генерируемые другими индикаторами на графике, а также удаление пользователем графического объекта индикатора и другие события, возникающие при работе пользователя с графиком.
На этом код индикатора заканчивается, хотя там могут быть также определены пользовательские функции, которые вызываются из функций обратного вызова OnInit(), OnDeinit(), OnCalculate() и OnChartEvent().
Для компиляции нашего индикатора нажмем кнопку Компилировать редактора, при этом в нижнем окне отобразится результат компиляции.
После компиляции наш индикатор автоматически появится в торговом терминале, и мы сможем присоединить его к графику финансового инструмента.
Свойства индикатора
Давайте более подробно рассмотрим свойства индикатора.
Цитата из справочника:
Свойства программ (#property). У каждой mql5-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска. В первую очередь это касается внешних настроек индикаторов. Свойства, описанные во включаемых файлах, полностью игнорируются. Свойства необходимо задавать в главном mq5-файле: #property идентификатор значение.
Включаемый файл указывается с помощью ключевого слова #include, после которого следует путь к включаемому файлу.
Включаемый файл – это часто используемый блок кода. Такие файлы могут включаться в исходные тексты экспертов, скриптов, пользовательских индикаторов и библиотек на этапе компиляции. Использование включаемых файлов более предпочтительно, чем использование библиотек, из-за дополнительных накладных расходов при вызове библиотечных функций.
Включаемые файлы могут находиться в той же директории, что и исходный файл, в этом случае используется директива #include с двойными кавычками. Другое место хранения включаемых файлов – в директории <каталог_терминала>\MQL5\Include, в этом случае используется директива #include с угловыми скобками.