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

TradingView指标开发:如何仅在前一日绘制指定交易时段

解决Pine Script仅绘制前一日特定交易时段的问题

要实现仅显示前一日的0400-0430时段箱体,核心是在原有时段判断的基础上,增加「当前K线日期为昨日」的条件判断,具体修改如下:

关键逻辑说明

  1. 基于图表时区,获取当前实时日期的年/月/日
  2. 计算昨日的年/月/日(通过实时时间戳减去一天的毫秒数)
  3. 判断当前K线的日期是否匹配昨日日期
  4. 仅当K线属于昨日且在目标时段内时,才触发绘制逻辑

修改后的完整代码

//@version=5
indicator("昨日特定时段箱体", overlay=true)

// 输入参数
my_session = input.session("0400-0430", "目标时段", group="设置")
bg_transp = input.int(90, "背景透明度", group="样式")
show_outline = input.bool(true, "显示边框", group="样式")
show_txt = input.bool(true, "显示标签", group="样式")
session_css = input.color(color.new(color.black, 0), "时段颜色", group="样式")

// 计算昨日日期(基于图表时区)
current_ts = timenow
yesterday_ts = current_ts - 86400000 // 减去一天的毫秒数(24*60*60*1000)
yesterday_year = year(yesterday_ts)
yesterday_month = month(yesterday_ts)
yesterday_day = dayofmonth(yesterday_ts)

// 判断当前K线是否属于昨日且在目标时段内
is_yesterday = year == yesterday_year and month == yesterday_month and dayofmonth == yesterday_day
is_my_session = is_yesterday and math.sign(nz(time("5", my_session)))

// 绘制时段箱体和标签的函数
get_range(session, session_name, session_css)=>
    var t = 0 
    var max = high
    var min = low
    var box bx = na
    var label lbl = na 
    
    if session > session[1]
        t := time
        max := high
        min := low

        bx := box.new(bar_index, max, bar_index, min
          , bgcolor = color.new(session_css, bg_transp)
          , border_color = show_outline ? session_css : na
          , border_style = line.style_dotted)

        if show_txt
            lbl := label.new(t, max, session_name
              , xloc = xloc.bar_time
              , textcolor = session_css
              , style = label.style_label_down
              , color = color.new(color.white, 100)
              , size = size.tiny)

    if session and session == session[1]
        max := math.max(high, max)
        min := math.min(low, min)

        box.set_top(bx, max)
        box.set_rightbottom(bx, bar_index, min)

        if show_txt
            label.set_xy(lbl, int(math.avg(t, time)), max)

// 调用函数绘制
get_range(is_my_session, "昨日目标时段", session_css)

代码修改点说明

  • 补充了原代码缺失的版本声明、输入参数(bg_transp、show_outline、show_txt)
  • 新增了昨日日期的计算逻辑,确保仅对昨日的K线进行判断
  • 修改is_my_session变量,同时满足「昨日日期」和「目标时段」两个条件
  • 修复了原代码中未定义的n变量,替换为bar_index

这样修改后,当今日是03/05/24时,图表只会显示02/05/24的0400-0430时段箱体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:53:16