InícioRecursosAcademiaSinais Ao VivoCompararHistórico de ResultadosPreçosFerramentasBlog
🌐 ES FR DE ZH AR
Entrar Cadastrar

Pine Script v6: Um Guia de Introdução para Desenvolvedores de Indicadores (2026)

Pela Equipe Quantum Algo · · ~9 min de leitura
Resposta Rápida Pine Script v6 é a versão atual da linguagem de scripts da TradingView, lançada em 2025. As maiores mudanças em relação ao v5 são um sistema de tipos mais rigoroso, execução mais rápida e built-ins aprimorados para arrays, matrizes e séries temporais. Scripts v5 existentes continuam funcionando — a migração é opcional via //@version=6 diretiva no topo do seu script. Para scripts novos, comece com v6. Para scripts existentes, migre somente se você precisar de uma funcionalidade v6.

O que é Pine Script, resumidamente

Pine Script é a linguagem específica de domínio da TradingView para escrever indicadores técnicos e estratégias customizadas que rodam dentro do motor de gráficos da TradingView. Não é uma linguagem de programação de propósito geral — cada script roda uma vez por barra através do histórico do gráfico, com estado gerenciado implicitamente através da série de barras. Se você nunca usou antes, o modelo mental leva cerca de um dia; as pegadinhas levam cerca de um ano.

Versão 6, lançada em 2025, é a versão de produção atual. Versões 4 e 5 ainda funcionam, mas não são mais o padrão para novos scripts.

Configuração inicial — seu primeiro script v6

Todo Pine Script começa com uma diretiva de versão na linha 1. Para criar um indicador v6:

//@version=6
indicator("My First v6 Indicator", overlay=true)

// Plot the close price as a line on the chart
plot(close, color=color.new(color.aqua, 0), linewidth=2)

Salve isto no Pine Editor do TradingView e adicione ao gráfico. Você verá o preço de fechamento plotado como uma linha ciano. Três coisas a notar: o //@version=6 diretiva é obrigatória e deve ser a primeira linha não vazia; indicator() é a declaração que define se o seu script é um indicador (overlay ou painel) ou uma estratégia (com operações simuladas); e overlay=true significa que o script é desenhado em cima do gráfico de preços em vez de em um painel separado abaixo.

O que mudou da versão v5 para v6

1. Sistema de tipos mais rigoroso

A maior mudança isolada. v6 impõe verificação de tipo que v5 ignorava ou tratava silenciosamente. O caso mais comum: v5 permitia que você passasse um series int onde um simple int era esperado e o rebaixava silenciosamente. v6 lançará um erro em tempo de compilação.

Consequência prática: quando você migra um script v5 e ele de repente não compila, o erro é quase sempre uma incompatibilidade de tipo em um argumento de função. A solução geralmente é envolver o valor em int(), float(), ou use a função built-in apropriada para converter tipos explicitamente.

2. Execução mais rápida

v6 introduziu otimizações de compilador que melhoram materialmente a velocidade de execução para a maioria dos scripts. As melhorias são mais visíveis em scripts com uso intenso de request.security() uso (análise multi-timeframe), manipulação de arrays ou operações com matrizes. Scripts simples de plotagem e cor não verão diferença significativa.

3. Melhorado request.security() comportamento

A função para solicitar dados de um timeframe diferente obteve manipulação de argumentos mais limpa e melhor proteção contra a armadilha histórica de "viés de antecipação". O erro clássico v4/v5 — usar lookahead=barmerge.lookahead_on sem entender as consequências — agora dispara um aviso mais claro quando o script é publicado.

4. Novas funções built-in

Várias funções utilitárias que anteriormente exigiam implementação manual agora estão integradas. Adições notáveis: formatação de string melhorada, melhor fatiamento de matriz e métodos de conveniência no tipo array que reduzem código repetitivo.

Os padrões que importam para indicadores SMC

Se você está escrevendo indicadores de Smart Money Concepts (order blocks, FVGs, detecção de BOS, liquidity sweeps), três padrões de Pine Script aparecem constantemente. Domine esses e você consegue construir a maior parte do que existe em suítes comerciais de SMC.

Padrão 1: detectando topos e fundos de swing

A base de todo indicador de estrutura de mercado. Use ta.pivothigh() e ta.pivotlow() com uma janela de barras esquerda/direita:

//@version=6
indicator("Swing Detection", overlay=true)

length = input.int(5, "Pivot Length", minval=1)

ph = ta.pivothigh(high, length, length)
pl = ta.pivotlow(low, length, length)

// Plot circles at confirmed swing points
plotshape(not na(ph), location=location.abovebar,
          style=shape.circle, color=color.red, size=size.tiny)
plotshape(not na(pl), location=location.belowbar,
          style=shape.circle, color=color.green, size=size.tiny)

Nota: pivôs são confirmados length barras após sua formação. Esta é uma confirmação sem repintura — uma vez impressa, o pivô não se move. O trade-off é a latência: você só sabe que o pivô existe 5 barras depois (com length=5).

Padrão 2: desenhando zonas (caixas para order blocks e FVGs)

Use o box.new() integrado para desenhar retângulos. As caixas podem ser atualizadas, estendidas para a direita conforme novas barras são impressas, ou deletadas quando invalidadas:

//@version=6
indicator("Bullish FVG Detector", overlay=true, max_boxes_count=500)

// Bullish FVG: low of current bar > high of bar 2 ago
fvg_top = low
fvg_bot = high[2]
isFVG = fvg_top > fvg_bot

if isFVG
    box.new(left=bar_index[2], top=fvg_top, right=bar_index, bottom=fvg_bot,
            bgcolor=color.new(color.green, 80),
            border_color=color.new(color.green, 50))

