Статьи по MQL4
Некоторые способы постройки каналов

Некоторые способы постройки каналов


например, forex

Многие трейдеры используют значение максимумов и минимумов за определенный период времени для создания торговой системы. Из известных - это торговая система Черепашек и каналы Дончиана. Мы рассмотрим алгоритм создания таких каналов с использованием функции iHighest() и iLowest() . Общепринятое название такого канала PriceChannel (ценовой канал), так и назовем индикатор. Наш индикатор будет показывать текущие уровни максимума и минимума за период N баров в виде линий. Вызываем «Мастер создания советников» и заполняем нужные поля.

Рис. 1
Рис. 1

В данном случае я выбрал значение 20 – именно период в двадцать дней использовался в системе Черепах для торговли на прорывах.

Рис. 2
Рис. 2

Так как мы должны видеть уровни канала, то индикатор будет рисоваться на графике цен. Одна линия будет показывать максимум, другая минимум.

Рис. 3
Рис. 3

Я немного дописал код для лучшего понимания и пользования. Осталось только написать код заполнения буферов значениями.

Рис. 4
Рис. 4

Функции iHighest() и iLowest() заменили устаревшие функции Highest() и Lowest(). Код получился очень простой, компилируем и прикрепляем к графику.

Рис. 5
Рис. 5

Через окно DataWindow мы можем посмотреть значения любого буфера индикатора на нужную дату. Единственный недостаток данного индикатора (на мой взгляд) – отсутствие визуального подтверждения прорыва 20-дневного диапазона. Чтобы исправить этот недостаток, мы немного изменим код индикатора и назовем его PriceChannel-2.mq4.

Рис. 6
Рис. 6

Новая версия индикатора выглядит более наглядно.

Рис. 7
Рис. 7

Разница между двумя версиями видна при их сравнении.

Рис. 8
Рис. 8

Есть множество стратегий, которые основываются на пробитии некоторого диапазона.

Рис. 9
Рис. 9

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

Одним из таких способов является использование индикатора ADX(). Популярным значением периода для этого индикатора является значение в 14 дней. Если присмотреться к этому индикатору, то видно, что во флете его значения очень малы, а при тренде нередко превышают значения 40.

Рис. 10
Рис. 10

На одном из форумов я услышал про использование значения 150/ADX(14) в качестве переменного периода для индикатора PriceChannel. Изменим код нашего индикатора и назовем его ADXChannell.mq4.

Рис. 11
Рис. 11

Характер ценового канала изменился.

Рис. 12
Рис. 12

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

Рис. 13
Рис. 13

Набросим новый индикатор на график.

Рис. 14
Рис. 14

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

Кроме обычных средних, в качестве средней линии могут быть использованы сложные алгоритмы, например адаптивная скользящая средняя Кауфмана - АМА ( Adaptive Moving Average by Perry Kaufman ). Этот индикатор достаточно хорошо знаком многим трейдерам, найти его несложно. Поэтому в качестве примера я решил взять другой индикатор – FRAMA. Прочитать о нем можно здесь - Fractal Adaptive Moving Average by John Ehlers . Сам код индикатора можно написать и по-другому, мой вариант не является классическим.

Можно сравнить среднюю линию PriceChannel и FRAMA.

Рис. 15
Рис. 15

Единственное достоинство, которое мы видим на глаз сразу – более плавный ход FRAMA по сравнению со средней линией PriceChannel. Попробуем построить канал от FRAMA. Для этого нам необходимо правило, по которому мы будем откладывать границы канала от FRAMA. Предлагаю для этого использовать отклонения цены закрытия Close от значения FRAMA. А точнее, стандартное отклонение этого распределения.

Итак, имеем: 1. значения индикатора FRAMA, которое мы будем показывать 2. отклонения цены Close от FRAMA, которые мы не будем показывать 3. верхняя граница канала, которую мы будем показывать 4. нижняя граница канала, которую мы будем показывать.
Значит, наш индикатор должен выводить (рисовать) три буфера и иметь один скрытый (вспомогательный) буфер для расчетов. МТ4 легко позволяет это, но нужно помнить, что неотображаемые буферы должны быть последними (иметь максимальный индекс).

Рис. 16
Рис. 16

Для того, чтобы построить границы канала, сначала мы должны в цикле посчитать значения FRAMA и отклонения, и только потом в отдельном цикле мы можем вычислять границы канала.

Рис. 17
Рис. 17

Для примера я использовал одну из функций, которая рассчитывается на массиве значений – iStdDevOnArray(). Полученный индикатор со значениями по умолчанию выглядит так.

Рис. 18
Рис. 18

Все индикаторы находятся здесь .
 
+7 (495) 710-76-76
8 (800) 200-01-31
по России бесплатно

закрыть

Вход в личный кабинет

Для счета alpari.classic введите номер счета (буква и 4 цифры) и пароль в ЛК.

Для счетов alpari.micro и alpari.partner введите логин и пароль в МТ.

Зарегистрироваться!Забыли пароль?

 
Rambler's Top100