Pine Script v5代码报错:'prev'引用语法错误求助
Pine Script v5 错误解决方案:Extraneous input 'prev'
错误原因
你遇到的语法错误本质是错误使用普通变量prev延续指标历史值,Pine Script中普通变量不会跨K线保留值,且当前逻辑下prev并非你需要的「前一根K线的ts值」,重复计算的代码也加剧了语法解析的混淆。
修正后的代码
//@version=5 strategy("My Strategy", overlay=true) // 输入参数(可根据需求调整) multiplier = input.float(1.0, "ATR Multiplier") atrPeriod = input.int(14, "ATR Calculation Period") hhvPeriod = input.int(20, "HHV Lookback Period") // 提前计算重复使用的HHV值,避免冗余计算 hhvValue = ta.highest(high - multiplier * ta.atr(atrPeriod), hhvPeriod) barsSinceCondition = ta.barssince(close > hhvValue and close > close[1]) // 使用var定义持久化变量,跨K线保留值 var float ts = na ts := if ta.cum(1) < 16 close else if close > hhvValue and close > close[1] hhvValue else ts[1] // 引用前一根K线的ts值,实现延续效果
关键修正点
- 用
var float ts = na定义持久化变量,确保ts的值跨K线保留,不会每根K线重新初始化。 - 用
ts :=进行动态赋值,这是Pine Script v5中更新变量值的标准写法。 else分支替换为ts[1],获取前一根K线的ts值,这才是你需要的「延续前值」逻辑,替代原错误的prev。- 提取重复计算的
hhvValue,简化代码同时提升运行效率。
内容的提问来源于stack exchange,提问作者Mooby99
相关产品推荐
相关产品推荐