Duas coisas pegam desenvolvedores iniciantes aqui. Primeiro, max_boxes_count padrão é 50 — aumente-o para qualquer indicador que desenhe zonas ao longo de históricos longos. Segundo, as caixas são desenhadas em tempo de compilação por barra; se você desenhar uma caixa em cada barra sem lógica condicional, esgotará o limite rapidamente.

Padrão 3: rastreando estado entre barras (o var palavra-chave)

O Pine Script roda seu código uma vez por barra, mas você frequentemente precisa de estado que persiste. O var declara uma variável que é inicializada uma vez e persiste através das execuções de barra:

//@version=6
indicator("BOS Tracker", overlay=true)

// Persistent state: track the last confirmed swing high
var float lastSwingHigh = na

// Update when a new pivot high is confirmed
ph = ta.pivothigh(high, 5, 5)
if not na(ph)
    lastSwingHigh := ph

// Detect BOS: close above the last swing high
isBOS = not na(lastSwingHigh) and close > lastSwingHigh

if isBOS
    label.new(bar_index, high, "BOS",
              color=color.new(color.green, 0), textcolor=color.white)

Sem var, a variável seria resetada a cada barra. Com var, o valor persiste. Este é o padrão fundamental para qualquer indicador que precisa de memória de eventos passados — todo detector de BOS, detector de MSS, rastreador de mitigação e sistema de envelhecimento de order blocks usa este padrão por trás.

Armadilhas comuns que pegam desenvolvedores iniciantes

Armadilha 1 Indicadores repintáveis que parecem ótimos em backtests mas perdem dinheiro ao vivo. A causa é usar lookahead=barmerge.lookahead_on em request.security() chamadas ou usando construções que olham para o futuro como ta.pivothigh() sem considerar o atraso de confirmação da barra. Se os sinais do seu indicador parecem perfeitos nos dados históricos, suspeite primeiro de repintura.
Armadilha 2 Sem usar format.mintick para labels de preço. Precisão decimal hardcoded quebra quando o script é aplicado a instrumentos com diferentes tamanhos de tick (BTC vs EURUSD vs ES). Use str.tostring(price, format.mintick) para qualquer preço exibido em labels ou alertas.
Armadilha 3 Desenhar muitos objetos. O Pine Script tem limites rígidos no número de linhas, caixas, labels e tabelas que um script pode desenhar (padrão 50, máximo 500). Indicadores que desenham um label em cada barra ou uma caixa para cada sinal vão silenciosamente descartar os objetos mais antigos. Defina max_lines_count, max_boxes_count, etc. no indicator() declaração explicitamente quando você precisar de mais.
Armadilha 4 Atribuição de variável vs reatribuição. Pine usa = para primeira atribuição e := para reatribuição. x = 5 em dois lugares cria duas variáveis com escopo. x := 5 reatribui uma existente. Misture-as e você gastará uma hora debugando valores que não serão atualizados.

Publicando no TradingView

Quando seu script funcionar, você pode publicá-lo na Biblioteca Pública da TradingView — seja como código aberto (qualquer pessoa pode ler e copiar o código) ou apenas por convite (você controla o acesso). Ambas as opções alcançam a base de usuários da TradingView; publicações de código aberto são revisadas de acordo com as Regras da Casa e classificadas no pipeline de Escolhas dos Editores se a qualidade for alta.

Três Regras da Casa que pegam novos autores com mais frequência: não inclua links promocionais externos em títulos ou descrições de scripts, não use técnicas de repintagem sem divulgá-las, e não referencie sua marca dentro da saída do gráfico (sem logos, sem rótulos de marca d'água). As duas primeiras são técnicas; a terceira é focada em aplicação e pega publicadores comerciais regularmente.

Perguntas frequentes

Preciso migrar meus scripts v5 para v6?

Scripts v5 existentes continuam rodando no TradingView indefinidamente — não há descontinuação forçada. A migração é recomendada apenas quando você precisa de um recurso específico do v6 (sistema de tipos melhorado, melhor desempenho, novos built-ins) ou quando está começando um script do zero. Para indicadores publicados, o custo da migração raramente vale o benefício a menos que você esteja mantendo ativamente o script.

Qual é a maior mudança disruptiva no Pine Script v6?

O sistema de tipos fortalecido. v6 impõe verificação de tipo mais rigorosa — conversões implícitas que funcionavam silenciosamente em v5 agora gerarão erros. O problema de migração mais comum são incompatibilidades de tipo series-vs-simple em argumentos de função que anteriormente não eram detectados.

Pine Script v6 é mais rápido que v5?

Sim, em média. O compilador v6 faz otimização mais agressiva e tem um runtime de execução mais rápido para a maioria dos padrões comuns. A melhoria é mais perceptível em scripts com manipulação pesada de arrays ou muitas request.security chamadas.

Posso usar v5 e v6 no mesmo script?

Não. A versão é declarada no topo do script (//@version=6 ou //@version=5) e se aplica ao script inteiro. Você não pode misturar versões dentro de um único indicador ou estratégia.

Onde posso publicar indicadores Pine Script v6?

A Biblioteca Pública do TradingView aceita scripts v5 e v6. Scripts open-source são revisados por moderadores do TradingView conforme as Regras da Casa — as mesmas regras se aplicam independentemente da versão. Scripts closed-source (somente por convite) têm menos sobrecarga de revisão, mas não podem ser promovidos na Biblioteca Pública.

● Código aberto na TradingView

Veja indicadores v6 de produção em ação

O Neural Confluence Engine gratuito do Quantum Algo e todo o pacote Zeno são escritos em Pine Script v6. O script gratuito é open-source — clone-o, estude-o, modifique-o como referência de aprendizado.

Ver no TradingView
Gratuito para usar · Scripts publicados revisados por moderadores da TradingView