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

如何避免图表中三个同时触发的背离信号图标重叠?

解决背离信号图标重叠的方案(以Pine Script为例)

核心思路

给每个信号设置偏移量,通过水平或垂直方向的错位,实现图标并排展示,避免重叠。

1. 水平偏移(横向并排)

在绘制图标时,给不同信号设置不同的offset参数,让图标依次右移:

  • 第一个信号无偏移,第二个右移1根K线,第三个右移2根K线,确保同时触发时横向排列。

示例代码:

//@version=5
indicator("背离信号", overlay=true)

// 模拟三个背离信号触发条件
signal1 = ta.crossover(ta.rsi(close, 14), 30)
signal2 = ta.crossover(ta.macd(close)[1], ta.signal(close)[1])
signal3 = ta.crossover(ta.stoch(close, high, low, 14), 20)

// 绘制带水平偏移的信号图标
plotshape(signal1, title="信号1", location=location.belowbar, color=color.green, style=shape.labelup, text="S1", offset=0)
plotshape(signal2, title="信号2", location=location.belowbar, color=color.blue, style=shape.labelup, text="S2", offset=1)
plotshape(signal3, title="信号3", location=location.belowbar, color=color.orange, style=shape.labelup, text="S3", offset=2)

2. 垂直偏移(纵向并排)

若不想占用额外K线空间,可基于K线价格设置垂直偏移,利用ATR指标动态计算间距,适配不同波动品种:

示例代码:

//@version=5
indicator("背离信号", overlay=true)

signal1 = ta.crossover(ta.rsi(close, 14), 30)
signal2 = ta.crossover(ta.macd(close)[1], ta.signal(close)[1])
signal3 = ta.crossover(ta.stoch(close, high, low, 14), 20)

atr_val = ta.atr(14) // 用ATR动态计算偏移幅度

// 绘制带垂直偏移的信号图标
plotshape(signal1, title="信号1", location=location.belowbar, color=color.green, style=shape.labelup, text="S1")
plotshape(signal2, title="信号2", y=close - atr_val*0.2, color=color.blue, style=shape.labelup, text="S2")
plotshape(signal3, title="信号3", y=close - atr_val*0.4, color=color.orange, style=shape.labelup, text="S3")

3. 合并信号(简化展示)

如果不需要单独显示每个图标,可将同时触发的信号合并成一个标注,减少视觉干扰:

示例代码:

//@version=5
indicator("背离信号", overlay=true)

signal1 = ta.crossover(ta.rsi(close, 14), 30)
signal2 = ta.crossover(ta.macd(close)[1], ta.signal(close)[1])
signal3 = ta.crossover(ta.stoch(close, high, low, 14), 20)

// 生成合并信号文本
signal_text = ""
if signal1 and signal2 and signal3
    signal_text := "S1+S2+S3"
elif signal1 and signal2
    signal_text := "S1+S2"
elif signal1 and signal3
    signal_text := "S1+S3"
elif signal2 and signal3
    signal_text := "S2+S3"
elif signal1
    signal_text := "S1"
elif signal2
    signal_text := "S2"
elif signal3
    signal_text := "S3"

// 绘制合并后的信号图标
plotshape(signal1 or signal2 or signal3, title="合并信号", location=location.belowbar, color=color.red, style=shape.labelup, text=signal_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:42:54