我似乎无法将值存储在全局数组中。代码示例如下:
strategy("Array Issue", overlay=true, margin_long=100, margin_short=100)
var vars = array.new_int(5)
var TRACK = 0
init() =>
if (barstate.isfirst)
array.set(vars, TRACK, 0)
run() =>
var track = array.get(vars, TRACK)
label.new(bar_index, high, str.tostring(track))
var newTrack = track+1
array.set(vars, TRACK, newTrack)
var storedTrack = array.get(vars, TRACK)
label.new(bar_index, low, str.tostring(storedTrack))
init()
run()
"track"标签总是0,并且"storedTrack"Label总是1。那么这个数组。Set正在工作,但不能传递到下次调用run()
我做错了什么?
var
变量将只初始化一次,即使您在函数中拥有它。
那么,这里发生的是在第一个柱上track
,newTrack
和storedTrack
被初始化。但在接下来的处决中,这些电话将不会再被调用。因此,它们的值永远不会被更新。
直接删除var
关键字。
在这种情况下,只更新数组的第一个元素。这是因为TRACK
总是0
。因此,array.set(vars, TRACK, newTrack)
将始终写入索引0。