基于帕斯卡三角的加权平滑代码:行续接错误求助
解决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
相关产品推荐
相关产品推荐

