在 pine 脚本中使用循环时保存以前的条形值

Posted

技术标签:

【中文标题】在 pine 脚本中使用循环时保存以前的条形值【英文标题】:Save previous bar values when using a loop in pine script 【发布时间】:2022-01-17 15:21:14 【问题描述】:

在 pine 脚本中,我正在调用一个函数,该函数将前一个柱的值与增量相加:

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]

因为它首先为 first bar 运行循环,然后在 second bar 中再次运行循环,它用于 myVar2[1]第一个栏中运行最后一个循环时保存的最后一个值4

在使用循环时如何正确存储之前的bar值,从而达到预期的效果:

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

【问题讨论】:

在第二个栏上,myVar2[1] 将包含 4 每次通过您的循环,因为它查看它在前一个栏(第一个栏)上的值,即 4 而不是改变。所以你得到的[5,6,7] 是合乎逻辑的。不确定您将如何实现预期结果,我也不了解该预期结果背后的逻辑。 为了简化上面的例子,而在 第二个栏 我怎样才能得到值 234第一个小节 【参考方案1】:

回答your comment:您可以将当前数组保存在另一个数组中。这样,您始终可以访问前一个柱的数组值。

//@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]')

【讨论】:

以上是关于在 pine 脚本中使用循环时保存以前的条形值的主要内容,如果未能解决你的问题,请参考以下文章

在 pine 脚本中使用循环时更改元组值

TradingView Pine 脚本:在新入场前检查以前的策略。入场价格

Pine 脚本 - 当多个条件为真时输入位置

如何在 tradingview 上启动 pine 脚本?

如何在opencart的同一页面上两次使用相同脚本中的脚本?

我可以使用 pine 脚本的三元运算符来指定 plotshape() 中的 style 参数或 plotchar() 中的 char 参数吗?