Pine Script v5如何复现使用序列作为length参数的RSI行为
Pine Script v5复现v4版RSI传入序列功能的方案
Pine Script v4中
rsi(x, y)函数传入两个序列类型参数时,官方逻辑为直接将x识别为上涨变动移动平均值、y识别为下跌变动移动平均值,直接带入RSI公式计算结果,不执行内置的周期平滑步骤。v5中ta.rsi()仅支持传入固定整数作为长度参数,因此手动实现RSI计算公式即可复现原有功能。
实现步骤
- 准备好对应v4版本中你要传入RSI函数的两个序列参数,分别对应上涨均值序列
upSeries、下跌均值序列downSeries - 使用RSI核心公式手动计算结果:
RSI = 100 - (100 / (1 + upSeries / downSeries))
完整代码示例
//@version=5 indicator("V4兼容自定义RSI", overlay=false) // 示例:自行计算涨跌均值序列,可替换为你自己的任意序列逻辑 priceChange = ta.change(close) // 对应v4中传入RSI的第一个序列参数(上涨均值) upSeries = ta.rma(math.max(priceChange, 0), 14) // 对应v4中传入RSI的第二个序列参数(下跌均值) downSeries = ta.rma(math.abs(math.min(priceChange, 0)), 14) // 手动计算RSI,完全匹配v4双序列传参逻辑 // 增加边界判断避免除零错误 customRsi = switch downSeries == 0 => 100 upSeries == 0 => 0 => 100 - (100 / (1 + upSeries / downSeries)) plot(customRsi, "RSI", color=color.new(color.blue, 0)) hline(70, "超买线", color=color.red) hline(30, "超卖线", color=color.green)
注意事项
- 代码中的
upSeries和downSeries可替换为任意你自己生成的序列值,不需要固定使用RMA算法计算,完全对齐v4版本的使用自由度 - 边界判断可根据你的实际需求调整,避免极端行情下出现计算错误
内容的提问来源于stack exchange,提问作者Lughino
相关产品推荐
相关产品推荐

