Pinescript第23行long_entry语法错误求助:if语句报错,?:正常
Pine Script v5 语法错误:
syntax error at input 'long_entry' 解决方法 错误原因
在Pine Script v5中,用=直接赋值的变量属于不可变常量,只能在声明时赋值一次,后续无法通过:=重新赋值。你用if语句尝试用long_entry := true修改常量,触发了语法错误;而三元运算符是在变量声明阶段直接完成条件赋值,属于合法的初始化操作,因此不会报错。
解决方案
将long_entry和short_entry声明为可变变量,有两种常用实现方式:
方式1:用var声明(保留跨K线状态)
如果需要变量在不同K线间保留之前的状态,使用var关键字声明:
//@version=5 indicator("Test 1", overlay = true) // Define the indicators ema = ta.ema(close, 200) atr14 = ta.atr(14) var bool long_entry = false // 声明为可变变量,保留跨bar状态 var bool short_entry = false // Define the conditions for consecutive open and close prices long_condition = (close[2] < open[2] and close[1] < open[1] and close > open[1]) and (close > open) or (close[3] < open[3] and close[2] < open[2] and close > open[2]) and (close > open) or (close[4] < open[4] and close[3] < open[3] and close > open[3]) and (close > open) or (close[5] < open[5] and close[4] < open[4] and close > open[4]) and (close > open) or (close[6] < open[6] and close[5] < open[5] and close > open[5]) and (close > open) short_condition = (close[2] > open[2] and close[1] > open[1] and close < open[1]) and (close > open) or (close[3] > open[3] and close[2] > open[2] and close < open[2]) and (close < open) or (close[4] > open[4] and close[3] > open[3] and close < open[3]) and (close < open) or (close[5] > open[5] and close[4] > open[4] and close < open[4]) and (close < open) or (close[6] > open[6] and close[5] > open[5] and close < open[5]) and (close < open) // Define the conditions for long and short positions if long_condition and close > ema and barstate.isconfirmed long_entry := true // 可正常修改可变变量 if short_condition and close < ema and barstate.isconfirmed short_entry := true // Define the stop loss long_stop = close - (atr14 * 2) short_stop = close + (atr14 * 2)
方式2:用:=直接初始化(无需跨K线保留)
如果不需要变量保留跨K线的值,每次K线都重新初始化,可直接用:=声明:
long_entry := false short_entry := false
这种方式下变量默认是可变的,后续用:=修改不会报错。
补充说明
- Pine Script v5中,
=用于声明不可变常量,:=用于给可变变量赋值(包括声明和修改) var关键字会让变量仅在第一个K线初始化,后续K线保留之前的值,适合需要记录状态的场景
内容的提问来源于stack exchange,提问作者Riv
相关产品推荐
相关产品推荐

