Pine Script for循环首行提示'int'输入语法错误咨询
Pine Script v5 for循环行报int位置语法错误排查
问题表现
给出的最小可复现代码保存时抛出错误:
line 8: Syntax error at input 'int'.
报错定位指向第8行for循环的初始化位置,但for循环本身的for int i = 0 to xxx写法完全符合Pine Script v5语法规范,错误是编译器解析断裂后出现的定位偏移,实际问题出在循环内部的语句上。
具体错误点
- 核心语法错误:循环内
strategy.exit()调用语句末尾缺失1个右括号,导致整段代码的语法块边界无法被编译器正确识别,解析到for循环位置时直接抛出语法错误。 - 潜在运行错误:
- 两个数组变量
overSRLs、removeFromOver直接赋值na初始化不符合Pine Script数组语法规则,必须使用对应类型的数组初始化方法创建空数组,否则后续调用array.size()、array.push()时会触发运行错误。 - 代码中引用的
ATR5变量未提前定义,运行时会报未定义变量错误,需补充ATR指标的计算逻辑。
- 两个数组变量
修正后的代码片段
//@version=5 strategy("Elie's strategy", overlay=true, margin_long=100, margin_short=100) // 补充缺失的ATR指标计算 ATR5 = ta.atr(5) // 修正浮点数组初始化方式 var float[] overSRLs = array.new_float() var IDCounter = 0 // 修正整数数组初始化方式 int[] removeFromOver = array.new_int() // for循环语法本身无错误 for int i = 0 to (array.size(overSRLs) - 1) // line 8 if low < array.get(overSRLs, i) orderID = str.tostring(IDCounter) exitID = str.tostring(IDCounter + 1) IDCounter += 2 strategy.order(orderID, strategy.long, 1) // 补上缺失的最外层右括号 strategy.exit(exitID, from_entry=orderID, stop = (array.get(overSRLs, i) * (1 - ATR5[1])), limit = (array.get(overSRLs, i) * (1 + ATR5[1]))) array.push(removeFromOver, i)
内容的提问来源于stack exchange,提问作者Tuor
相关产品推荐
相关产品推荐

