Ниже представлен код двух способов построения дивергенции. Один с помощью функции корреляции, другой с помощью функции пивот.
ta.correlation() — Коэффициент корреляции. Описывает степень, на которую две серии стремятся отклониться от своих ta.sma значений.
7 — передаем значение встроенной функции ta.rsi в переменную rsi
8 — задаем коэффициент корреляции, на который будет реагировать индикатор
9 - задаем расчетный период корреляции
11 — переносим значение встроенной функции корреляции ta.correlation в переменную correlation
14 — задаем цвет направления корреляции, изначально бесцветный
15 — с помощью тернарного оператора задаем два условия дивергенции типа Strong. Первое условие медвежьей дивергенции, цвет будет красный, второе — бычьей и цвет зеленый. В случае не выполнения обоих условий цвет будет серый.
Серый цвет можно сменить на бесцветный, в нем не выполняется условие бычьей или медвежьей дивергенции Strong, цена и осциллятор вместе растут или вместе падают, просто один из них это делает быстрей.
Цвет окраски линии сигнала (строка 17), а цвет окраски линии, от которой считается корреляция окрашена в белый цвет (строка 18).
О работе условного тернарного оператора ?: можно прочитать здесь.
19 — строим линию значений корреляции (синяя, если не задавать цвет plot)
20 — задаем нейтральное (нулевое) значение корреляции (серая)
21 — задаем максимальное положительное значение корреляции (зеленая)
22 - задаем максимальное отрицательное значение корреляции (красная)
ta.pivothigh() — Эта функция возвращает цену верхней точки разворота. Возвращает 'NaN', если не было верхней точки разворота.
25 — строка кода задает период пивот, количество серий слева и справа относительно верхней точки разворота
26 — функция пивота максимальных значений, ищется по цене close
27 — передаем значение встроенной функции ta.rsi в переменную rsi
29 — задаем название нашей функции
30 — задаем начальное значение длины от текущего пивота до искомого
31 — задания цикла перебирающего значения от текущего до 40 свечей назад по одной свече
32 — условие текущего пивота и дивергенции типа Strong
33 — присвоение переменной длины от текущего пивота до искомого текущего значения
34, 35 — определение тангенса углов линии дивера к горизонтали на графике цены и осциллятора
36 — задание цикла проверяющего найденную линию на предмет пересечения с ценами close, если пересечение происходило, то переменная length приравнивается 0 и не строится на графике в части кода, отведенных под визуализацию 43-47
Эти реализации сигналов дивергенций не являются исчерпывающими.
А с помощью каких индикаторов вы определяете дивергенцию на графиках? Делитесь в комментариях!
❗ Реализации сигналов в статье приведены в качестве примера, их использование не служит рекомендацией к действиям по применению данных сигналов.
Спасибо всем, кто дочитал статью до конца. Буду рад, если данная информация вам помогла.