Pine Script绘制Box时top/bottom参数失效,盒子上下拉满求助
问题原因与解决方法
你的问题核心是每根K线都会执行一次box.new(),创建大量重叠的Box,这些Box叠加后视觉上就会呈现出延伸到图表顶底的效果,并非top/bottom参数本身失效。
解决步骤:
- 用
var关键字声明Box变量,确保只初始化一次,避免重复创建 - 明确指定
top和bottom对应的是特定K线的高低值,而非每根K线实时的high/low
修正后的代码示例:
//@version=5 indicator("Fixed Box Example", overlay=true) // 仅在脚本加载时创建一次Box,使用当前K线的高低作为顶底 var this_box = box.new(left = bar_index - 1, top = high, right = bar_index + 50, bottom = low, border_color = na, border_width = 1, bgcolor = color.new(color.red, 70), extend = extend.none) // 可选:如果需要在特定条件更新Box(比如最新K线),可以用if语句控制 if barstate.islast box.set_top(this_box, high) box.set_bottom(this_box, low)
额外说明:
bar_index + 50指向未来50根K线的位置,在实时行情中这些K线未生成时,Box右侧会暂时延伸到当前图表末端,但top/bottom会保持你设置的数值- 如果需要基于历史特定K线创建Box,要锁定对应的
high/low值,比如结合ta.pivothigh()函数或指定索引的K线数据
内容的提问来源于stack exchange,提问作者BennyFX
相关产品推荐
相关产品推荐

