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

如何移除前一个/第n个前置标签?及label.new()无显示问题排查

问题1:如何移除前一个(或第n个前置)标签?
  • 移除前一个标签:在创建新标签前,调用label.delete()删除之前保存的标签实例即可。示例代码:
var label prevLabel = na
// 满足触发条件时,先删旧标签再建新标签
if (你的触发条件)
    label.delete(prevLabel)
    prevLabel := label.new(bar_index, high, text="新标签")
  • 移除第n个前置标签:用数组存储所有历史标签ID,当数组长度超过n时,删除最早加入的标签。比如要保留最近3个标签,删除更早的:
var array<label> labelHistory = array.new<label>()
if (你的触发条件)
    newLabel = label.new(bar_index, high, text="标签")
    array.push(labelHistory, newLabel)
    // 标签数量超过3时,移除最早的那个
    if array.size(labelHistory) > 3
        label.delete(array.shift(labelHistory))
问题2:标签完全不显示的排查与修复

你的代码里标签不显示,大概率是这些原因:

  1. RSI变量未定义:代码里没看到rsi的计算逻辑,比如漏写了rsi = ta.rsi(close, 14)这类核心代码?如果rsi变量不存在,rsi > 70的条件永远不成立,标签自然不会被创建。
  2. 标签位置被K线遮挡:直接用high作为y坐标,标签可能和K线最高点重叠导致看不到。可以给y坐标加一段偏移,比如high + ta.atr(14)*0.1,让标签在K线上方显示。
  3. 未同步更新标签位置:如果RSI连续大于70,你的代码只更新x坐标,若K线高点变化,标签可能卡在旧位置,需要同时更新y坐标。

修复后的完整代码示例:

// 先计算RSI指标,这里用默认14周期参数
rsiValue = ta.rsi(close, 14)
var label HighRSILabel = na

if(rsiValue > 70)
    if(na(HighRSILabel)) 
        // 给标签加y轴偏移,避免被K线遮挡
        HighRSILabel := label.new(bar_index, high + ta.atr(14)*0.1, color=color.orange, text="RSI", textcolor=color.black, tooltip="RSI > 70", style=label.style_label_down)
    else
        // 同时更新x和y坐标,确保标签在最新K线位置
        label.set_x(HighRSILabel, bar_index)
        label.set_y(HighRSILabel, high + ta.atr(14)*0.1)
// 可选:RSI回到70以下时删除标签,避免残留
else
    label.delete(HighRSILabel)
    HighRSILabel := na

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:15:42