Повторю пост, так как в прошлый раз был отправлен в бан за упоминание сторонних сервисов.
⚠️ ПРЕДУПРЕЖДЕНИЕ: много нудной технической информации, но, возможно, кому-то будет интересно :)
Изучаю индикатор RSI 14 - индекс относительной силы (Relative Strength Index). По сути он отображает силу тренда. Методика расчета для каждой свечи примерно следующая. Берутся последние N свечей до текущей включительно (по умолчанию N = 14). В этой пачке определяют растущие свечи (у которых цена закрытия выше закрытия предыдущей свечи) и падающие свечи (цена закрытия ниже закрытия предыдущей свечи). Суммируют дельты цен отдельно в растущих и падающих свечах и вычисляют относительную силу RS как отношение полученных сумм. Затем полученное значение RS приводят к такому, чтобы оно было в интервале от 0 до 100, по формуле: RSI = 100-(1 / (1 + RS))
Зону RSI от 0 до 20-30 называют зоной перепроданности. Зона от 70-80 до 100 - зона перекупленности. Выход RSI из этих зон является сигналом: из зоны перепроданности - к покупке, из зоны перекупленности - к продаже. Рекомендуется подтверждать сигналы RSI другими индикаторами.
Добавил в телеграм-бот сигналы по событиям этого индикатора, сейчас тестирую и отлаживаю.
В процессе обнаружил массу интересных и досадных нюансов. Если вывести в разных сервисах (YF, TV и в терминале ТИ (QUIK)) RSI по одному инструменту с одинаковыми настройками (число периодов, таймфрейм), то можно увидеть разные значения.
Например, AMGN, 1H (таймфрем = 1 час), 14 периодов, на последней свече 06.05.2021 в 22:30:
TV RSI = 69,71
YF = 66,43
QUIK = 63,87
Мои расчеты по описанной выше методике дали 71,7.
Похоже, используются разные способы округления или вычисления промежуточных значений, например, усреднения показателей приростов и падений. К тому же немного различаются цены закрытия часовых свечей.
Например, AMGN, последняя свеча 06.05.2021 22:30:
TV = 251,46
YF= 251,3
неофициальный API YF = 250,11
QUIK = 251,3
Думаю, с этим ничего не поделать, вычисляемый RSI не будет совпадать с показаниями в других сервисах, как ни крути. Поэтому, если всё будет хорошо, и я опубликую в телеграм-боте возможность подписки на сигналы RSI, нужно иметь в виду эти нюансы.
Для расчета RSI пришлось вернуться к апи ТИ, так как YF по некоторым тикерам возвращает пустые (нулевые) часовые свечи. Чем меньше размер свечи и чем свежее данные, тем больше вероятность получить пустые свечи. Но в ТИ другая проблема. Часовые свечи можно получить только за последнюю неделю. Если вычислять RSI по популярному 4H (4 часа), то для 14 периодов часовых свечей не хватает: за 5 рабочих дней для основной сессии Мосбиржи с 10:00 до 18:40 получаем грубо говоря 5*9 = 45 часов. 45 / 4 = 11,2 - уже не хватает, ведь нужно 14. С этим тоже ничего не поделать, придется довольствоваться часовыми или дневными свечами, но не 4H. Пока экспериментирую на дневных свечах - каждый день в 17:00 прилетают сигналы по списку тикеров.
Зато в YF можно получать свечи индексов (S&P, Nasdaq и т.д.), поэтому пока сделал костыль и считаю RSI индексов YF.