You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TradingView自定义Jurik RSX Pine Script函数报错修复求助

修复Jurik RSX Pine Script函数的语法错误

错误原因分析

你遇到的Mismatched input 'f90_' expecting 'end of line without line continuation'错误主要来自三个问题:

  1. 函数未声明src参数,但代码中直接使用了该变量
  2. 未使用var关键字声明需要保留历史值的变量,导致Pine Script解析器无法识别变量的历史引用(如f90_[1])
  3. 嵌套三元运算符的优先级不明确,引发语法解析冲突

修复后的完整代码

//@version=5
indicator("Jurik RSX Custom", overlay=false)

jrsx(src, length)=>
    var float f90_ = 1.0
    var float f88 = 5.0
    var float f28 = 0.0
    var float f30 = 0.0
    var float f38 = 0.0
    var float f40 = 0.0
    var float f48 = 0.0
    var float f50 = 0.0
    var float f58 = 0.0
    var float f60 = 0.0
    var float f68 = 0.0
    var float f70 = 0.0
    var float f78 = 0.0
    var float f80 = 0.0
    var float f90 = 0.0

    // 初始化与更新f90_和f88
    f90_ := (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1]) + 1 : nz(f90_[1]) + 1
    f88 := (nz(f90_[1]) == 0.0) and (length - 1 >= 5) ? length - 1.0 : 5.0 

    f8 = 100.0 * src 
    f18 = 3.0 / (length + 2.0) 
    f20 = 1.0 - f18 
    f10 = nz(f8[1])
    v8 = f8 - f10 

    // 平滑计算
    f28 := f20 * nz(f28[1]) + f18 * v8 
    f30 := f18 * f28 + f20 * nz(f30[1])
    vC = f28 * 1.5 - f30 * 0.5 

    f38 := f20 * nz(f38[1]) + f18 * vC 
    f40 := f18 * f38 + f20 * nz(f40[1])
    v10 = f38 * 1.5 - f40 * 0.5 

    f48 := f20 * nz(f48[1]) + f18 * v10 
    f50 := f18 * f48 + f20 * nz(f50[1])
    v14 = f48 * 1.5 - f50 * 0.5 

    // 绝对值平滑计算
    f58 := f20 * nz(f58[1]) + f18 * abs(v8) 
    f60 := f18 * f58 + f20 * nz(f60[1])
    v18 = f58 * 1.5 - f60 * 0.5

    f68 := f20 * nz(f68[1]) + f18 * v18 
    f70 := f18 * f68 + f20 * nz(f70[1])
    v1C = f68 * 1.5 - f70 * 0.5 

    f78 := f20 * nz(f78[1]) + f18 * v1C 
    f80 := f18 * f78 + f20 * nz(f80[1])
    v20 = f78 * 1.5 - f80 * 0.5

    // 状态判断与RSX计算
    f0 = ((f88 >= f90_) and (f8 != f10)) ? 1.0 : 0.0
    f90 := ((f88 == f90_) and (f0 == 0.0)) ? 0.0 : f90_
    v4_ = ((f88 < f90) and (v20 > 1e-10)) ? (v14 / v20 + 1.0) * 50.0 : 50.0
    rsx = math.clamp(v4_, 0.0, 100.0)
    rsx

// 使用示例
lengthInput = input.int(14, "Length")
rsxValue = jrsx(close, lengthInput)
plot(rsxValue, color=color.blue, title="Jurik RSX")
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)

关键修复说明

  • 添加src参数:函数需要接收价格数据源(如close)作为输入,否则会找不到src变量
  • 用var声明历史变量:所有需要引用上一根bar值([1])的变量必须用var声明,确保Pine Script保留其跨bar的状态
  • 使用:=更新变量:对于var声明的变量,需要用:=赋值来更新其值,而不是=
  • 替换嵌套三元的边界判断:用math.clamp()替代原有的嵌套三元运算符,简化代码同时避免语法歧义
  • 调整浮点数精度判断:将0.0000000001替换为1e-10,代码更简洁且精度一致

内容的提问来源于stack exchange,提问作者Krishnendu Bhattacharyya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:48:19