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

PineScript数组越界问题求助:调用array.clear()触发Index out of bounds

问题分析与修复

错误原因清晰:调用array.clear(CCI1H)后数组大小变为0,后续代码未检查数组容量就直接用array.get()访问索引2,触发越界错误。

你的逻辑是积累3个CCI pivot高点,判断最后一个是否为三者最高。问题出在数组清空后重新积累时,还没攒够3个元素就去访问索引2、1、0。

修复后的代码

var CCI1H = array.new_float()  // 初始化为空数组,避免默认值干扰

if cci > 50 
    if (cciPeakPivotHigh > 100)
        array.push(CCI1H, cciPeakPivotHigh)
        // 仅保留最近3个元素,超过3个时移除最早的
        if array.size(CCI1H) > 3
            array.shift(CCI1H)
        
        // 只有数组元素满3个时,才执行判断和标签创建
        if array.size(CCI1H) == 3
            CCI1Hval1 = array.get(CCI1H, 2)  // 最早的元素
            CCI1Hval2 = array.get(CCI1H, 1)
            CCI1Hval3 = array.get(CCI1H, 0)  // 最新的元素
            if (CCI1Hval3 > CCI1Hval2 and CCI1Hval3 > CCI1Hval1)
                label.new(bar_index, na, "CCI1H End", yloc = yloc.abovebar, style = label.style_none, textcolor = color.white, size = size.normal)

else if cci < 50 
    array.clear(CCI1H) 

关键修复点

  • 初始数组改为空数组,避免默认0值干扰判断逻辑
  • 调整array.shift()触发时机:仅当数组元素超过3个时移除最早元素,确保数组能逐步积累到3个元素
  • 将数组元素获取、标签创建逻辑嵌套在array.size(CCI1H) == 3条件内,从根源避免越界访问

内容的提问来源于stack exchange,提问作者Turtle Herder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:54:54