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

Pine Script生成的Box/Label过饱和(疑似重复堆叠)问题求助

解决方案

核心问题原因

你的代码在Pine Script的每根K线周期都会执行一遍所有box.new()和label.new()语句,导致同一时间戳的图形被重复创建成百上千次。堆叠后透明度叠加(90%透明的盒子叠几十层就几乎完全不透明),标签也因重叠变得模糊。


方法1:仅在最后一根K线创建图形(最简便)

利用barstate.islast条件,让图形只在当前图表的最后一根K线时创建一次,彻底避免重复堆叠。修改后的代码如下:

//@version=5
indicator("Session Boxes", overlay=true)

TKO = #e91e63
TKObg = color.new(#e91e63, 90)
LDN = #2157f3
LDNbg = color.new(#2157f3, 90)
NYC = #ff5d00
NYCbg = color.new(#ff5d00, 90)

// 仅在最后一根K线创建所有图形
if barstate.islast
    box.new(1699578000000, 96.379, 1699599600000, 96.154, bgcolor=TKObg, border_color=TKO, xloc=xloc.bar_time, border_style=line.style_dotted)
    label.new(1699588800000, 96.379, 'Tokyo', textcolor=TKO, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)
    box.new(1699599600000, 96.358, 1699621200000, 96.161, bgcolor=LDNbg, border_color=LDN, xloc=xloc.bar_time, border_style=line.style_dotted)
    label.new(1699610400000, 96.358, 'London', textcolor=LDN, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)
    box.new(1699621200000, 96.327, 1699635600000, 96.037, bgcolor=NYCbg, border_color=NYC, xloc=xloc.bar_time, border_style=line.style_dotted)
    label.new(1699628400000, 96.327, 'New York', textcolor=NYC, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)
    box.new(1699635600000, 96.418, 1699653300000, 96.2, bgcolor=NYCbg, border_color=NYC, xloc=xloc.bar_time, border_style=line.style_dotted)
    label.new(1699644450000, 96.418, 'New York', textcolor=NYC, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)

方法2:用变量存储图形对象,避免重复初始化

如果需要图形在所有K线都保持显示(而非仅最后一根),可以用var关键字声明图形变量,确保每个图形只被创建一次:

//@version=5
indicator("Session Boxes", overlay=true)

TKO = #e91e63
TKObg = color.new(#e91e63, 90)
LDN = #2157f3
LDNbg = color.new(#2157f3, 90)
NYC = #ff5d00
NYCbg = color.new(#ff5d00, 90)

// 用var声明,仅初始化一次
var box tkoBox = box.new(1699578000000, 96.379, 1699599600000, 96.154, bgcolor=TKObg, border_color=TKO, xloc=xloc.bar_time, border_style=line.style_dotted)
var label tkoLabel = label.new(1699588800000, 96.379, 'Tokyo', textcolor=TKO, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)

var box ldnBox = box.new(1699599600000, 96.358, 1699621200000, 96.161, bgcolor=LDNbg, border_color=LDN, xloc=xloc.bar_time, border_style=line.style_dotted)
var label ldnLabel = label.new(1699610400000, 96.358, 'London', textcolor=LDN, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)

var box nycBox1 = box.new(1699621200000, 96.327, 1699635600000, 96.037, bgcolor=NYCbg, border_color=NYC, xloc=xloc.bar_time, border_style=line.style_dotted)
var label nycLabel1 = label.new(1699628400000, 96.327, 'New York', textcolor=NYC, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)

var box nycBox2 = box.new(1699635600000, 96.418, 1699653300000, 96.2, bgcolor=NYCbg, border_color=NYC, xloc=xloc.bar_time, border_style=line.style_dotted)
var label nycLabel2 = label.new(1699644450000, 96.418, 'New York', textcolor=NYC, color=color.new(color.white,100), xloc=xloc.bar_time, size=size.tiny, style=label.style_label_down)

注意事项

  1. 两种方法都能解决堆叠问题,方法1更适合静态预生成的图形,代码改动最小;方法2适合需要后续动态修改图形属性的场景。
  2. 确保Python生成脚本输出的代码包含//@version=5声明,避免版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:47:19