тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQLabs: Возможности обновленного MQL4

 

Приложение TradePanel

 

Выход в свет обновленного терминала Meta Trader 4 (начиная с билда под номером 600) позволил поднять планку программных возможностей, предоставив в распоряжение программистов всю мощь объектно-ориентированного программирования.

Для обычного трейдера, не связанного с программированием напрямую, предыдущее предложение мало о чем говорит. Для него это подобно тому, как ученику, впервые севшему за руль автомобиля, начинают рассказывать об особенностях трансмиссии данной марки транспортного средства. То есть никаких преимуществ по сравнению с предыдущей версией терминала простые трейдеры в новой версии не находят.

Но это лишь пока, т. к. появление подобных преимуществ - дело времени. Ведь трейдеры пользуются не только самим терминалом МТ4, но и большим количеством программных продуктов, разработанных для него. В то же время до сих пор запросы трейдеров в плане возможностей программ были в значительной степени ограничены возможностями программистов, которым для реализации запрошенного функционала нужно было либо тратить большое количество времени, либо просто отказывать заказчикам. Теперь же ситуация кардинально изменилась, т. к. возможности обновленного MQL4 не только позволяют приступить к проектам, которые раньше невозможно было реализовать, но и в некоторых случаях существенно упростить разработку проектов. В итоге от новшества выиграют не только программисты, но и простые трейдеры, пользующиеся терминалом МТ4.

Чтобы не быть голословным, автор предлагает рассмотреть пример программы, разработать которую на "старом MQL4" было невозможно. Точнее было бы сказать, что подобные программы разрабатывались, но функционально они были не очень удобны. Речь же о внешнем виде ранее вообще не шла по причине ограниченности возможностей MQL4.

 

Привычный интерфейс

Основным недостатком программ, разрабатываемых на MQL4, до настоящего времени был неудобный и слишком просто выглядящий интерфейс. Ведь в современных программах непременным атрибутом интерфейса являются различные кнопки, выпадающие списки, упорядоченные списки, радио- кнопки (выбор одного пункта из списка), чекбоксы (выбор галками нескольких пунктов из списка) и т. д. Всего этого многообразия элементов управления трейдер, использующий программы для терминала МТ4, был лишен. В лучшем случае элементами управления являлись обычные графические объекты, для взаимодействия с которыми нужно было сначала выделить их, а потом переместить (см. "Графическое управление экспертом" и "Захват флэта").

Теперь все то, к чему пользователь привык в ОС Windows, появилось в языке MQL4. Простейший пример, демонстрирующий новые возможности, включен в стандартную поставку терминала. Это индикатор SimplePanel, который можно увидеть в подчиненном списке "Examples" списка "Пользовательские индикаторы" окна "Навигатор" (см. рис. 1).

Рис. 1. Местонахождение индикатора.

Если присоединить этот индикатор к графику, то можно будет наблюдать следующую картину (см. рис. 2).

Рис. 2. Индикатор SimplePanel.

Здесь мы видим почти все элементы управления, необходимые пользователю программы. Так, поле Edit - это строка, содержимое которой можно редактировать. Хотя именно в данном примере такое действие запрещено на уровне программы. Кнопки Button1, Button2 и Locked в особом представлении не нуждаются. Их нажатие подразумевает включение или отключение некоторого функционала. В индикаторе SimplePanel нажатие кнопок приводит к появлению в поле Edit строки, указывающей на то, что нажата та или иная кнопка.

В нижней части панели индикатора расположено три панели. Первые две панели слева - это наборы радио-кнопок и чекбоксов. Нажатие на каждый из элементов также приводит появлению соответствующей надписи в поле Edit. Панель, расположенная справа, является упорядоченным списком, преимуществом которого над соседними панелями является возможность прокрутки значений и наличие условно неограниченного их количества в списке. Хотя, конечно, преимуществом такое поведение элемента управления называть некорректно, т. к. речь идет о разном функциональном назначении элементов.

 

Новая версия программы графического управления торговлей

Рассмотренный индикатор основан на наборе стандартных графических объектов MQL4 (входят в состав стандартной библиотеки классов). Поэтому любой желающий может использовать разработанную библиотеку с тем, чтобы на ее основе разрабатывать собственные панели в стиле окон ОС Windows.

Одними из первых таких желающих будем мы. В качестве простого (по функционалу, а не по степени сложности реализации) примера разработаем панель, при помощи которой будет возможно открывать и закрывать рыночные ордера вне зависимости от близости текущей рыночной цены к цене открытия или закрытия ордера. Это, как надеюсь понимают читатели, возможно только в том случае, если открытие и закрытие ордеров производится "по рынку", а не при помощи отложенных ордеров и установки цен Stop Loss и Take Profit. Помимо ограничений на расположение отложенных приказов, накладываемых представляющим брокером, у такого рода торговли есть еще один плюс - рынок не видит заявки трейдера. Так что подобная тактика никоим образом не может влиять на текущую рыночную ситуацию. Также не стоит забывать и параноидальный фактор - в голове трейдера не возникают подозрения о том, что цена специально "сходила за стопом". Хотя для телепатических методов шпионажа и это не является препятствием...

