Рассмотрим код индикатора Stochastic, являющийся осцилятором. В отличие от рассмотренных выше индикаторов, он располагается не на ценовом графике, а в отдельном окне под графиком. Полный код индикатора:

list_range[id] = [0, 100];
Для того, чтобы вычисленные данные отрисовывались в новом окне, необходимо ввести массив list_range
и элементу с индексом текущего индикатора id
присвоить значение массива с минимальным и максимальным возможными значениями индикатора. В случае с индикатором Stochastic это будет [0, 100]
. Ввод этого массива является условием для отрисовки индикатора в новом окне.
var max_high = high[i]; var min_low = low[i];
Вводим переменные для нахождения максимальной цены high и минимальной цены low. Присвоиваем соотвествующие цены текущего бара.
for (var j = i + 1; j < i + period; j++) {...}
Для баров, начиная со следующего бара (i + 1
) до бара с индексом i + period
находим max_high
и min_low
.
buff_curves[id][i] = 100 * ((close[i] - min_low) / (max_high - min_low));
По формуле находим значения индикатора для соответсвующего бара.
Вид индикатора на графике:

Доработка кода 1: добавление средней линии
Доработаем код индикатора добавлением скользящей средней линии. Сравните код с первоначальным. Обратите внимание на добавление новых параметров, введение новых массивов для, а также на цикл для подсчёта средней линии.

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

Доработка кода 2: добавление уровней перепроданности и перекупленности
Добавим отрисовку двух горизонтальных линий. Задача решается добавлением новых параметров: значения уровней и их цвет. Также вводятся дополнительные массивы. Далее в последнем цикле добавляются 2 строчки:
buff_curves[id3][i] = level1;
buff_curves[id4][i] = level2;
На протяжении всего цикла значения кривых с индексами id3
и id4
имеют неизменные значения, что приводит к отрисовки прямых горизонтальных линий с установленными значениями.

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