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

Pine Script循环迭代时独立存储计数器结果至数组的问题

问题解决:Pine Script v5中循环迭代的独立结果存储

你的代码核心问题在于全局持久化的var int counter = 0:var关键字会让变量保留跨bar的数值,且循环中每次迭代都会累加前一次的结果,导致数组最终存储的是两次判断的累加值,而非每次迭代的独立判断结果。

下面是两种修改方案,都能达成“存储每次迭代独立结果”的需求:

方案一:循环内初始化局部计数器

//@version=5
indicator("sma coun", overlay=false)

myArray = array.new_float(0)

for i = 200 to 201
    int counter = 0  // 每次循环重新初始化计数器,确保独立判断
    if close > ta.sma(close, i)
        counter := 1
    array.push(myArray, counter)

if barstate.islast
    label.new(bar_index,5, str.tostring(array.join(myArray, " - ")))
    label.new(bar_index, 2, "array size: " + str.tostring(array.size(myArray)))

方案二:直接存入判断结果(更简洁)

不需要额外计数器,直接用三元表达式将判断结果转为数值存入数组:

//@version=5
indicator("sma coun", overlay=false)

myArray = array.new_float(0)

for i = 200 to 201
    // 满足条件存1,否则存0,直接得到独立迭代结果
    array.push(myArray, close > ta.sma(close, i) ? 1 : 0)

if barstate.islast
    label.new(bar_index,5, str.tostring(array.join(myArray, " - ")))
    label.new(bar_index, 2, "array size: " + str.tostring(array.size(myArray)))

修改说明

  • 移除了全局的var counter,确保每次迭代的判断结果不受前一次迭代或历史bar数据的影响。
  • 两种方案都会让数组中分别存储i=200和i=201时的独立判断结果(满足条件为1,否则为0),符合你的预期。

内容的提问来源于stack exchange,提问作者Shuman Rotula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:10:28