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

Pine Script编写else if分支语句触发语法报错如何解决

Pine Script多分支SMA匹配逻辑语法错误修复

报错翻译

运行返回的错误Mismatched input 'if' expecting 'end of line without line continuation'中文含义为:输入的'if'语法不匹配,解析器期望遇到无续行标记的行尾。

错误触发点

  • 逻辑判断写法不符合Pine Script语法规则:and逻辑运算符连接的两个判断条件必须写全比较主体,代码中bar_index < 252 and >= 126的后半段省略了bar_index,属于非法写法。
  • 变量未提前声明:代码中用:=运算符对trend做重新赋值,但该变量没有提前初始化,Pine Script中所有使用:=赋值的变量必须先完成声明。
  • 存在版本兼容隐患:v5版本Pine Script中SMA函数归属ta命名空间,直接写sma()在部分环境下也会触发函数找不到的报错。

修正后完整代码

//@version=5
indicator("分周期SMA趋势", overlay=true)
trend_1 = ta.sma(close, 60)
trend_2 = ta.sma(close, 30)
trend_3 = ta.sma(close, 15)

// 提前声明趋势变量
float trend = na

if bar_index >= 252
    trend := trend_1
// 补全判断条件,也可简化为else if bar_index >= 126,因为上层分支已拦截>=252的情况
else if bar_index < 252 and bar_index >= 126
    trend := trend_2
else 
    trend := trend_3

// 绘图验证
plot(trend, color=color.new(color.red, 0), linewidth=2)

语法注意事项

  • Pine Script对缩进要求严格,if/else分支下的执行语句必须统一缩进4个空格或1个制表符,缩进混乱也会触发同类续行报错。
  • 逻辑运算符连接的所有判断段都必须是完整的二元表达式,不能省略比较的变量主体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:25:03