如何在Nadaraya-Watson指标中添加多组mult参数的双波段线?
实现Nadaraya-Watson Envelope多波段线的修改方案
核心是为不同的mult参数分配独立的计算变量,避免逻辑冲突,以下是修改后的完整代码:
//@version=5 indicator("Nadaraya-Watson Envelope (Multi-Band)", overlay=true) // 基础参数设置 length = input.int(20, title="Length") mult1 = input.float(2.0, title="Multiplier 1") mult2 = input.float(3.0, title="Multiplier 2") src = input(close, title="Source") // Nadaraya-Watson核回归计算 f_nw(_src, _length) => sum_weights = 0.0 sum_values = 0.0 for i in 0 to _length - 1 weight = exp(-pow(i, 2) / (2 * pow(_length / 4, 2))) sum_weights += weight sum_values += _src[i] * weight sum_values / sum_weights nw = f_nw(src, length) // 计算标准差 f_std(_src, _length, _nw) => sum_weights = 0.0 sum_sq_dev = 0.0 for i in 0 to _length - 1 weight = exp(-pow(i, 2) / (2 * pow(_length / 4, 2))) sum_weights += weight sum_sq_dev += pow(_src[i] - _nw, 2) * weight sqrt(sum_sq_dev / sum_weights) nw_std = f_std(src, length, nw) // 分别计算两个mult对应的上下轨 nwe_up1 = nw + mult1 * nw_std nwe_down1 = nw - mult1 * nw_std nwe_up2 = nw + mult2 * nw_std nwe_down2 = nw - mult2 * nw_std // 绘制线条 plot(nw, color=color.blue, title="Nadaraya-Watson") plot(nwe_up1, color=color.green, title="Upper Band 1 (x2)") plot(nwe_down1, color=color.green, title="Lower Band 1 (x2)") plot(nwe_up2, color=color.red, title="Upper Band 2 (x3)") plot(nwe_down2, color=color.red, title="Lower Band 2 (x3)")
关键修改说明
- 新增
mult1和mult2两个独立参数输入,避免参数混淆 - 为每个mult参数单独计算上下轨变量(
nwe_up1/nwe_down1、nwe_up2/nwe_down2),防止变量覆盖导致的逻辑错误 - 绘图时为每个波段指定不同颜色和名称,方便区分
内容的提问来源于stack exchange,提问作者Eserxm
相关产品推荐
相关产品推荐

