使用 pine 脚本中的函数循环数组推送
Posted
技术标签:
【中文标题】使用 pine 脚本中的函数循环数组推送【英文标题】:Loop an array push with a function in pine script 【发布时间】: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 循环中正确实现数组推送?
【问题讨论】:
【参考方案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 解决了这个问题。以上是关于使用 pine 脚本中的函数循环数组推送的主要内容,如果未能解决你的问题,请参考以下文章