簡體   English   中英

在 pine 腳本中使用循環時保存以前的條形值

[英]Save previous bar values when using a loop in pine script

在 pine 腳本中,我調用了一個 function ,它將前一個柱值與增量相加:

myFunction(myVar1) =>
    var int myVar2 = 0
    myVar2 := myVar1 + nz(myVar2[1],1)

使用調用 function 的循環添加增量值,並將結果存儲在數組中:

myArray = array.new_int(0)

var int myVar1 = 1
myVar1 := 1

while myVar1 <= 3
    array.push(myArray, myFunction(myVar1))
    myVar1 += 1

一個欄中的結果是預期的。 由於沒有前一個柱,前一個值被替換為 1 nz(myVar2[1],1)

plot(myArray.get(myArray, 0))
plot(myArray.get(myArray, 1))
plot(myArray.get(myArray, 2))

Result: [2, 3, 4]

但在第二個酒吧

Result: [5, 6, 7]
My expected result: [3, 5, 7]

由於它首先為第一個 bar運行循環,然后在第二個 bar中再次運行循環,因此它用於myVar2[1]在第一個 bar中運行最后一個循環時保存的最后一個值4

使用循環時如何正確存儲之前的柱值,以便達到預期的結果:

First bar: [2, 3, 4]
Second bar: [3, 5, 7]
Third bar: [4, 7, 10]

回答您的評論:您可以將當前數組保存在另一個數組中。 這樣,您始終可以訪問前一個柱的數組值。

//@version=5
indicator("My Script", overlay=false)

var int     myVar1    = na
var int[]   myArray   = array.new_int(3) // Current array
var int[]   prevArray = array.new_int(3) // Previous array

myFunction(myVar1) =>
    var int myVar2 = 0
    myVar2 := myVar1 + nz(myVar2[1],1)
    
myVar1 := 1

prevArray := array.copy(myArray) // Save current array
array.clear(myArray)             // Clear current array

while myVar1 <= 3
    array.push(myArray, myFunction(myVar1))
    myVar1 += 1

// Show previous array
plot(array.get(prevArray, 0), 'prevArray[0]')
plot(array.get(prevArray, 1), 'prevArray[1]')
plot(array.get(prevArray, 2), 'prevArray[2]')

// Show current array
plot(array.get(myArray, 0), 'myArray[0]')
plot(array.get(myArray, 1), 'myArray[1]')
plot(array.get(myArray, 2), 'myArray[2]')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM