Pine Script循环数组推送问题:如何让i=2、i=3结果对应数组索引0、1
问题解决:Pine Script 循环独立计数存入数组
你的问题出在var counter = 0是全局持久化变量,循环迭代时会持续累加,导致两次循环的计数是连续的,而不是各自独立统计。要实现每个i(2和3)单独判断并计数,需要把计数变量放到循环内部,每次循环都重置为0。
修改后的代码
myArray = array.new_float(0) for i = 2 to 3 // 每次循环初始化局部计数变量,避免跨循环累加 counter = 0 if close > ta.sma(close, i) counter += 1 array.push(myArray, counter) if barstate.islast label.new(bar_index, 2, str.tostring(array.join(myArray, " - "))) label.new(bar_index, 1, "array size: " + str.tostring(array.size(myArray)))
关键改动说明
- 移除了
var声明的全局counter,改为在循环内部初始化counter = 0,这样每次循环i的计数都是独立的,不会和上一次循环的结果累加。 - 循环i=2时,单独判断
close > ta.sma(close,2)并计数,结果存入数组索引0;i=3时重新初始化counter,判断后存入索引1,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Shuman Rotula
相关产品推荐
相关产品推荐