Итак, будущая программа поможет трейдеру в двух простых ситуациях:

1. Открыть рыночный ордер на один пункт (или более) лучше или хуже, чем текущая рыночная цена.

2. Закрыть рыночный ордер на один пункт (или более) лучше или хуже, чем текущая рыночная цена.

Без программного помощника трейдеру приходится тратить немало времени на ожидание нужного события, хотя и кажется, что чего уж стоит цене отклониться на намеченные нами один-два пункта. Тем не менее в тех случаях, когда трейдер решил открыть рыночный ордер, цена почему-то не движется в нужном трейдеру направлении. А стоит лишь трейдеру отвлечься, как ценовой уровень быстро достигает желаемой величины. Помощь в таких ситуациях и окажет приложение TradePanel.

Приложением программа названа, т. к. она состоит из двух видов программ MQL4 - советника и индикатора. Основные функции выполняет индикатор. Советник же нужен только для того, чтобы исполнять торговые приказы, т. к. индикатор не имеет права на двусторонний обмен данными с сервером брокера. Общий вид программы представлен на рис. 3.

Рис. 3. Приложение TradePanel.

Основное пространство торговой панели занимает окно упорядоченного списка, в котором отображаются имеющиеся рыночные и виртуальные ордера, относящиеся к текущему символу. Сразу же отметим, что виртуальные ордера являются именно тем, чем они названы, несмотря на то, что они  подписаны Buy Limit и Sell Limit. То есть в действительности этих ордеров на сервере нет. Исполниться эти ордера могут только в том случае, если запушено приложение Trade Panel. То же самое касается рыночных ордеров, но не в плане их существования, а в плане наличия цен Stop Loss и Take Profit - они существуют только виртуально, хотя в действительности на сервере брокера их нет (см. рис. 4).

Рис. 4. Та же самая ситуация глазами брокера.

Таким образом, большая часть замыслов трейдера скрыта от внешнего мира. Трейдер видит полную торговую картину только у себя на компьютере. Правда, к недостаткам такого подхода можно отнести тот факт, что любая форс-мажорная ситуация (отключение питания компьютера, обрыв соединения с сервером и т. д.) приводит к полной потере контроля за счетом. 

 

Установка приложения

Перейдем к описанию правил работы с приложением TradePanel. Для этого необходимо начать с правил его установки, потому что стандартным установщиком приложение еще не обзавелось.

Для установки потребуется проделать такие шаги:

1. Найти папку данных терминала, в который следует установить приложение. Для этого использовать пункт меню "Файл" - "Открыть каталог данных". Из открывшейся папки перейти в каталог MQL4.

2. Закрыть терминал МТ4.

3. Распаковать архив TradePanel в папку MQL4 с заменой файла Defines.mqh.

4. Открыть терминал МТ4.

5. Присоединить к нужному графику индикатор TradePanel.

6. Присоединить к тому же графику советник TradePanel_Expert.

Последовательность пунктов 5 и 6 можно изменять. Если все сделано правильно, то будет видна картинка, похожая на то, что показано на рис. 3.

 

Функционал приложения

На начальном этапе работы приложения окно списка ордеров может быть пустым. Это в том случае, если по текущему символу нет рыночных ордеров. В противном случае приложение автоматически подхватит рыночные ордера, указав в колонках SL и TP нулевые значения, вне зависимости от наличия у рыночных ордеров уровней Stop Loss и Take Profit.

Вторым сюрпризом для трейдера на начальном этапе работы приложения будет отсутствие кнопки Close. Это нормально, т. к. до того момента, когда трейдер произведет клик в области списка ордеров, возможно осуществить лишь открытие ордеров, т. е. доступны будут только кнопки Open Buy и Open Sell. Назначение этих кнопок кажется интуитивно понятным. Рассмотрим, что здесь так, а что - не так.

Кнопки Open Buy и Open Sell.

Нажатие одной из кнопок в тот момент, когда в окошке, находящемся справа от соответствующей кнопки (далее в тексте - значение/величина смещения), нет никакого значения или красуется значение 0, приводит к моментальному открытию рыночного ордера заданного типа. Цены Stop Loss и Take Profit у такого ордера отсутствуют.

Если же значение смещения отлично от нуля, то это приведет к появлению виртуального ордера с ценой открытия, находящейся на заданном расстоянии от текущей рыночной цены. Изменить величину смещения можно путем клика на треугольниках, указывающих вверх и вниз. То есть точно так же, как в знакомом элементе ОС Windows.

Значение смещения может быть как положительным, так и отрицательным. Положительное значение указывает на смещение в пунктах от рыночной цены вверх, а отрицательное - вниз. Причем для каждого из типов рыночных ордеров учитывается разная текущая цена открытия. Для ордера Buy - это Ask, а для ордера Sell - Bid. На рис. 5 как раз показана ситуация открытия двух виртуальных ордеров на заданном расстоянии от рыночной цены.

