Pine Script交易脚本报错:Mismatched input 'if' expecting 'end of line...'
问题诊断与修复
你这段Pine Script代码的报错原因很明确:
- 最后一个分支的语法错误:
else后面不能直接跟条件判断,必须用else if来定义新的条件分支 - 另外你写的
crossunder(CrossToPlotD, CrossToPlotD)逻辑完全无效——同一个变量不可能和自身发生下穿,这明显是笔误,应该是想判断CrossToPlotD下穿CrossToPlotN
修复后的代码如下:
if ((CrossToPlotN > 40) and (CrossToPlotD < -40)) strategy.entry("Buy", strategy.long) else if ((CrossToPlotN < -40) and (CrossToPlotD > 40)) strategy.entry("Sell", strategy.short) else if (crossunder(CrossToPlotN, CrossToPlotD)) strategy.close("CloseBuy", strategy.long) else if (crossunder(CrossToPlotD, CrossToPlotN)) strategy.close("CloseShort", strategy.short)
补充提示
- Pine Script的条件分支规则:
if开头,后续分支必须用else if,else只能作为没有条件的兜底分支 - 使用
crossunder/crossover时注意参数顺序,crossunder(a, b)指的是a从上方下穿b,别搞反变量位置
内容的提问来源于stack exchange,提问作者Sandrino
相关产品推荐
相关产品推荐

