如何修复Pine Script中‘Expecting end of line without line continuation’错误
问题解决:Pine Script语法错误修复
错误原因
你遇到的'takeprofit' expecting end of line without line continuation错误,核心是if语句块的语法不规范:
- Pine Script要求if条件后的执行语句必须缩进(4个空格或Tab),你的
takeprofit=0.3没有缩进,解析器无法识别它属于if块的内容。 - 额外问题:你定义的
takeprofit变量没有被实际使用,且原代码的开仓逻辑(strategy.entry直接放在全局)会持续触发开仓,同时strategy.exit的设置和后续变量定义逻辑冲突。 - 未利用已定义的输入变量
emaFast/emaSlow,直接写死18/20,失去参数可配置性。
修正后的代码
//@version=5 strategy("ema 18/20", overlay=true) emaFast = input.int(defval=18, title="快线EMA周期") emaSlow = input.int(defval=20, title="慢线EMA周期") // 使用输入变量计算EMA均线 emaF = ta.ema(close, emaFast) emaS = ta.ema(close, emaSlow) longCondition = ta.crossover(emaF, emaS) // 仅当多头交叉信号触发时执行开仓+止盈设置 if (longCondition) strategy.entry("enter long", strategy.long) // 绑定开仓信号设置止盈,这里的0.3可根据需求调整为点数或百分比 strategy.exit("ema exit", "enter long", profit=0.3)
关键修改说明
- 版本声明:添加
//@version=5,使用当前主流的Pine Script v5版本,避免兼容问题。 - 缩进规范:将开仓和止盈逻辑放在if块内并缩进,符合Pine Script语法要求。
- 逻辑优化:仅在交叉信号触发时开仓,避免原代码持续开仓的错误;将止盈设置直接通过
strategy.exit绑定到开仓信号,替代无意义的变量定义。 - 参数复用:使用定义的
emaFast/emaSlow变量计算均线,支持通过图表设置面板调整周期。
内容的提问来源于stack exchange,提问作者marco
相关产品推荐
相关产品推荐

