PineScript v6绘制矩形覆盖全图表高度问题求助
London Session Highlight 指标问题排查与修复
核心问题原因
矩形覆盖全图表高度、缩放时异常变化,主要是两个常见错误导致:
- 矩形y轴参数误用:大概率是绘制时传入了全局图表的高低极值(比如
ta.highest(9999)),而非目标K线的high[1]/low[1];或者xloc参数设置错误,导致缩放时坐标偏移。 - 时区触发逻辑偏差:虽然你设置了UTC+2时区,但
time函数的时区参数未正确指定,导致触发绘制的K线并非预期时段,不过你提到日志显示高低值正确,这条可能性稍低,但仍需验证。
修复方案与代码示例
1. 修正时区触发条件
Pine Script v6中,要基于图表时区(UTC+2)判断触发时间,明确指定time函数的时区参数:
//@version=6 indicator("London Session Highlight", overlay=true) // 触发条件:UTC+2时区的9:15(对应UTC 8:15)的M15 K线 isTrigger = time(timeframe.period, "0915-0915", "GMT+2") != na
2. 正确绘制矩形
确保矩形的top/bottom严格使用前一根K线的高低值,且用xloc.bar_index固定K线位置,避免缩放偏移:
if isTrigger prev_high = high[1] prev_low = low[1] // 绘制覆盖前一根M15 K线的矩形 box.new( left=bar_index[1], top=prev_high, right=bar_index, bottom=prev_low, color=color.new(color.orange, 85), border_color=color.orange, xloc=xloc.bar_index // 按K线索引定位,缩放不位移 )
3. 关键排查点
- 绝对不要在
box.new的top/bottom中使用ta.highest/ta.lowest这类全局极值函数,除非你需要覆盖全图表高度。 - 用标记验证触发时机:添加
plotshape(isTrigger, style=shape.circle, location=location.abovebar, color=color.green),确认触发K线确实是UTC+2的9:15那根。 - 确认图表周期为M15,否则
high[1]对应的不是你要的15分钟蜡烛。
验证步骤
- 保留日志输出:在触发条件内加入
if isTrigger => label.new(bar_index, high, str.tostring(prev_high) + " | " + str.tostring(prev_low), color=color.white),实时确认高低值是否正确。 - 缩放图表:如果用了
xloc.bar_index,矩形会固定在对应K线位置,不会随缩放改变大小或位置。
内容的提问来源于stack exchange,提问作者Matt W
相关产品推荐
相关产品推荐

