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

如何基于硬编码数组指定日期绘制高低点水平线?

解决Pine Script批量绘制指定日期高低点水平线的问题

你可以通过遍历硬编码的日期数组,结合line.new()逐个创建水平线来实现需求。核心思路是对每个目标日期定位对应的K线,提取该K线的高低点后,调用line.new()绘制横跨指定范围的水平线。

完整代码示例

//@version=5
indicator("指定日期高低点水平线", overlay=true)

// 硬编码需要标记的日期数组(格式:年-月-日)
target_dates = array.new_timestamp(
    timestamp("2024-01-02"),
    timestamp("2024-01-15"),
    timestamp("2024-02-01")
)

// 遍历日期数组,为每个日期绘制高低点水平线+垂直线
for i = 0 to array.size(target_dates) - 1
    current_date = array.get(target_dates, i)
    // 定位到当前日期对应的K线索引
    target_bar_idx = ta.barssince(time == current_date)
    // 仅当找到有效K线时绘制
    if target_bar_idx != na
        // 获取目标K线的高低点价格
        target_high = high[target_bar_idx]
        target_low = low[target_bar_idx]
        
        // 绘制高点水平线(可调整左右偏移量控制长度)
        line.new(
            x1=bar_index - 50, y1=target_high,
            x2=bar_index + 50, y2=target_high,
            color=color.new(color.green, 0),
            width=1,
            style=line.style_dashed
        )
        
        // 绘制低点水平线
        line.new(
            x1=bar_index - 50, y1=target_low,
            x2=bar_index + 50, y2=target_low,
            color=color.new(color.red, 0),
            width=1,
            style=line.style_dashed
        )
        
        // 绘制原有的垂直线(可选)
        line.new(
            x1=current_date, y1=low,
            x2=current_date, y2=high,
            color=color.blue,
            width=2
        )

关键细节说明

  • 日期定位:用ta.barssince(time == current_date)找到目标日期对应的K线索引,避免直接用time比较可能出现的无匹配问题。
  • 水平线长度:通过bar_index - 50和bar_index + 50控制水平线的左右范围,你可以根据需求调整这个偏移量(比如改成0和bar_index让线延伸到当前K线)。
  • 样式自定义:可以修改color、width、style参数,让线条符合你的视觉需求。

注意事项

  • 如果目标日期不在当前图表的时间范围内,target_bar_idx会返回na,此时不会绘制线条,避免报错。
  • 如果需要在图表缩放时自动适配水平线长度,可以把x1和x2改成ta.min(bar_index, ...)和ta.max(bar_index, ...),或者直接用time的极值。

内容的提问来源于stack exchange,提问作者amol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:32:45