我不是 Python 或其他方面的专家,但我认为您正试图除以零。
RSI 的公式为:
RSI= 100 - { 100 \ (1+RS) }
在哪里
RS = SMMA(U,n) / SMMA(D,n)
如果向下的 rma 等于零,则等式中的逻辑似乎无法解释 RS 在分母中为零的事实。只要价格连续 14 个周期呈下降趋势,或者无论 RSI 的周期是什么,就会出现这种情况。
每当出现上述情况时,pine 编辑器脚本通过将 RSI 设置为 100 来解决此问题。
在下面的第 6 行:只要 down rma 项等于 0,RSI 就会切换到 100。该行的第二部分仅在代码不会被零除时执行。
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)