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

Pine Script合并DMI等指标时SmoothedTrueRange重复声明错误求助

Pine Script变量重名报错修复方案

这个报错的核心原因是同一作用域下变量重复声明:你原有脚本里的旧DMI模块已经定义过SmoothedTrueRange变量,新引入的开源平滑DMI代码中存在同名的变量声明,触发了Pine Script的语法校验规则。

修复可任选以下一种方案:

  • 直接删除旧DMI模块的完整代码。如果是全量替换原有DMI逻辑,大概率是旧DMI代码没有清理干净,残留了SmoothedTrueRange的声明行,找到所有旧DMI相关的计算代码删除,仅保留新的平滑DMI代码即可解决。
  • 重命名冲突变量。如果需要同时保留新旧两个DMI模块做效果对比,任选其中一个模块的SmoothedTrueRange变量改名,比如把新模块的变量改为SmoothedTrueRange_Smooth,同时同步修改该模块下所有引用这个变量的代码行即可。
  • 封装独立作用域。把其中一个DMI模块的代码封装为自定义函数,函数内部的变量属于局部作用域,不会和全局变量产生冲突,参考封装示例:
// 封装平滑DMI为自定义函数,避免变量冲突
f_smoothDMI(length) =>
    SmoothedTrueRange = ta.sma(ta.tr, length)
    // 剩余平滑DMI的计算逻辑写在函数内部
    [diPlus, diMinus, adx] // 最后返回你需要用到的DMI指标值

如果修复后还有其他DMI相关变量(比如SmoothedPlusDirectionalMovement、SmoothedMinusDirectionalMovement)报同类错误,用同样的逻辑处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:24:05