You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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语法规范,错误是编译器解析断裂后出现的定位偏移,实际问题出在循环内部的语句上。

具体错误点

  1. 核心语法错误:循环内strategy.exit()调用语句末尾缺失1个右括号,导致整段代码的语法块边界无法被编译器正确识别,解析到for循环位置时直接抛出语法错误。
  2. 潜在运行错误:
    • 两个数组变量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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:03:40