python - pine 脚本如何使用 2 系列而不是 1 和一个周期来计算 RSI?

标签 python algorithmic-trading pine-script

我有一个 pine 脚本,我正在尝试将其转换为 python。

但是,pine 脚本允许 RSI 有 2 个系列作为输入,而不是传统的系列和周期。

我的问题是这是如何实现的,我在他们的文档中尝试了实现,但它不会计入第二个系列:

pine_rsi(x, y) => 
u = max(x - x[1], 0) // upward change
d = max(x[1] - x, 0) // downward change
rs = rma(u, y) / rma(d, y)
res = 100 - 100 / (1 + rs)
res

谢谢,

最佳答案

我不是 Python 或其他方面的专家,但我认为你正在尝试除以零。

RSI 的公式为:

RSI= 100 - { 100 \ (1+RS) }

哪里

RS = SMMA(U,n) / SMMA(D,n)

方程中的逻辑似乎没有考虑到这样一个事实:如果向下的 rma 等于零,则 RS 的分母将为零。只要价格连续 14 个周期呈下降趋势,或者无论 RSI 的周期是多少,就会出现这种情况。

当上述情况发生时,pine 编辑器脚本会通过将 RSI 设置为 100 来解决此问题。

下面第 6 行:只要向下 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)

关于python - pine 脚本如何使用 2 系列而不是 1 和一个周期来计算 RSI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50310872/

相关文章:

python - 从选项卡完成中隐藏不推荐使用的方法

python - 如何实现 Nadex 自动交易机器人?

multithreading - C#算法股票交易

pine-script - 松脚本在一天结束时关闭所有头寸

pine-script - 为什么 barsince 在 pine script v5 中不起作用?

plot - 本地范围内的交易 View 松树脚本错误 "cannot use ' 绘图“

使用 WSGI gunicorn 在 Django 中导入 Python 应用程序时出错

python - 如何更新 Python 包?

python - Matrix (scipy sparse) - Matrix (dense; numpy array) 乘法效率

python - 更新和合并 pandas 数据框中的列