在 pine 腳本中,我正在呼叫一個函式,該函式將前一個 bar 值與增量相加:
myFunction(myVar1) =>
var int myVar2 = 0
myVar2 := myVar1 nz(myVar2[1],1)
使用呼叫函式的回圈添加增量值,結果存盤在陣列中:
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]
uj5u.com熱心網友回復:
回答您的評論:您可以將當前陣列保存在另一個陣列中。這樣,您始終可以訪問前一根柱線的陣列值。
//@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]')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383761.html
上一篇:我正在嘗試制作一個javascript,它將總結0-100之間的每個數字,誰的最后一位數字包含用戶選擇的0-9數字
