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

Pine Script全局数组无法跨Bar存储值问题求助

Pine Script全局数组无法保留值的问题分析与修复

你的问题出在**run()函数内用var声明了局部变量**,Pine Script里的var关键字会让变量只在第一个bar时初始化一次,后续bars不会重新赋值,直接沿用初始值,导致数组的更新无法被后续调用读取。

错误细节拆解:

  • var track = array.get(vars, TRACK):第一次运行时从数组取出0,之后再也不会执行array.get,track永远固定为0
  • var newTrack = track+1:同样只初始化一次,永远是0+1=1
  • array.set(vars, TRACK, newTrack):每次都把数组对应位置设为1,但下一次调用run()时,track还是用的初始的0,不会去读取数组里的最新值

修复后的代码:

strategy("Array Issue Fixed", overlay=true, margin_long=100, margin_short=100)
var vars = array.new_int(5)
var TRACK = 0

init() =>
     if (barstate.isfirst)
         array.set(vars, TRACK, 0)

run() =>
    track = array.get(vars, TRACK)  // 去掉var,每次调用都读取数组最新值
    label.new(bar_index, high, str.tostring(track))
    newTrack = track+1  // 去掉var,每次计算最新值
    array.set(vars, TRACK, newTrack)
    storedTrack = array.get(vars, TRACK)  // 去掉var,读取刚更新的数组值
    label.new(bar_index, low, str.tostring(storedTrack))

init()
run()

修复逻辑说明:

去掉run()内变量的var声明后,每次bar执行run()时,都会重新从数组读取当前的track值,计算加1后的新值再存回数组,这样数组的状态就能在不同bars之间持久化更新,标签显示的数值也会随着bars递增。

内容的提问来源于stack exchange,提问作者Sean Barnard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:31:13