Модуль торговых сигналов по системе Билла Вильямса

Nikolay Churbanov | 1 декабря, 2015

Введение

Торговая система Билла Вильямса, описанная им в книге "Новые измерения биржевой торговли", наверняка знакома каждому трейдеру. Это одна из тех систем, которые представляют ясные и понятные правила для большинства новичков. Но простота изложенных правил только кажущаяся — торговая система насчитывает более десятка торговых паттернов.

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

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

Итак, вот основные функции торгового модуля:

  1. Настройка параметров торговой системы с помощью графической панели.
  2. Возможность отключения идентификации и разметки выбранных паттернов.
  3. Возможность отключения торговли по выбранным паттернам.
  4. Возможность оптимизации параметров торговой системы.

Состав (исходный код содержится в прикрепленном к статье архиве billwilliamsts.zip):

  1. MQL5 класс CBillWilliamsTS. Здесь содержит вся логика определения торговых паттернов системы, а также логика совершения торговых операций по найденным паттернам. Опционально с помощью класса можно произвести разметку найденных паттернов на графике торгового инструмента. Класс содержится в файле BillWilliamsTS.mqh.
  2. MQL5 класс графической панели CBillWilliamsDialog. Предназначен для отображения панели настроек для интерактивного управления объектом класса CBillWilliamsTS. Класс содержится в файле BillWilliamsPanel.mqh.
  3. MQL5 класс SignalBillWilliams. Модуль торговых сигналов для использования в мастере MQL5 для автоматического создания советника.
  4. MQL5 советник BillWilliamsEA. Торговый эксперт, разработанный на базе классов торговли и графической панели. Предназначен для автоматизации торговли по паттернам торговой системы Билла Вильямса. Содержится в файле BillWilliamsEA.mq5.

Материал представлен в следующей последовательности:

  1. Краткое описание торговой стратегии Билла Вильямса, используемых в ней торговых паттернов, а также разметка, выполняемая разработанным советником.
  2. Описание графической панели.
  3. Результаты тестирования на различных торговых инструментах.


1. Краткий обзор торговой системы Билла Вильямса

1.1. Общие сведения

В своей книге "Новые измерения биржевой торговли" Билл Вильямс утверждает, что для прибыльной торговли на финансовых рынках необходимо познать структуру рынка. С точки зрения автора системы у рынка существует пять измерений, исследуя которые в совокупности, можно получить истинную картину и забрать с рынка до 80% трендового движения:

  1. Фрактал (пространство фазы)
  2. Движущая сила (энергия фазы)
  3. Ускорение/замедление (сила фазы)
  4. Зона (комбинация силы/энергии фазы)
  5. Линия Баланса

Дополнительно к пяти измерениям Билл Вильямс вводит хорошо известные всем состояния рынка: тренд и флет. Для их идентификации автор системы предлагает использовать разработанный им индикатор Аллигатор и рекомендует работать только на трендовых участках рынка.

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


1.2. Аллигатор

Индикатор Аллигатор представляет собой комбинацию трех скользящих средних (Рисунок 1):

  • Челюсти (jaws), медленная линия (синяя), как правило, 13-периодная скользящая средняя;
  • Зубы (teeth), средняя линия (красная), как правило, 8-периодная скользящая средняя;
  • Губы (lips), быстрая линия (зеленая), как правило, 5-периодная скользящая средняя;

Рисунок 1. Аллигатор

Рисунок 1. Аллигатор

Согласно системе, торговые операции необходимо совершать только тогда, когда линии Аллигатора выстроены в направлении тренда в порядке уменьшения величины их периода: цена, губы, зубы, челюсти. На рисунке показано начало и завершение нисходящего тренда.

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


1.3. Фракталы - сигналы первого измерения рынка

Фрактал — это формация, состоящая из 5 свечей. Фрактал на продажу — это фрактал, у которого цена Low средней свечи является минимальной. Фрактал на покупку — это фрактал, у которого цена High средней свечи является максимальной. Фракталы также называют первым измерением рынка (dimension 1):

Рисунок 2. Фракталы

