Советник FlatGrabber (распаковать как есть в рабочий каталог терминала)

 

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

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

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

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

 

Алгоритм торговой тактики

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

Рис. 1. Торговля во флэте.

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

Рис. 2. Границы флэта и уровни допуска. 

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

На рис. 2 хорошо видно, что выход из флэта произошел при возникновении одной высокой свечи, которая, скорее всего, практически без откатов двигалась изнутри канала флэта до верхнего уровня допуска. Если бы мы просто размещали ордер Sell Limit на верхней границе канала, то получили бы явный убыток. Но можно поступить иначе. Не стоит открывать ордер сразу при пересечении ценой какой-либо границы канала. Сначала необходимо удостовериться, что цена уже готова пойти в обратном направлении. Для этого можно использовать открытие сделки в тот момент, когда цена развернется и пройдет в обратном направлении некоторое количество пунктов от ранее достигнутого экстремума. Получаем следующую технику открытия рыночного ордера (см. рис. 3).

Рис. 3. Отложенное открытие рыночного ордера.

В тот момент, когда цена достигла границы канала, необходимо зафиксировать первую цену, по которой в будущем может быть открыт ордер. В случае, показанном на рис. 3, это цена 1.3518, т. е. на семь пунктов ниже верхней границы канала. Цена далеко не сразу пошла в нужном нам направлении, равномерно повышаясь. С достижением новых локальных экстремумов мы виртуально перемещаем цену открытия ордера, отставая от цены на те же семь пунктов. В какой-то момент времени рост цены сменяется ее снижением. Когда цена проходит достаточное количество пунктов (в нашем случае - 7) в обратном направлении, мы открываем ордер. В рассмотренном случае цена открытия ордера получилась на 6 пунктов лучше, чем в случае с открытием ордера в момент достижения ценой верхней границы канала. Это еще одно преимущество использования отложенного открытия ордера наряду с противодействием ложным входам, когда рынок совершает выход из зоны флэта.

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

 

Режимы работы советника

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

Во время своего функционирования эксперт может находиться в пяти рабочих режимах:

  • Режим установки границ флэта. В этом режиме советник работает зациклено. В итоге до окончания работы этого режима невозможно изменить параметры советника. Его можно только отключить (удалить с графика). В момент окончания работы режима воспроизводится звуковой файл, имя которого указано в настроечном параметре "Установка уровней завершена".
  • Режим ожидания пересечения границы канала. Начиная с этого режима, советник переходит в состояние работы по тикам. В интервале между поступлением двух соседних тиков советник полностью бездействует. Окончание работы режима отмечается проигрыванием звукового файла, указанного в параметре "Уровень достигнут".
  • Режим ожидания открытия рыночного ордера. Этот режим разделен на два подрежима: ожидание открытия ордера Buy и ожидание открытия ордера Sell. Окончанию работы режима соответствует проигрывание звукового файла, указанного в параметре "Открыт ордер".
  • Режим ожидания закрытия рыночного ордера. В момент окончания работы режима воспроизводится звуковой файл, указанный в параметре "Закрыт ордер".
  • Режим окончания работы. Наступает в случае выхода цены за пределы верхнего или нижнего допуска. В момент начала работы режима воспроизводится звуковой файл, указанный в параметре "Работа завершена".

Рассмотрим каждый из режимов работы советника отдельно.

 

Режим установки границ флэта

В этом режиме трейдеру доступны четыре горизонтальные линии, которые обозначают соответствующие уровни флэта: верхний допуск, верхняя граница канала, нижняя граница канала и нижний допуск (см. рис. 4).

 

Рис. 4. Вид графика при работе эксперта в режиме установки границ флэта.

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

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

Перемещение линий осуществляется по правилам работы с графическими объектами терминала МТ4: чтобы осуществить перемещение, объект необходимо выделить одинарным или двойным щелчком левой клавиши мыши. Настройка способа выделения объекта производится в главном меню МТ4 (Сервис - Настройки - Объекты - Выделять объект по одиночному клику мыши).

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

 

Режим ожидания пересечения границы канала

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

Режим ожидания заканчивается переходом к следующему режиму только в двух случаях: если цена Bid пересекла уровень верхней границы флэта снизу вверх или если цена Bid пересекла уровень нижней границы флэта сверху вниз. В том случае, когда цена находится за пределами этих границ (такое бывает при закрытии ордера по виртуальному скользящему уровню Stop Loss или при принудительном закрытии ордера трейдером) переход к следующему режиму возможен только после возвращения цены во внутреннюю область канала флэта.

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

 

Режим ожидания открытия рыночного ордера

Режим начинает работу отображением уровня открытия ордера. Это обычная горизонтальная линия, появление которой не приводит ни к каким торговым приказам. Она просто обозначает цену Bid, при достижении которой будет открыт рыночный ордер (см. рис. 5).

 

Рис. 5. Линия открытия рыночного ордера.

Если была пересечена верхняя граница канала флэта, то будет отображена линия открытия ордера Sell. Ее цвет и стиль указывается в параметрах "Цвет открытия Sell" и "Стиль линии открытия Sell". В ситуации, показанной на рис. 5, отображена пурпурная штрихпунктирная линия, соответствующая цене открытия рыночного ордера Sell. При достижении ценой нижней границы канала флэта будет отображена линия открытия ордера Buy. Ее цвет и стиль задаются параметрами "Цвет открытия Buy" и "Стиль линии открытия Buy"

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

При достижении ценой линии верхнего или нижнего допуска эксперт переходит в режим окончания работы.

 

Режим ожидания закрытия рыночного ордера

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

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

После открытия ордера линия открытия исчезает с графика. Вместо нее появляется линия закрытия ордера, которая поначалу совпадает с линией соответствующего допуска и потому в этот момент не видна. Ее можно будет наблюдать, когда цена пройдет в прибыльной зоне ордера такое количество пунктов, которое указано в параметре "Величина виртуального трала для закрытия ордера, пп." (см. рис. 6).

 

Рис. 6. Линия закрытия ордера.

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

Управление цветом линий закрытия ордеров Sell осуществляется при помощи параметров "Цвет линии закрытия Sell" и "Стиль линии закрытия Sell". Для ордеров Buy параметры соответствующие: "Цвет линии закрытия Buy" и "Стиль линии закрытия Buy".

Режим ожидания закрытия рыночного ордера заканчивается в трех случаях: 

  • Достижение ценой Bid линии закрытия ордера. Аналог закрытия ордера по Stop Loss.
  • Достижение ценой Bid противоположной границы канала флэта. Аналог закрытия ордера по Take Profit.
  • Принудительное закрытие ордера трейдером.

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

 

Режим окончания работы

В этом режиме работы, точнее "неработы", эксперт не выполняет никаких полезных действий (см. рис. 7).

 

Рис. 7. Окончание работы эксперта.

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

 

Заключение

Советник FlatGrabber_Expert является удобным инструментом при торговле в канале флэта. Отсутствие у открываемых им ордеров уровней стоп-приказов можно относить и к достоинствам, и к недостаткам одновременно. Недостаток понятен - нет гарантии закрытия ордера при возникновении форс-мажорной ситуации. На такой недостаток всегда можно возразить, что при сильных движениях рынка наличие Stop Loss также не является гарантией закрытия по указанной цене, т. к. обязательно будет иметь место проскальзывание.

Достоинством факта отсутствия уровней стоп-приказов является возможность расположения виртуальных уровней Stop Loss и Take Profit настолько близко к текущей цене, насколько это нужно трейдеру. Ограничения на уровни минимальной величины стоп-приказов здесь не действуют.

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

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