我正在尝试从交易视图中的日图表中提取每周收盘价。
根据时间范围变化(W),我能够获得前一天的收盘价并将其存储到数组中。 足以获得 60 周收盘价。数组中的这60个价格值需要转换为系列(可以假设na超出60个值)。需要这些值的系列,以便可以将其他 pine 函数应用于新系列数据。
这里的问题是,将值数组转换为系列数据。 wkseries 变量仅获取“na”值,而不获取 closewk 数组中的元素。
//@version=5
indicator("WeeklyFromDaily",overlay = true)
//series of close prices. except last day of week all other days price are na
closew2 = timeframe.change("W") ? close[1] : na
//going back to 60 weeks(approax) and collecting weekly close into array
closewk = array.new_float()
if barstate.islast
for i = 0 to 60 * 5
if not na(closew2[i]) //dont need na values
array.push(closewk,closew2[i])
//print 3rd value in array on status line to debug array values
plot(array.size(closewk)>0? array.get(closewk,3): na, title='dataFromArray', display=display.status_line)
//THE BELOW LINE NEEDS FIX
//Convert array to series
wkseries = array.size(closewk)>0 and bar_index<62? array.get(closewk,bar_index) : na
//debug print on series values
plot(wkseries[1], title='dataFromSeries', display=display.status_line)
//Draw harizontal lines on last one weekly close price in daily chart
//debug print
line.new(bar_index, closew2[4],bar_index+10, closew2[4], style = line.style_dashed, color = color.black, extend = extend.both)
上面的代码中的帮助是值得赞赏的,其中注释是大写的。 谢谢
您的方法对于这样的任务来说太复杂了 - 保留每周收盘价 - 因此我建议您选择一个不同的方法并忘记数组。
要使每周接近任何时间范围内的绘图,最简单的方法是:
weeklyClose = request.security("", "1W", close, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_off)
plot(weeklyClose, "Weekly close")
这些线将为您持续提供最近每周的收盘价。
您可以根据您需要的数据来调整它。
同样,您也可以执行以下操作:
var weeklyClose = 0.0
if timeframe.change("1W")
weeklyClose := close[1]
plot(weeklyClose, "Weekly close")
最终一切都取决于您的需求。
将每周收盘价放入数组中
closew = timeframe.change("W") ? close[1] : na
var closewk = array.new_float()
if closew
array.push(closewk,closew)
这是棘手的部分。对于我的用例来说,将最后 60 周收盘价纳入一系列序列中就足够了。因此,计算开始从数组获取值并将其放入系列中所需的数组索引
var arridx = 0
var count = 0
if last_bar_index - bar_index == 60
arridx := array.size(closewk) - 49 // 49 = (60-60/5+1) //5 days/week
if last_bar_index - bar_index < 60
count := count + 1
plot(arridx+count, title='incremental array index for last 60 candles', display=display.status_line)
将数组值转换为系列
wkseries = array.size(closewk)>0 and (last_bar_index - bar_index) <= 60? array.get(closewk,arridx+count) : na
plot(wkseries, title='plot weekly data onto daily chart ', style=plot.style_line, display=display.all)