【问题标题】:Loop an array push with a function in pine script使用 pine 脚本中的函数循环数组推送
【发布时间】:2022-01-15 17:32:04
【问题描述】:

我正在使用 pine 脚本,在 while 循环内部或外部执行数组推送时得到不同的结果。

假设我有一个返回两个值之和的简单函数:

myFunction(myValue1, myValue2) => 
    myValue3 = myValue1 + myValue2

还有一个存储函数结果的数组:

myArray = array.new_float(0)

如果我像这样应用多个数组推送:

array.push(myArray, myFunction(1, 0))
array.push(myArray, myFunction(1, 1))
array.push(myArray, myFunction(1, 2))
array.push(myArray, myFunction(1, 3))
array.push(myArray, myFunction(1, 4))

myArray 正确存储以下值:

myArray = [1, 2, 3, 4, 5]

然后我尝试了同样的方法,但将数组推送到了一个 while 循环中:

myInc = 0
while myInc <= 4
    array.push(myArray, myFunction(1, myInc))
    myInc += 1

并且它没有在数组中存储相同的值:

myArray = [1, 1, 1, 1, 1]

如何在 while 循环中正确实现数组推送?

【问题讨论】:

    标签: arrays function loops pine-script


    【解决方案1】:
    //@version=5
    indicator(title="TEST", overlay=true)
    
    myFunction(myValue1, myValue2) => myValue3 = myValue1 + myValue2
    
    myArray = array.new_float(0)
    
    // array.push(myArray, myFunction(1, 0))
    // array.push(myArray, myFunction(1, 1))
    // array.push(myArray, myFunction(1, 2))
    // array.push(myArray, myFunction(1, 3))
    // array.push(myArray, myFunction(1, 4))
    
    var int myInc = 0
    
    myInc := 0
    while myInc <= 4
        array.push(myArray, myFunction(1, myInc)) 
        myInc += 1
    
    if barstate.islast
        label.new(bar_index, high, array.join(myArray, ',') )
    

    【讨论】:

    • 谢谢!先声明“myInc”,然后将“:=”声明为 0 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多