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

基于帕斯卡三角的加权平滑代码:行续接错误求助

解决Pine Script帕斯卡三角加权平滑代码的行续接错误

错误原因

原代码的问题出在链式三元表达式的格式上:最后一个三元分支的:后面插入了空行,导致Pine Script解析器无法识别行续接逻辑,触发Line Continuation error。同时链式三元需要连续的结构,不能随意插入空行中断解析。

解决方案1:修复三元表达式格式

直接去掉最后一个:与默认分支之间的空行,让链式结构保持连续:

//@version=6
indicator("Smooth1 with Series Input", overlay=false)

// 修正后的平滑函数
smooth1(P, _n, Smooth1_x) =>
    _n == 0 ? Smooth1_x :
    _n == 1 ? (Smooth1_x + P[1] * 2 + P[2]) * 0.25 :
    _n == 2 ? (Smooth1_x + P[1] * 3 + P[2] * 3 + P[3]) * 0.125 :
    _n == 3 ? (Smooth1_x + P[1] * 4 + P[2] * 6 + P[3] * 4 + P[4]) * 0.0625 :
    Smooth1_x  // 移除空行,保持链式结构连续

// 示例用法
sourceSeries = close
level = input.int(3, minval=0, maxval=3)
seed = nz(sourceSeries[1])

result = smooth1(sourceSeries, level, seed)
plot(result, title="Smoothed Series", color=color.orange)

解决方案2:改用Switch语句(更推荐)

Pine Script v6支持switch语法,结构更清晰,能彻底避免链式三元的格式陷阱:

//@version=6
indicator("Smooth1 with Series Input", overlay=false)

// 使用switch重写平滑函数
smooth1(P, _n, Smooth1_x) =>
    switch _n
        0 => Smooth1_x
        1 => (Smooth1_x + P[1] * 2 + P[2]) * 0.25
        2 => (Smooth1_x + P[1] * 3 + P[2] * 3 + P[3]) * 0.125
        3 => (Smooth1_x + P[1] * 4 + P[2] * 6 + P[3] * 4 + P[4]) * 0.0625
        => Smooth1_x  // 默认分支

// 示例用法
sourceSeries = close
level = input.int(3, minval=0, maxval=3)
seed = nz(sourceSeries[1])

result = smooth1(sourceSeries, level, seed)
plot(result, title="Smoothed Series", color=color.orange)

说明

  • 方案1通过修正格式让解析器正确识别行续接,快速解决错误;
  • 方案2用switch替代链式三元,代码可读性更强,后续维护也更方便,不会再出现类似格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:13:15