Рисунок 2. Фракталы

Фрактал считается рабочим, если он сформирован выше линии средней линии Аллигатора (зубов) для восходящего тренда и ниже средней линии для нисходящего тренда.

Разработанный советник размечает рабочие фракталы следующим образом (FrB — FractalBuy — рабочий фрактал на покупку, FrS — FractalSell — рабочий фрактал на продажу):

Рисунок 3. Рабочий фрактал на покупку

Рисунок 3. Рабочий фрактал на покупку


Рисунок 4. Рабочий фрактал на продажу

Рисунок 4. Рабочий фрактал на продажу

Отложенный ордер Buy Stop размещается на 1 пипс выше максимума бара, на котором образовался рабочий фрактал на покупку. Отложенный ордер Sell Stop размещается на 1 пипс ниже минимума бара, на котором образовался рабочий фрактал на продажу. Дополнительные позиции (по фракталам и другим индикаторам) открываются только после того, как был преодолен первый фрактал после смены тренда Аллигатором.


1.4. Awesome Oscillator — AO — сигналы второго измерения рынка

1.4.1. Общие сведения

Волшебный осциллятор (Awesome Oscillator — AO) определяет движущую силу рынка. Представляет собой разницу между 34-периодной SMA и 5-периодной SMA, рассчитанным по центральным значениям баров. На графике индикатор представляется в виде гистограммы:

Рисунок 5. Awesome oscillator

Рисунок 5. Awesome Oscillator

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

1.4.2. Паттерн на покупку "Блюдце"

Рисунок 6. Паттерн на покупку "Блюдце"

Рисунок 6. Паттерн на покупку "Блюдце"

Паттерн состоит из трех столбцов. Первый столбец должен быть выше среднего столбца и может быть любого цвета. Средний столбец должен быть красным. Третий столбец (сигнальный) должен быть зеленым. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру DiB (Dish Buy).

1.4.3. Паттерн на продажу "Блюдце"

Рисунок 7. Паттерн на продажу "Блюдце"

Рисунок 7. Паттерн на продажу "Блюдце"

Паттерн состоит из трех столбцов. Первый столбец должен быть ниже среднего столбца и может быть любого цвета. Средний столбец должен быть зеленым. Третий столбец (сигнальный) должен быть красным. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру DiS (Dish Sell).

1.4.4. Паттерн на покупку "Пересечение нулевой линии"

Рисунок 8. Паттерн на покупку "Пересечение нулевой линии"

Рисунок 8. Паттерн на покупку "Пересечение нулевой линии"

Сигнал появляется, когда гистограмма пересекает нулевую линию снизу вверх. Сигнальным является столбец, который пересек нулевую линию. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру CrB (Cross Buy).

1.4.5. Паттерн на продажу "Пересечение нулевой линии"

Рисунок 9. Паттерн на продажу "Пересечение нулевой линии"

Рисунок 9. Паттерн на продажу "Пересечение нулевой линии"

Сигнал появляется, когда гистограмма пересекает нулевую линию сверху вниз. Сигнальным является столбец, который пересек нулевую линию. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру CrS (Cross Sell).

1.4.6. Паттерн на покупку "Два пика"

Рисунок 10. Паттерн на покупку "Два пика"

Рисунок 10. Паттерн на покупку "Два пика"

Сигнал на покупку образуется, когда гистограмма находится ниже нулевой линии, и последнее дно индикатора выше предыдущего. При этом между этими экстремумами гистограмма не поднималась выше ноля. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру 2pB (2 peak Buy).

1.4.7. Паттерн на продажу "Два пика"

Рисунок 11. Паттерн на продажу "Два пика"

Рисунок 11. Паттерн на продажу "Два пика"

Сигнал на продажу образуется, когда гистограмма находится выше нулевой линии, и последний пик индикатора ниже предыдущего. При этом между этими экстремумами гистограмма не опускалась ниже ноля. Сигнал отображается экспертом на индикаторе AO и имеет аббревиатуру 2pS (2 peak Sell).

1.4.7. Установка ордеров

