Основные отличия индикатора 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
.

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