TradingView指标开发:如何仅在前一日绘制指定交易时段
解决Pine Script仅绘制前一日特定交易时段的问题
要实现仅显示前一日的0400-0430时段箱体,核心是在原有时段判断的基础上,增加「当前K线日期为昨日」的条件判断,具体修改如下:
关键逻辑说明
- 基于图表时区,获取当前实时日期的年/月/日
- 计算昨日的年/月/日(通过实时时间戳减去一天的毫秒数)
- 判断当前K线的日期是否匹配昨日日期
- 仅当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
相关产品推荐
相关产品推荐

