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

如何在Pine Script中为Box对象的各边设置不同颜色?

为Pine Script中的Box对象设置不同边框颜色

嗨,我来帮你解决这个问题~首先得明确:Pine Script的原生box.new()函数并不支持单独为四条边框设置不同颜色,它只能统一设置整个边框的颜色。不过我们可以用个变通方法——用四个独立的line对象来模拟Box的四条边,这样就能给每条边设置不同的颜色啦!

以下是修改后的完整代码,完美实现你的需求:

//@version=4
study("Custom Border Color Box", overlay=true)

// 定义Box的四个顶点坐标(和你原代码参数一致)
left_bar = bar_index[100]
top_price = highest(high, 50)
right_bar = bar_index[10]
bottom_price = lowest(low, 50)

// 绘制四条独立的边,每条边设置不同颜色
// 上边(红色)
line_top = line.new(left_bar, top_price, right_bar, top_price, color=color.red, width=1, style=line.style_solid)
// 下边(绿色)
line_bottom = line.new(left_bar, bottom_price, right_bar, bottom_price, color=color.green, width=1, style=line.style_solid)
// 左边(蓝色)
line_left = line.new(left_bar, top_price, left_bar, bottom_price, color=color.blue, width=1, style=line.style_solid)
// 右边(黄色)
line_right = line.new(right_bar, top_price, right_bar, bottom_price, color=color.yellow, width=1, style=line.style_solid)

// 绘制背景填充(模拟原box的bgcolor效果,边框设为完全透明避免冲突)
bg_box = box.new(left_bar, top_price, right_bar, bottom_price, border_color=color.new(color.white, 100), bgcolor=color.new(color.purple, 90))

// 删除上一根K线对应的元素,避免图表堆积
line.delete(line_top[1])
line.delete(line_bottom[1])
line.delete(line_left[1])
line.delete(line_right[1])
box.delete(bg_box[1])

简单说明下代码逻辑:

  • 先复用了你原代码里的Box边界坐标,保证范围和你原本的需求一致
  • 用四个line.new()分别绘制四条边,每条边可以单独指定颜色、宽度和样式
  • 额外加了一个无框的box来实现背景填充效果,如果不需要背景,直接删掉bg_box相关代码就行
  • 最后保留了删除历史元素的逻辑,防止图表上出现大量重复的线条和框体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:17:40