При возникновении сигнального столбца на покупку устанавливается отложенный ордер Buy Stop на 1 пипс выше максимума сигнального бара. При возникновении сигнального столбца на продажу устанавливается отложенный ордер Sell Stop на 1 пипс ниже минимума сигнального бара.


1.5. Acceleration/Deceleration Oscillator — AC — сигналы третьего измерения рынка

Гистограмма Acceleration/Deceleration (АС) — разность между гистограммой Awesome Oscillator и 5-периодным скользящим средним по Awesome Oscillator:

Рисунок 12. Осциллятор AC

Рисунок 12. Осциллятор AC

Сигнал на покупку образуется, если появилось два последовательных столбца с более высокими значениями, чем самый последний наименьший столбец (гистограмма находится выше нулевой линии); если гистограмма ниже нулевой линии, то требуется образование трех последовательных зеленых столбцов (рисунок 13, сигнал B — Buy).

Сигнал на продажу образуется, если появилось два последовательных столбца с более низкими значениями, чем самый последний наивысший столбец (гистограмма находится ниже нулевой линии); если гистограмма выше нулевой линии, то требуется образование трех последовательных красных столбцов (рисунок 13, сигнал S — Sell).

Рисунок 13. Паттерны осциллятора AC

Рисунок 13. Паттерны осциллятора AC

Сигнал отображается экспертом на индикаторе AС и имеет аббревиатуру S (Sell) или B (Buy). При возникновении сигнального столбца на покупку устанавливается отложенный ордер Buy Stop на 1 пипс выше максимума сигнального бара. При возникновении сигнального столбца на продажу устанавливается отложенный ордер Sell Stop на 1 пипс ниже минимума сигнального бара.


1.6. Зональная торговля — сигналы четвертого измерения рынка

Билл Вильямс вводит понятие торговых зон: зеленая и красная. Цена находится в зеленой зоне, если текущие столбцы АС и АО зеленые. Цена находится в красной зоне, если текущие столбцы АС и АО красные.

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

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

Сигналы зональной торговли отображаются на индикаторе AC как ZS (Zone Sell) и ZB (Zone Buy) (как правило, совпадают с сигналами от индикатора AC):

Рисунок 14. Сигналы зональной торговли

Рисунок 14. Сигналы зональной торговли


1.7. Торговля от линии баланса — сигналы пятого измерения рынка

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

Продажа ниже линии баланса выглядит зеркально.

Более подробно логика торговли от линии баланса описана в статье "Торговый эксперт по книге Б.Вильямса".

Эксперт отмечает паттерны горизонтальной линией в месте установки отложенного ордера:

Рисунок 15. Места установки отложенных ордеров

Рисунок 15. Места установки отложенных ордеров


1.8. Закрытие позиций

Билл Вильямс предложил несколько способов закрытия позиции:

  • Если на рынке существует тренд, то позиции нужно закрывать, если бар ценой закрытия пересекает Зубы Аллигатора (красную линию);
  • Stop Loss устанавливается после появления пятого подряд бара в зеленой (красной) зоне под экстремумом последнего бара;
  • Если появляется сигнал в противоположном направлении, то требуется закрыть все открытые позиции.


2. Графическая панель

2.1. Общие сведения

Внешний вид графической панели представлен на рисунке:

Рисунок 16. Графическая панель для управления советником

Рисунок 16. Графическая панель для управления советником

Графическая панель состоит из четырех логических блоков:

  • Настройки анализатора;
  • Настройки Аллигатора;
  • Настройки отображения и торговли по сигналам пяти измерений;
  • Торговые настройки.

После изменения настроек для принятия изменений необходимо нажать кнопку «Accept».


2.2. Настройки анализатора

К настройкам анализатора относятся следующие элементы:
  • Show Signals — опция отображения найденных паттернов по торговой стратегии Билла Вильямса;
  • RGB — настройки цвета для отображения найденных паттернов;
  • Bar count — расчет заданного количества баров по истории для маркировки графика (если задано нулевое значение, производится маркировка всего графика).


2.3. Настройки Аллигатора

