Обзор кода индикатора Bollinger Bands

Основные отличия индикатора Bollinger Bands от Moving Average в том, что в нём используются сразу 3 кривые, а также для расчётов необходимо объявить дополнительную функцию в коде. Для каждой кривой вводится свой ID. Также используется дополнительный параметр "Отклонения". Полный код индикатора Bollinger Bands выглядит следующим образом:

Исходя из установленного блока параметров всплывающее окно при выхове индикатора выглядит так:

function main(period, deviation, color, id1, id2, id3) {...} Определение функции включает уже три ID для каждой кривой.

В массив list_colors с индексами, соответствующие кривым индикатора, записываем выбранный цвет из форма для отрисовки кривых. Для каждой кривой можно назначить свой цвет, в данном случае всем кривым назничается один цвет. Очищаем 3 массива buff_curves с соответствующими индексами. Индексы id1, id2 и id3 соответствуют нижней, средней и верхей линиям.

Вычисление скользящей средней. К переменной view прибавляем period, так как для вычисления верхней и нижней кривых будут необходимы значения скользящей средней от текущего бара с индексом i до бара с индексом i + period. Вычисленные значения записываем в buff_curves с индексом id2 (средняя линия).

Цикл для вычисления верхней и нижней кривых. В переменную sd записывается значение вычисленного стандартого отклонения через произведение входящего значения deviation и значения функции stddev(). Переменная ma – текущее значение скользящей средней. В массив buff_curves с индексами id1 и id3 записываются значения нижней и верхней линии.

Дополнительные функции желательно располагать внутри function main() во избежание конфликтов с другими функциями. В единственный параметр функции i передаётся индекс свечи, для которого необходимо найти значение. В расчётах используются значения вычисленной скользящей средней, начиная с текущей свечи до свечи с индексом i + period, из-за чего при её вычислении к view был добавлен period.

Вид индикатора на графике:

Эта информация была полезной?

29 people found this page helpful so far!