当我首先检查大小时,Pinescript 数组说索引超出范围?

问题描述 投票:0回答:1

我正在检查数组大小是否是所需的最小值,但它显示此错误:

学习错误: 在“array.get()”函数中。索引 1 超出范围,数组大小为 1。

这是我参考的代码:

if  confirmedTriangle and array.size(triangle_price)>4  and array.size(triangle_index)>4
    for i = 0 to 3
        //Slope
        xIndexDis   = array.get(triangle_index, 0) - array.get(triangle_index, 4)// : na
        yPriceDis   = array.get(triangle_price, 0) - array.get(triangle_price, 4)// : na
        xIndexDis2   = array.get(triangle_index, 3) - array.get(triangle_index, 1)// : na
        yPriceDis2   = array.get(triangle_price, 3) - array.get(triangle_price, 1)// : na
        
        m = yPriceDis / xIndexDis       //Gradient for bottom line
        m2 = yPriceDis2 / xIndexDis2    // Gradient for top line

        x1 = array.get(triangle_index, i)-testLength
        y1 = array.get(triangle_price, i)
        x2 = array.get(triangle_index, i+1)-testLength
        y2 = array.get(triangle_price, i+1)
        array.push(tri_array, line.new(x1,y1,x2,y2, color=color.white))
        
        xa1 = array.get(triangle_index,4)
        xa2 = array.get(triangle_index,0)
        xb1 = array.get(triangle_index,3)
        xb2 = array.get(triangle_index,1)
        
        ya1 = array.get(triangle_price,4)
        ya2 = array.get(triangle_price,0)
        yb1 = array.get(triangle_price,3)
        yb2 = array.get(triangle_price,1)
        
        label.new(bar_index, high+atr, text="Xa1 = " + str.tostring(xa1) + " / Ya1 = " + str.tostring(ya1) + "\n Xa2 = " + str.tostring(xa2) + " / Ya2 = " + str.tostring(ya2) + "\nXb1 = " + str.tostring(xb1) + " / Yb1 = " + str.tostring(yb1) + "\n Xb2 = " + str.tostring(xb2) + " / Yb2 = " + str.tostring(yb2))

我在某些时间范围内没有收到任何错误,但大多数时间范围确实出现了相同的错误。

pine-script pine-script-v5
1个回答
0
投票

我将

array.size(triangle_price)
分配给一个变量,例如
arraySize = array.size(triangle_price)

confirmedTriangle
中,我正在检查 arraySize > 4,但自检查以来数组大小已更改。

一个简单的修复方法是删除

arraySize = array.size(triangle_price)
并在每次检查中使用
array.size(triangle_price)

© www.soinside.com 2019 - 2024. All rights reserved.