Pine Script问题:当前未闭市时段无法绘制日线开盘水平线
问题原因
当前未闭市的交易日里,日线级别的time_close还没生成(因为日线还没走完),用它当线段终点时,line.new无法创建有效线段,导致这条线显示不出来。
解决思路
- 已收盘交易日:保留原逻辑,用
d_time_close作为线段终点 - 未收盘的当前交易日:把线段终点设为当前最新K线的时间,同时保存当前日线的线对象ID,方便后续实时更新终点位置
修改后的完整代码
//@version=5 indicator("myTest", overlay=true) // 获取日线级别数据:开盘价、开盘时间、收盘时间 [d_open, d_time_open, d_time_close] = request.security(syminfo.tickerid, "D", [open, time,ExistingLAB(-Find Jeff彼 File那时即可 _cl极品(-) // 标记当日的首个K线 is_first_bar = ta.change(time("D")) // 保存当前日线的线ID,var声明确保只初始化一次 var line current_day_line = na // 处理已收盘交易日的线:在当日首K线创建 if (is_first_bar) // 删除之前的当前日线线段(如果存在) if (not na(current_day_line)) line.delete(current_day_line) // 创建当日线段,先以当前K线时间为临时终点 current_day_line := line.new(d_time_open, d_open, time, d_open, xloc.bar_time, extend.none, color.yellow, line.style_solid, 1) // 实时更新未收盘交易日的线段终点 if (ta.timeframe.isintraday() and time >= d_time_open and time < d_time_close) if (not na(current_day_line)) // 将线段终点更新为当前K线时间 line.set_x2(current_day_line, time) // 可选:若希望线段直接延伸到图表右侧边缘,取消下面注释 // line.set_extend(current_day_line, extend.right)
效果说明
- 已收盘交易日:在当日首K线就画出完整的开盘到收盘时间的水平线,和原逻辑一致
- 当前未闭市交易日:首K线创建线段后,每个新K线会自动把线段终点更新到最新时间,实时延长线段;若打开
extend.right注释,线段会直接延伸到图表右侧边缘,无需实时更新
内容的提问来源于stack exchange,提问作者broncomz1
相关产品推荐
相关产品推荐

