Я не специалист по Python или чему-то еще, но я думаю, что вы пытаетесь разделить на ноль.
Уравнение для RSI:
RSI= 100 - { 100 \ (1+RS) }
, где
RS = SMMA(U,n) / SMMA(D,n)
Логика в вашем уравнении, по-видимому, не учитывает тот факт, что RS будет иметь ноль в знаменателе, если нисходящее значение rma равно нулю.Это условие возникает всякий раз, когда цена имеет тенденцию к снижению в течение 14 последовательных периодов или любого периода RSI.
Сценарий Pine Editor учитывает это, устанавливая RSI равным 100, когда возникает описанная выше ситуация.
В строке 6 ниже: RSI переключается на 100 каждый раз, когда член rma равен 0. Вторая часть строки выполняется только тогда, когда код не делится на ноль.
1 //@version=3
2 study(title="Relative Strength Index", shorttitle="RSI")
3 src = close, len = input(14, minval=1, title="Length")
4 up = rma(max(change(src), 0), len)
5 down = rma(-min(change(src), 0), len)
6 rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
7 plot(rsi, color=purple)
8 band1 = hline(70)
9 band0 = hline(30)
10 fill(band1, band0, color=purple, transp=90)