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

Pine Script实现每日指定时段绘制矩形框 支持多历史日显示

TradingView 多日指定时段矩形绘制实现方案

原有代码问题说明

  • 边界值仅做单变量存储,新交易日的2点、4点开盘价会覆盖历史值,无法给历史日矩形提供取值
  • 矩形绘制逻辑仅在最后一根K线触发,只会生成1个矩形,无法批量生成历史日的对应图形
  • 没有做历史天数的配置控制,也没有按日匹配边界值和显示时段的对应关系

可直接使用的完整代码

//@version=5
indicator("指定时段矩形", overlay=true, shorttitle="TimeBox")
// 可配置参数
show_days = input.int(10, title="展示过往天数", minval=1, maxval=100)
box_color = color.new(color.blue, 80)
// 时间点判断
is_2am = hour == 2 and minute == 0
is_4am = hour == 4 and minute == 0
is_9am = hour == 9 and minute == 0
is_12pm = hour == 12 and minute == 0
is_new_day = ta.change(time("D"))
// 按日存储边界值
var float daily_op1 = na
var float daily_op2 = na
var array<box> box_list = array.new_box()
// 新交易日重置当日边界值
if is_new_day
    daily_op1 := na
    daily_op2 := na
// 记录当日对应整点K线开盘价
if is_2am
    daily_op1 := open
if is_4am
    daily_op2 := open
// 到9点时创建当日矩形
if is_9am and not na(daily_op1) and not na(daily_op2)
    new_box = box.new(bar_index, math.max(daily_op1, daily_op2), bar_index, math.min(daily_op1, daily_op2), bgcolor=box_color, border_width=0)
    array.unshift(box_list, new_box)
    // 超出配置天数的旧矩形直接删除
    if array.size(box_list) > show_days
        old_box = array.pop(box_list)
        box.delete(old_box)
// 当日9点-12点时段内,更新最新矩形的右边界到当前K线
if hour >=9 and hour <12 and array.size(box_list) >0
    current_box = array.get(box_list, 0)
    box.set_right(current_box, bar_index)

核心逻辑说明

  • 所有参数支持在指标设置面板直接调整,不需要改代码:可以自行修改展示天数、矩形颜色,也可以根据需求调整边界取值时间、矩形显示时段
  • 每个交易日独立存储当日2点、4点的开盘价,不会出现历史值被覆盖的问题
  • 矩形在每日9点第一根K线自动创建,随着行情推进自动延伸右边界到12点整点,自动清理超过设置天数的旧矩形,不会出现图形冗余
  • 自动取两个边界值的较大值作为矩形上沿、较小值作为下沿,避免2点开仓价低于4点时矩形上下颠倒

如果需要调整矩形显示时段,直接修改is_9am/is_12pm的判断条件、以及时段更新逻辑里的hour >=9 and hour <12数值即可;如果要修改上下边界的取值时间,调整is_2am/is_4am的小时、分钟判断值就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:18:44