pinescript 从每日时间框架图表中获取每周收盘价系列

问题描述 投票:0回答:2

我正在尝试从交易视图中的日图表中提取每周收盘价。

根据时间范围变化(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)



上面的代码中的帮助是值得赞赏的,其中注释是大写的。 谢谢

pine-script series pine-script-v5 tradingview-api algorithmic-trading
2个回答
0
投票

您的方法对于这样的任务来说太复杂了 - 保留每周收盘价 - 因此我建议您选择一个不同的方法并忘记数组。
要使每周接近任何时间范围内的绘图,最简单的方法是:

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")

最终一切都取决于您的需求。


0
投票

将每周收盘价放入数组中

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)
© www.soinside.com 2019 - 2024. All rights reserved.