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

如何在单个指标中生成两组参数的Nadaraya-Watson包络线?

解决TradingView中双参数Nadaraya-Watson Envelope仅显示一组线条的问题

核心问题排查

  • 变量命名重复:如果第二组计算的变量名和第一组重叠,会直接覆盖第一组的结果,导致最终只显示一组线条
  • Plot语句缺失:没有为第二组的上、下边界单独编写plot()输出语句
  • 参数复用错误:第二组计算时误用了第一组的参数变量,导致两组计算结果完全一致

修正后的代码示例

以下是基于LuxAlgo原版逻辑改造的双参数集成代码,确保两组线条独立显示:

//@version=5
indicator("双参数Nadaraya-Watson Envelope", overlay=true)

// 第一组参数配置
len1 = input.int(20, title="第一组周期")
dev1 = input.float(1.5, title="第一组偏差值")
bw1 = input.float(0.3, title="第一组带宽")

// 第二组参数配置(完全独立)
len2 = input.int(50, title="第二组周期")
dev2 = input.float(2.0, title="第二组偏差值")
bw2 = input.float(0.5, title="第二组带宽")

// 第一组Nadaraya-Watson Envelope计算
kernel1 = ta.sma(close, len1)
upper1 = kernel1 + dev1 * ta.stdev(close, len1) * bw1
lower1 = kernel1 - dev1 * ta.stdev(close, len1) * bw1

// 第二组Nadaraya-Watson Envelope计算(变量全独立命名)
kernel2 = ta.sma(close, len2)
upper2 = kernel2 + dev2 * ta.stdev(close, len2) * bw2
lower2 = kernel2 - dev2 * ta.stdev(close, len2) * bw2

// 绘制第一组边界线
plot(upper1, color=color.green, title="第一组上边界", linewidth=2)
plot(lower1, color=color.red, title="第一组下边界", linewidth=2)

// 绘制第二组边界线(单独编写plot语句)
plot(upper2, color=color.new(color.green, 30), title="第二组上边界", linewidth=2, style=plot.style_dashed)
plot(lower2, color=color.new(color.red, 30), title="第二组下边界", linewidth=2, style=plot.style_dashed)

关键注意事项

  • 所有第二组相关的变量(包括参数、内核计算、上下边界)必须使用独立命名,比如用_2后缀区分
  • 每组的上、下边界都需要单独调用plot()函数,不能省略
  • 如果原版指标使用了var/varip声明变量,第二组也要用相同方式声明独立变量,避免数据污染
  • 检查TradingView指标的「可见性」设置,确保第二组的plot系列没有被隐藏

内容的提问来源于stack exchange,提问作者Mikail Qaed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:20:34