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

Pine Script中else if报语法错误:mismatched input 'if'

Pine Script "mismatched input 'if'" 报错原因与解决方法

问题原因

核心错误出在if块内的plotchar调用语法完全不符合Pine Script规范,导致编译器无法正确识别if代码块的结束位置,进而对后续else if语句产生语法解析错误:

  • plotchar函数的第一个参数要求是布尔值或数值表达式(用于控制是否绘制标记),你直接传入字符串且未使用正确参数结构,破坏了代码的语法结构。
  • 编译器因if块内的语法错误,无法正常解析后续的else if分支,从而抛出“mismatched input 'if'”错误。

解决方法

由于你的需求是显示杠杆建议文本,plotchar不适合展示长文本,推荐使用label.new函数实现。以下是修正后的完整代码:

//@version=5
strategy("RSI 策略", overlay=true)
stopLoss = input.float(0.02, "止损比例")
takeProfit = input.float(0.05, "止盈比例")
rsi = ta.rsi(close, 14)

if (rsi < 30)
    strategy.entry("RSI 多单", strategy.long, stop=strategy.price * (1 - stopLoss), limit=strategy.price * (1 + takeProfit))
    // 用label.new显示杠杆建议文本
    label.new(bar_index, low, "低杠杆建议:2x/3x 控制风险", color=color.green, textcolor=color.white, style=label.style_label_up)
else if (rsi > 70)
    strategy.entry("RSI 空单", strategy.short, stop=strategy.price * (1 + stopLoss), limit=strategy.price * (1 - takeProfit))
    label.new(bar_index, high, "高杠杆建议:10x/20x 放大收益", color=color.red, textcolor=color.white, style=label.style_label_down)

如果一定要使用plotchar(仅适合绘制简单标记),需修正参数结构:

//@version=5
strategy("RSI 策略", overlay=true)
stopLoss = input.float(0.02, "止损比例")
takeProfit = input.float(0.05, "止盈比例")
rsi = ta.rsi(close, 14)

if (rsi < 30)
    strategy.entry("RSI 多单", strategy.long, stop=strategy.price * (1 - stopLoss), limit=strategy.price * (1 + takeProfit))
    // 正确的plotchar用法:第一个参数为触发条件,通过命名参数指定标题和样式
    plotchar(rsi < 30, title="杠杆提示", char="🟢", location=location.belowbar, color=color.green)
else if (rsi > 70)
    strategy.entry("RSI 空单", strategy.short, stop=strategy.price * (1 + stopLoss), limit=strategy.price * (1 - takeProfit))
    plotchar(rsi > 70, title="杠杆提示", char="🔴", location=location.abovebar, color=color.red)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:55:28