Настройки Аллигатора представляют собой стандартные настройки данного индикатора. Дополнительно существует возможность отключения отображения данного индикатора (параметр Show).


2.4. Настройки отображения и торговли по сигналам измерений

Позволяет включить отображение отдельных сигналов (опция Show), а также торговлю по отдельным сигналам (опция Trade):
  • Фракталы (строка Dim1.Fractals);
  • AO (строка Dim2.AO);
  • AC (строка Dim3.AC);
  • Зональная торговля (строка Dim4.Zones);
  • Торговля от линии баланса (строка Dim5.Balance).

Дополнительно существует возможность включения отображения всех сигналов независимо от текущего тренда (опция Show out of trend signals).


2.5. Настройки торговли

Торговые настройки представлены единственным параметром – размером торгового лота (Lot).


2.6. Рабочее окно

Внешний вид рабочего графика представлен на рисунке (панель настройки в свернутом состоянии):

Рисунок 17. Рабочее окно

Рисунок 17. Рабочее окно



3. Создание советника в мастере MQL5

3.1. Подготовка

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


3.2. Создание советника

Для автоматической генерации советника требуется выполнить следующие шаги:

В редакторе MQL необходимо выбрать пункт "Создать" и в появившемся окне выбрать пункт "Советник (генерация)":

Рисунок 18. Мастер MQL - шаг 1

Рисунок 18. Создание советника — шаг 1

Далее необходимо ввести имя создаваемого советника:

Создание советника - шаг 2

Рисунок 19. Создание советника — шаг 2

На следующем шаге необходимо добавить используемый генератор сигналов:

Создание советника - шаг 3

Рисунок 20. Создание советника — шаг 3

В качестве генератора сигналов требуется выбрать "Signal of BillWilliams trading system":

Создание советника - шаг 4

Рисунок 21. Создание советника — шаг 4

Следующий шаг подтверждается без изменений:

Создание советника - шаг 5

Рисунок 22. Создание советника — шаг 5

Далее подтверждается выбор модуля торговых сигналов:

Создание советника - шаг 6

Рисунок 23. Создание советника — шаг 6

При необходимости устанавливаются параметры трейлинг-стопа:

Создание советника - шаг 7

Рисунок 24. Создание советника — шаг 7

Далее устанавливаются параметры управления капиталом:

Создание советника - шаг 8

Рисунок 25. Создание советника — шаг 8

Далее необходимо отредактировать файл созданного советника, для того чтобы советник реагировал на изменения параметров в торговой панели:

В файле необходимо найти участок кода:

//--- Creating filter CBillWilliamsSignal
CBillWilliamsSignal *filter0=new CBillWilliamsSignal;

И заменить его на:

filter0=new CBillWilliamsSignal;

Объявить глобальную переменную filter0:

//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
CBillWilliamsSignal *filter0;

А также добавить обработчик событий графика:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
  filter0.ChartEvent(id,lparam,dparam,sparam);
}

Созданный эксперт готов к использованию.


3.3. Ограничения

Созданный в мастере эксперт имеет ограничения, накладываемые API стандартной библиотеки:

  1. Нет возможности доливки позиции, если позиция уже открыта (требуется доработка стандартной библиотеки);
  2. Эксперт торгует только рыночными ордерами.

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


4. Результаты тестирования

4.1. EURUSD D1, 2015

Рисунок 18. График тестирования EURUSD D1, 2015

Рисунок 26. График тестирования EURUSD D1, 2015

Подробные результаты в файле EUR-D1-2015.zip.


4.2. EURUSD D1, 2010 - 2015

Рисунок 19. График тестирования EURUSD D1, 2010-2015

Рисунок 27. График тестирования EURUSD D1, 2010-2015

Подробные результаты в файле EUR-D1-2010-2015.zip.


4.3. EURJPY D1, 2010 - 2015

Рисунок 20. График тестирования EURJPY D1, 2010-2015

Рисунок 28. График тестирования EURJPY D1, 2010-2015

Подробные результаты в файле EURJPY-D1-2010-2015.zip.


Заключение

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

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