Pine Script

Debug Pine Script com Claude/ChatGPT — guia prático

Os 10 erros mais comuns do Pine Script v5 e como resolver com AI em minutos. Mensagens de erro decifradas, soluções testadas.

📚 11 min 📈 Pine Script v5 📅 Maio 2026

Você compilou seu primeiro indicador AI e… erro. Acontece em ~20% dos códigos gerados. A boa notícia: 90% dos erros do Pine v5 são repetitivos e fáceis de corrigir. Vou mostrar os mais comuns e como debugar com AI eficientemente.

Anatomia de um erro Pine

Quando código não compila, TradingView mostra:

  • Linha do erro (linha exata onde está o problema)
  • Mensagem técnica (frequentemente confusa)
  • Sugestão (às vezes útil)

Exemplo:

line 23: Cannot use mutable variable in series context
   maxVal := math.max(close, maxVal)
            ^^^^^^^^^^^^^^^^^^^^^^^

Mensagem assusta. Solução é simples (apenas usar var declaration). AI resolve em 10 segundos.

Erro 1: “Mismatched input”

Mensagem típica: Mismatched input 'X' expecting Y

Causa: sintaxe quebrada — geralmente parêntese, vírgula ou chave faltando.

Exemplo:

// ❌ Errado - falta vírgula
plot(ema21 color=color.green)

// ✅ Correto
plot(ema21, color=color.green)

Prompt de debug:

“Erro Pine v5: ‘Mismatched input’ na linha [N]. Aqui está o código:
[cola linha + 2 acima e 2 abaixo]
Onde está o problema sintático?”

Erro 2: “Cannot use mutable variable in series context”

Causa: tentar modificar variável sem declarar como var.

Solução:

// ❌ Errado
maxVal = 0.0
maxVal := math.max(close, maxVal)

// ✅ Correto - declarar var
var maxVal = 0.0
maxVal := math.max(close, maxVal)

var mantém o valor entre as barras. Sem ele, Pine cria nova variável a cada barra.

Erro 3: “Series of integer expected”

Causa: passar tipo errado em função que espera int.

Exemplo:

// ❌ Errado - rsi é float, pivothigh espera int
rsiPivot = ta.pivothigh(rsi, rsi[1], 5)

// ✅ Correto
rsiPivot = ta.pivothigh(rsi, 5, 5)

Sempre verifique tipos esperados na documentação Pine.

Erro 4: “Undeclared identifier”

Causa: usar variável antes de declarar, ou typo no nome.

Exemplo:

// ❌ Errado - typo
ema21 = ta.ema(close, 21)
plot(eam21)  // "eam21" não existe

// ✅ Correto
plot(ema21)

Cuidado com acentos copy/paste de PT-BR também — AI às vezes gera variável tendência que vira erro.

Erro 5: “Cannot use ‘plot’ in local scope”

Causa: usar plot() dentro de if block.

Solução: use ternário para plot condicional.

// ❌ Errado
if upTrend
    plot(ema200, color=color.green)

// ✅ Correto
plot(upTrend ? ema200 : na, color=color.green)

Erro 6: “Cannot call security() with X”

Causa: argumento errado em request.security().

Solução: verificar formato do timeframe.

// ❌ Errado
htf = request.security(syminfo.tickerid, "H4", close)

// ✅ Correto - usar formato Pine
htf = request.security(syminfo.tickerid, "240", close)

Formatos válidos: "1" (1min), "60" (H1), "240" (H4), "D" (Daily), "W" (Weekly), "M" (Monthly).

Erro 7: “Repainting” warning

Não é erro de compilação, mas problema sério.

Causa: sinal “muda” depois de candle fechar. Backtest mostra performance falsa.

Solução: usar request.security() corretamente com offset.

// ❌ Repaints (sinal muda depois)
htf = request.security(syminfo.tickerid, "D", close)

// ✅ Não repaint - usa close confirmado
htf = request.security(syminfo.tickerid, "D", close[1],
   lookahead=barmerge.lookahead_on)

Sempre teste estratégias em modo replay para confirmar que não repinta.

Erro 8: “Argument cannot be ‘na'”

Causa: passar valor na em função que não aceita.

Solução: usar nz() para substituir NA por 0 (ou outro valor).

// ❌ Pode dar erro se variavel é NA
total = strategy.openprofit + commission

// ✅ Correto
total = nz(strategy.openprofit, 0) + commission

Erro 9: Strategy não executa trades

Não é erro de compilação, mas frustrante.

Causa comum: condição de entrada nunca atende.

Debug:

// Adicionar plot para visualizar condicoes
plot(longCondition ? 1 : 0, "Long Cond", color=color.green)
bgcolor(longCondition ? color.new(color.green, 85) : na)

Se condição nunca pinta verde no gráfico, lógica está errada. Simplifique condições uma de cada vez.

Erro 10: “Drawing functions … exceeded”

Causa: muitas label.new() ou line.new() — Pine tem limite.

Solução: aumentar limites no indicator().

indicator("Meu Indicador",
   overlay=true,
   max_lines_count=100,    // default é 50
   max_labels_count=100,   // default é 50
   max_boxes_count=100)

Workflow de debug com AI

Passo 1: Identificar erro EXATO

TradingView mostra linha. Vá até ela, copie:

  • A linha do erro + 3 acima + 3 abaixo
  • Mensagem de erro COMPLETA
  • Número da linha

Passo 2: Prompt focado

“Erro Pine Script v5: ‘[mensagem]’ na linha [N].

CÓDIGO (linha com erro destacada):
[linha 20] var float maxVal = 0.0
[linha 21] if condition
[linha 22] maxVal = math.max(close, maxVal) // <– ERRO AQUI
[linha 23] plot(maxVal)

Por que erro? Como corrigir? Explique mudança em 2 linhas.”

Passo 3: Aplicar correção

Cole sugestão no TradingView. Save. Veja se compila.

Passo 4: Se persiste

Algumas vezes AI fica “preso” em padrão errado dentro da mesma conversa. Soluções:

  • Comece chat novo com prompt limpo
  • Forneça código COMPLETO (não apenas snippet)
  • Diga “ignore o que sugerimos antes, comece do zero”
  • Mude de AI (se ChatGPT trava, tente Claude e vice-versa)

Quando AI não consegue resolver

~5% dos casos. Sinais:

  • AI gera várias “soluções” que não compilam
  • Cada correção introduz novo erro
  • AI começa a “explicar” sem corrigir

Nesses casos:

  1. Simplifique radicalmente: remova 50% do código, faça funcionar, adicione gradualmente
  2. Consulte documentação oficial: tradingview.com/pine-script-docs/
  3. Procure Stack Overflow: tag “pine-script”
  4. Pergunte em forum do TradingView (community)
  5. Reddit r/algotrading e r/pinescript

Geralmente é solução simples que AI não captou. Humanos veem facilmente em fórum.

💡 Pro tip: aprenda Pine Script de verdade

AI é ótima muleta, mas entender Pine Script básico evita 90% dos problemas.

Recursos grátis:

• Documentação oficial TradingView (excelente)
• PineCoders no GitHub
• YouTube: “Big Bits Trading” tem séries grátis

Investir 10-15 horas estudando = pode escrever Pine sem AI eventualmente. AI vira amplificação, não dependência.

Debug com AI = 5x mais rápido

Errors Pine Script são repetitivos. Aprenda os padrões, AI resolve em segundos.

Criar indicadores 10 Indicators