Рис. 5. Установка виртуальных ордеров.

Как видно, оба ордера имеют тип Limit, т. к. величина смещения от текущей рыночной цены в обоих случаях направлена в сторону лучшей цены, хотя математически это разные направления (+1 и -1). Для ордера Buy выбрано смещение -1, которое должно отсчитываться от цены Ask, равной сейчас 170.44. По этой причине цена открытия ордера установлена на 170.43. Для ордера Sell установлено смещение +1, которое должно отсчитываться от цены Bid, равной 170.38. В итоге цена открытия ордера равна 170.39.

Кнопка Close.

Кнопка появляется только в том случае, если в окне списка ордеров курсор указывает на рыночный или виртуальный ордер. Хотя на рис. 5 можно увидеть и исключение из правила, которое проявляется при автоматическом удалении какого-либо ордера из списка. Тем не менее кнопка Close в таком состоянии не будет реагировать на действия трейдера.

У кнопки Close методов применения гораздо больше, чем у кнопок Open Buy и Open Sell. Так, если значение смещения указано равным нулю, то нажатие кнопки при выделенном рыночном ордере приводит к его моментальному закрытию по текущей рыночной цене. Если же курсор в списке ордеров указывает на виртуальный ордер, то ордер удаляется из списка.

Нажатие кнопки производит другое действие в том случае, если значение смещения отлично от нуля. Так, если курсор в списке ордеров указывает на рыночный ордер, то производится установка цены Stop Loss или Take Profit такого ордера. Отсчет уровней ведется не от цены открытия, а от текущей рыночной цены. Рассмотрим этот случай подробнее (см. рис. 6).

Рис. 6. Нажатие кнопки Close для рыночных ордеров.

Значение смещения в обоих случаях +2. Но для ордера Sell такое смещение означает "закрыть ордер по цене, которая на 2 пункта хуже, чем текущая рыночная цена", т. е. установку Stop Loss. Так как ордер Sell закрывается по цене Ask, то устанавливается цена 170.39 + 0.02 = 170.41. Полностью противоположная ситуация с ордером Buy, т. к. для него смещение +2 это: "закрыть ордер по цене на 2 пункта лучше, чем текущая рыночная цена", т. е. устанавливается Take Profit. При закрытии по Bid получаем 170.33 + 0.02 = 170.35.

При нажатии кнопки Close в момент нахождения курсора списка на виртуальном ордере также происходит установка виртуальных Stop Loss и Take Profit с той лишь разницей, что отсчет производится от цены открытия ордера (см. рис. 7).

Рис. 7. Кнопка Close для виртуальных ордеров.

Значение смещения -2 для ордера Buy Stop устанавливает ему Stop Loss по цене на 2 пункта ниже цены открытия (170.59 - 0.02 = 170.57). Такое же смещение для ордера Sell Stop производит установку цены Take Profit по цене на 2 пункта ниже цены открытия (170.34 - 0.02 = 170.32).

Поле Lots.

Для задания объема открываемых ордеров необходимо использовать поле ввода, расположенное справа от надписи "Lots". Для изменения значения в этом поле недостаточно просто ввести нужную величину. Обязательным условием принятия значения является нажатие клавиши Enter. При этом введенное значение автоматически округлится к ближайшему меньшему допустимому значению объема. Также будет принят минимальный разрешенный объем, если введено слишком малое значение или в строке обнаружены символы, не являющиеся частью чисел.

 

Особенности работы приложения

При работе приложения, вследствие недостаточной степени исследования механизма его работы, могут возникать сбои, приводящие к сообщениям вроде такого (см. рис. 8).

Рис. 8. Сообщение об ошибке.

Если при этом эксперт TradePanel_Expert прикреплен к текущему графику, то проблема устраняется только перезагрузкой терминала МТ4. В противном случае необходимо прикрепить эксперт к графику, т. к. приложение полноценно работает лишь в тандеме двух программ.

При перезагрузке терминала не стоит бояться, что программа потеряет свои настройки. Этого не случится, т. к. при закрытии приложения происходит автоматическая запись всех необходимых данных в файл, расположенный в папке терминала. Поэтому запуск приложения на том же терминале приведет к восстановлению списка всех виртуальных ордеров.

Из рассмотренной ситуации следует еще один немаловажный побочный эффект работы приложения. Если закрыть приложение с полным списком виртуальных ордеров, а включить приложение через день или два, то вследствие подхода цены к указанным уровням, виртуальные ордера автоматически превратятся в рыночные. То есть запуск приложения может привести к мгновенному открытию одного или более рыночных ордеров. Поэтому при закрытии приложения всегда стоит позаботиться о том, чтобы список виртуальных ордеров был пуст, а виртуальные уровни закрытия рыночных ордеров находились как можно дальше от текущей цены.

 

Приложение распространяется "как есть". Автор не несет ответственности за прямые или косвенные убытки, понесенные трейдерами вследствие использования приложения TradePanel.

 

Игорь Герасько

Март 2014

Специально для компании Admiral Markets

3.4
 
 
X
Loading