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

如何基于起始与结束时间戳绘制含区间高低点的TradingView箱体?

基于时间戳实现Pine Script箱体绘制方案

以下是直接基于时间戳指定区间的箱体绘制代码,替代固定K线数的实现,彻底解决切换时间框架时的适配问题:

//@version=5
indicator('时间戳箱体', overlay=true)

// 输入起始与结束时间戳
start_time = input.time(timestamp("2024-01-01 00:00"), title="起始时间")
end_time = input.time(timestamp("2024-02-01 00:00"), title="结束时间")
show_box = input.bool(true, title="显示箱体")

// 定位区间的起始和结束K线索引
start_bar = ta.valuewhen(time >= start_time, bar_index, 0)
end_bar = ta.valuewhen(time >= end_time, bar_index, 0)

// 计算区间内的最高最低价
range_high = ta.highest(high, ta.barssince(time >= start_time) + 1)
range_low = ta.lowest(low, ta.barssince(time >= start_time) + 1)

// 绘制箱体(仅在历史K线完成后执行)
if barstate.islast
    if show_box
        // 绘制四条边组成箱体
        bot_line = line.new(start_bar, range_low, end_bar, range_low, color=color.red, width=2)
        top_line = line.new(start_bar, range_high, end_bar, range_high, color=color.green, width=2)
        left_line = line.new(start_bar, range_high, start_bar, range_low, color=color.blue, width=2)
        right_line = line.new(end_bar, range_high, end_bar, range_low, color=color.blue, width=2)
        
        // 删除上一次绘制的旧箱体线条
        line.delete(bot_line[1])
        line.delete(top_line[1])
        line.delete(left_line[1])
        line.delete(right_line[1])

关键逻辑说明

  • 时间区间输入:用input.time让用户直接选择起始和结束时间,不管切换到哪个时间框架,区间都是固定的日历时间,无需调整参数
  • 区间K线定位:通过ta.valuewhen找到时间戳对应的K线索引,确保箱体的左右边界精准对应指定时间
  • 高低价计算:用ta.barssince获取从起始时间到当前的K线数量,再计算该范围内的最高最低价,确保只统计目标区间内的数据
  • 绘制优化:只在最后一根K线(barstate.islast)执行绘制,避免重复生成线条,同时删除上一次的旧线条,保持界面整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:05:06