如何在Pine Script中获取series[float]数值并绘制周度高低点水平线
解决方案
核心问题说明
你当前代码的问题主要有两点:
- 仅提取了上一周的高低点数据,没有覆盖过去12周的时间范围
- 未设置plot的水平绘制参数,所以在低于周线的时间周期上会输出阶梯状折线,而非固定价位的水平线
另外为了匹配美东时间每周日晚8点的周线时间节点,需要额外对齐脚本的时区设置。
可用实现代码
//@version=5 indicator("过去12周高低水平位", overlay=true, timezone="America/New_York") // 回溯周数参数,可自行调整 lookback_weeks = input.int(12, minval=1, title="回溯周数") // 获取周度高低点,关闭未来函数避免数据漂移 weekly_high = request.security(syminfo.tickerid, "W", high, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) weekly_low = request.security(syminfo.tickerid, "W", low, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) // 循环绘制过去N周的高低水平线 for i = 1 to lookback_weeks // 计算对应周的高低点值 h = weekly_high[i] l = weekly_low[i] // 绘制周高点水平线,红色 plot(h, title=str.tostring(i) + "周前高点", color=color.new(color.red, 0), trackprice=true, show_last=1, linewidth=1) // 绘制周低点水平线,绿色 plot(l, title=str.tostring(i) + "周前低点", color=color.new(color.green, 0), trackprice=true, show_last=1, linewidth=1)
参数说明
timezone="America/New_York":将脚本时区设置为美东时间,保证周线分割节点匹配你要求的每周日晚8点trackprice=true:开启后plot会将series值作为固定价位绘制水平线,而非随K线变化的折线lookahead=barmerge.lookahead_off:严格关闭未来函数,保证周线高低点数据不会漂移- 你可以调整
lookback_weeks的数值自定义回溯的周数范围
可选实现(水平线从对应周的起始位置开始绘制)
如果不需要线只显示在当前价格到右侧坐标轴的区间,而是需要从对应周的起始K线位置开始贯穿到当前,更接近手动绘制效果,可替换循环部分的代码:
for i = 1 to lookback_weeks // 获取对应周的起始时间 week_start_time = ta.valuewhen(ta.change(weekly_high), time, i) h = weekly_high[i] l = weekly_low[i] // 仅在对应周之后的K线显示线 plot(time >= week_start_time ? h : na, title=str.tostring(i) + "周前高点", color=color.new(color.red, 0), linewidth=1) plot(time >= week_start_time ? l : na, title=str.tostring(i) + "周前低点", color=color.new(color.green, 0), linewidth=1)
内容的提问来源于stack exchange,提问作者faskiat
相关产品推荐
相关产品推荐

