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

Pine Script策略图表中买卖信号标签不显示求助

标签不显示的核心原因及修复方案

1. 策略触发条件逻辑完全矛盾(根本原因)

你的isConfluent函数定义了一个不可能满足的条件:

isConfluent(rsi_val, sobrevenda, sobrecompra) =>
    rsi_val < sobrevenda and rsi_val > sobrecompra

默认参数下sobrevenda_level=30、sobrecompra_level=70,RSI值范围是0-100,没有任何数值能同时小于30且大于70,导致这个函数永远返回false。后续的开仓条件not isLong and isConfluent(...)永远无法成立,标签自然不会被创建。

修复方向

根据策略逻辑推测,你应该是想通过RSI的超卖/超买区过滤信号:

  • 做多时,判断RSI处于超卖区:rsi_val < sobrevenda_level
  • 做空时,判断RSI处于超买区:rsi_val > sobrecompra_level

可以直接删除这个矛盾的函数,在开仓条件里直接判断。

2. 其他次要问题

  • 平仓逻辑中isLong未重新赋值:原代码最后一行isLong没有设置为false,会导致状态变量混乱,需改为isLong := false
  • 初始状态变量赋值:var bool isLong = na首次判断not isLong时,na会被视为false,建议改为var bool isLong = false、var bool isShort = false避免潜在逻辑问题

完整修复后的代码

//@version=5
strategy("Cross Medias Moveis © Teste", overlay=true)

// Definir inputs para os períodos das médias móveis
ma1_length = input(12, title="MA 1 Length")
ma2_length = input(50, title="MA 2 Length")

// Função para calcular a média móvel simples (SMA)
sma(source, length) =>
    sum = 0.0
    for i = 0 to length - 1
        sum := sum + source[i]
    sum / length

// Variáveis para armazenar as médias móveis
ma1 = sma(close, ma1_length)
ma2 = sma(close, ma2_length)

// Adicionar média móvel 1 ao gráfico
plot(ma1, color=color.rgb(54, 255, 114), linewidth=2, title="MA 1")

// Adicionar média móvel 2 ao gráfico
plot(ma2, color=color.rgb(255, 0, 13), linewidth=2, title="MA 2")

// Variáveis para armazenar o estado da estratégia
var bool isLong = false
var bool isShort = false

// Constantes para níveis de Sobrevenda e Sobrecompra
sobrevenda_level = input(30, title="Sobrevenda")
sobrecompra_level = input(70, title="Sobrecompra")

// Calcular o RSI
rsi_val = ta.rsi(close, 14)

// Lógica da estratégia
if (ma1 > ma2)
    if not isLong and rsi_val < sobrevenda_level
        strategy.entry("Long", strategy.long)
        isLong := true
        isShort := false
        // Exibir texto "Long" no gráfico em tamanho grande
        label.new(bar_index, low, text="Long", color=color.green, size=size.large, yloc=yloc.price, style=label.style_circle)
else if (ma1 < ma2)
    if not isShort and rsi_val > sobrecompra_level
        strategy.entry("Short", strategy.short)
        isLong := false
        isShort := true
        // Exibir texto "Short" no gráfico em tamanho grande
        label.new(bar_index, high, text="Short", color=color.red, size=size.large, yloc=yloc.price, style=label.style_circle)

// Saída da estratégia
if (strategy.position_size > 0)
    if isLong and (ma1 < ma2)
        strategy.close("Long")
        isLong := false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:37:50