You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pine Script中获取series[float]数值并绘制周度高低点水平线

解决方案

核心问题说明

你当前代码的问题主要有两点:

  1. 仅提取了上一周的高低点数据,没有覆盖过去12周的时间范围
  2. 未设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 12:00:03