вторник, 11 сентября 2012 г.

Модифицированные ленты Боллинджера

Первое сообщение будем считать отладочным.
Теперь по порядку.  Пару лет назад мне попалась книга "Боллинджер о лентах Боллинжера". После ее прочтения сразу же захотелось применить полученные знания в терминале Metatrader 4 (далее MT4) и сразу же появились проблемы: во первых количество отклонений можно было задавать только целым числом, во вторых, что более серьезно, в составе не было встроенных очень нужных индикаторов ширины ленты BandsWidth (далее BW) и %b.
Первая проблема была решена довольно быстро - в кодовой базе MT4 есть исходный код индикатора Bollinger Bands http://codebase.mql4.com/ru/243, в котором тип параметра BandsDeviations установлен как double.
Вторая проблема оказалась сложней - пришлось написать код индикаторов самостоятельно. 
И тут началось самое интересное. При написании кода этих дополнительных индикаторов возникло несколько идей относительно самого индикатора полос. 
Первое, что хочется сразу изменить - это указывать метод построения центральной тенденции. В книге указано, что мерой центральной тенденции является простая скользящая средняя. Что мешает нам добавить метод построения в качестве параметра?

Далее в качестве параметра добавляем количество точек для построения отклонений, т.к. во встроенном индикаторе количество точек и период скользящей средней совпадает.
Следующий шаг - добавить в качестве параметра степень для расчета отклонений. Что это значит? При расчете разность между средним значением и данными возводится в квадрат, далее из средней суммы квадратов извлекается квадратный корень. Возведение в квадрат заодно устраняет отрицательные значения разностей. А можно эту степень сделать произвольной. Т.е., мы будем возводить разность в степень H, а среднюю от суммы этих степеней возводить в степень 1/H. При значении H=2 получаем исходную формулу.
Проще говоря, вот текст из описания индикатора, размещенного по выше указанной ссылке:
"
Полосы Боллинджера формируются из трех линий. Средняя линия (MIDDLE LINE, ML) — это обычное скользящее среднее.

ML = SUM (CLOSE, N) / N = SMA (CLOSE, N)


Верхняя линия (TOP LINE, TL) — это та же средняя линия, смещенная вверх на определенное число стандартных отклонений (D).

TL = ML + (D * StdDev)

Нижняя линия (BOTTOM LINE, BL) — это средняя линия, смещенная вниз на то же число стандартных отклонений.
BL = ML — (D * StdDev)
StdDev = SQRT (SUM ((CLOSE - SMA (CLOSE, N))^2, N)/N)
где:
  • SUM (..., N) — сумма за N периодов;
  • CLOSE — цена закрытия;
  • N — количество периодов, используемых для расчета;
  • SMA — простая скользящая средняя;
  • SQRT — квадратный корень;
  • StdDev — стандартное отклонение:
 "

Мы в формуле для ML метод SMA заменяем на задаваемый параметром.
Формулу для StdDev заменяем на следующую:

StdDev =  (SUM ((PRICE - MA (CLOSE, M))^H, M)/M))^1/H

Значение M может отличаться от значения N, используемого для построения линии ML.

Ну и последнее - верхняя и нижняя линии индикатора. А что, если рисовать среднюю от рассчитанных значений для этих линий. Причем, также как и для центральной тентенции, задавать метод построения этой средней.
В результате получается индикатор со следующими параметрами:
 - параметры построения средней линии:
  • MA_Period - период построения ML;
  • MA_Shift - сдвиг ML;
  • MA_Mode - метод построения ML;
  • MA_Price - цена, используемая для построения ML.
- параметры построения отклонений:
  • Bands_Period - период для усреднения отклонений;
  • Bands_Dev - коэффициент;
  • Bands_H - используемая степень.
- параметры усреднения границ ленты:
  • Bounds_Period - период;
  • Bounds_Shift - сдвиг;
  • Bounds_Mode - метод построения.
Исходный файл - !bands.mq4
В дальнейшем он будет называться основным или базовым индикатором.
Этот индикатор я использую в советниках, других индикаторах и скриптах, а также при подборе параметров.

Одним из следствий усреднения границ ленты является то, что расстояния от верхней границы до средней линии не равно расстоянию от нижней границы. Этот эффект дает дополнительные возможности для анализа лент на графиках.
Итоговый индикатор получил название Модифицированная полоса Боллиджера. 
Индикатор получился интересный, однако обилие параметров затрудняет его использование:  долго набирать, увеличивается вероятность ошибок.
Практика использования показала, что обычно используется несколько наборов параметров.
Конкретно я использую три: большой период, средний период и малый период.
Для упрощения работы с индикатором пришлось сделать индикатор-обертку.
Работает он следующим образом:
при инициализации проверяется наличие глобальных переменных со значениями параметров, если они есть, то значения считываются из этих переменных, в противном случае переменные создаются со стандартными значениями.
Далее необходимо удалить индикатор, определить нужные значения и заново установить индикатор.
 

Исходный файл индикатора - !bandsView.mq4
Этот индикатор я использую для нанесения на графики.
Параметры:
  • view - способ отображения: 0 - показать все линии, 1 - верхняя и средняя линии, 2 - средняя и нижняя линии, 3 - верхняя и нижняя границы, 4 - только средняя линия (бесполезный режим, сделан только для полноты - при выборе этого режима фактически отображается MA), 5 - верхняя линия, 6 - нижняя линия, 7 - верхняя или нижняя линия в зависимости от наклона средней линии, т.е если MA направлена вверх, то показывается верхняя линия и наоборот, 8 - аналогично 7, но при наклоне вверх показывается нижняя линия и наоборот (этот режим использую для установки stoploss);
  • name - имя комплекта параметров.
Имена глобальных переменных формируются по правилу:
name-<имя параметра основного индикатора>
Хорошим свойством МТ4 является то, что значения глобальных переменных сохраняются от сеанса к сеансу.

Недостатком метода является то, что сохраненный шаблон нельзя использовать в другом терминале без предварительного определения значений глобальных переменных. Это надо помнить при переустановке МТ4 или переносе/публикации  шаблонов.

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

Комментариев нет:

Отправить комментарий