Indicador vs estratégia no Pine Script: diferenças e quando usar cada um
6 min de leitura · Atualizado em
No TradingView, um indicador e uma estratégia parecem quase iguais no Pine Editor. Um indicador desenha no seu gráfico. Uma estratégia simula operações e relata o que elas teriam rendido. Confundir os dois é o motivo mais comum de um script que parece ótimo no histórico decepcionar ao vivo. Este guia cobre as diferenças que mudam os seus resultados, além do terceiro tipo de script, a biblioteca.
Indicador, estratégia e biblioteca: para que serve cada um
- Indicador (
indicator()): calcula e plota. Use para níveis, sinais desenhados complotshape(), painéis, viés de mercado e alertas criados comalertcondition(). - Estratégia (
strategy()): tudo o que um indicador pode desenhar, mais ordens simuladas porstrategy.entry,strategy.exitestrategy.close. O TradingView executa essas ordens e preenche o Strategy Tester com as estatísticas das operações. - Biblioteca (
library()): um conjunto de funções reutilizáveis que você publica e depoisimportaem outros scripts. Uma biblioteca nunca é adicionada a um gráfico por conta própria.
Um único script declara exatamente um dos três, então um script não pode ser indicador e estratégia ao mesmo tempo. Uma configuração comum é uma biblioteca com a sua lógica compartilhada, um indicador para o gráfico e os alertas e uma estratégia para testes.
A diferença em uma linha
A primeira linha de um script Pine declara de que tipo ele é. Um script que começa com indicator() só pode calcular e plotar: linhas, cores, rótulos, preenchimentos. Ele não tem o conceito de posição, de preço de execução ou de lucro. Um script que começa com strategy() adiciona um motor de simulação de ordens: pode chamar funções como strategy.entry e strategy.exit, e o TradingView executa essas ordens contra barras históricas para produzir o relatório do Strategy Tester, com lucro líquido, drawdown máximo, taxa de acerto, fator de lucro e a lista de operações simuladas.
Então a divisão é esta: um indicador descreve condições; uma estratégia afirma o que essas condições teriam rendido. A segunda afirmação é muito mais pesada que a primeira, porque no instante em que você simula ordens, herda uma pilha de premissas sobre quando e a que preço essas ordens foram executadas.
Onde o motor de backtest faz premissas em silêncio
A curva de capital de uma estratégia só é tão confiável quanto as premissas de execução por baixo dela. Quatro padrões fazem a maior parte do estrago:
- Avaliação no fechamento da barra. Por padrão, o tester avalia a sua lógica quando a barra fecha. Se uma condição se refere à máxima, à mínima ou ao fechamento da própria barra, a "execução" histórica pode usar informação que uma operação real não poderia ter até depois de a barra terminar.
- Execuções na abertura da próxima barra. Uma ordem a mercado colocada num sinal é executada na abertura da próxima barra na simulação. Numa abertura rápida, esse preço registrado pode ficar vários ticks, ou pontos, longe de onde você realmente seria executado.
- Atrito zero. Se
commissioneslippageficam em zero na chamada destrategy(), toda operação simulada é de graça, enquanto toda operação real paga comissão e slippage. - Tamanho da amostra. O tester relata de bom grado uma curva linda construída sobre doze operações. Doze vitórias é ruído fantasiado de vantagem.
Um exemplo prático
Digamos que uma estratégia mostre +US$ 4200 em 40 operações de futuros de ES com os custos em zero. Some uma comissão de ida e volta de cerca de US$ 5 (as comissões de futuros no varejo variam muito entre corretoras, então use a sua) e um tick de slippage por lado. Em ES um tick é 0.25 ponto, no valor de US$ 12,50, então um tick em cada sentido dá US$ 25. São cerca de US$ 30 de atrito por operação, aproximadamente US$ 1200 em 40 operações, puxando um +US$ 4200 de manchete para perto de ~US$ 3000. E essa é a versão educada: se as entradas se concentram em aberturas voláteis, o slippage real passa de um tick e a diferença cresce. Nada desse atrito aparece na versão indicador da mesma lógica, porque um indicador nunca afirma uma execução. Para saber mais sobre como separar uma vantagem real de uma ajustada, veja como identificar sistemas de trading com overfitting.
Sinais: plotshape num indicador, ordens numa estratégia
Um indicador marca um sinal com plotshape() ou plotchar(), um triângulo ou rótulo na barra em que a sua condição foi verdadeira. Nada é comprado, então o indicador não tem estatísticas de operações. Uma estratégia transforma essa mesma condição numa ordem com strategy.entry(), e o Strategy Tester então relata lucro líquido, taxa de acerto, drawdown e a lista completa de operações. Para medir a precisão de um sinal, mova a condição para uma estratégia, adicione custos realistas e leia a lista de operações.
Testando sinais: no fechamento vs intrabarra
Por padrão, uma estratégia calcula uma vez por barra, no fechamento, e uma ordem a mercado é executada na abertura da barra seguinte. Três configurações mudam isso:
process_orders_on_close = trueexecuta as ordens no fechamento da barra do sinal.calc_on_every_tick = truerecalcula a cada tick ao vivo. O histórico só tem barras finalizadas, então os resultados reais e os históricos podem diferir.use_bar_magnifier = trueusa dados de timeframe menor para decidir qual preço de uma barra veio primeiro quando um stop e um alvo ficam dentro da mesma barra.
Sinais confirmados no fechamento da barra dão a correspondência mais próxima entre backtest e resultados reais.
Sinais intrabarra ainda têm o seu lugar. Uma estratégia de rompimento que precisa agir no instante em que o preço cruza um nível pode usar calc_on_every_tick ao vivo, desde que você faça forward test da versão ao vivo numa conta paper antes, porque o backtest não consegue mostrar como o sinal se comporta dentro de uma barra. Para indicadores, a mesma divisão vale para alertas: "Uma vez por fechamento de barra" espera a barra confirmada, e "Uma vez por barra" dispara na primeira vez que a condição fica verdadeira dentro da barra, mesmo que a barra depois feche no sentido contrário. O FAQ do Pine Script cobre as configurações de alerta com mais detalhes.
Que tipo de script funciona no Pine Screener?
O Pine Screener roda indicadores. Para filtrar o setup de uma estratégia, coloque a condição num indicador e plote o valor em que você quer filtrar.
O que repainting realmente significa
"Repainting" é jogado em qualquer script que mostra valores diferentes em retrospecto do que mostrava em tempo real, mas o rótulo costuma ser mal aplicado. O teste honesto é uma pergunta: esta decisão poderia ter sido tomada com a mesma informação, no mesmo momento, ao vivo? Um sinal que só confirma no fechamento da barra simplesmente pede que você espere o fechamento. Os casos realmente enganosos são sinais plotados na barra ainda em formação que depois saltam quando ela termina, ou dados de timeframe maior puxados com lookahead. Avaliar a lógica numa barra confirmada mantém o seu backtest e a sua experiência real honestos entre si, seja você construindo um indicador ou uma estratégia.
Como isso se liga aos Planos de Trade
Os Planos de Trade evitam de propósito o problema do repaint ao entregar a você níveis fixos e pré-planejados. Os níveis diários, os níveis de ES, SPY, NQ e QQQ, são calculados depois do fechamento anterior e não se movem durante a sessão. Não há o que repintar: cada nível é definido antes das 9:30 ET e fica onde está. O MyLinedChart, que desenha essas linhas, funciona como um indicador. Ele plota os níveis e não simula nada, então não carrega nenhuma das premissas de execução ou comissão acima. Se um nível publicado discordar do que a sua própria estratégia está dizendo, essa discordância é informação, e muitas vezes a resposta é esperar.
Construindo uma estratégia a partir dos seus próprios níveis
A maioria das estratégias opera em torno de preços que o trader já desenhou à mão: suporte, resistência, um pivô. MyLinedChart exporta cada linha, nível, nota e indicador do seu gráfico como JSON, CSV ou XLSX. Entregue esse arquivo ao ChatGPT, ao Claude ou ao seu próprio código e peça uma estratégia em Pine Script que opere esses preços exatos. Você e a sua IA decidem como a estratégia entra e sai.
Um checklist curto antes de confiar em qualquer um dos tipos de script
- Saiba o que você tem em mãos:
indicator()só desenha;strategy()simula ordens e produz o relatório do Strategy Tester. - Numa estratégia, defina
commissioneslippagerealistas para o instrumento que você realmente opera antes de ler qualquer número de lucro. - Confirme a lógica em barras fechadas para que o histórico e o real compartilhem o mesmo momento de decisão.
- Julgue os resultados com operações suficientes para importar.
- Mantenha as sobreposições de contexto (como níveis publicados) separadas da autoridade de execução: o gráfico informa a decisão; as suas regras escritas a tomam.
Usado assim, um indicador é uma lente e uma estratégia é uma hipótese. Teste os dois em execuções reais antes de confiar neles.
Leituras relacionadas
- FAQ do Pine Script: backtests e alertas
- Como identificar sistemas de trading com overfitting
- Glossário dos Planos de Trade
Fontes
- Documentação do Pine Script do TradingView: estratégias
- Documentação do Pine Script do TradingView: repainting
- CFTC: aviso sobre fraude em sistemas de trading
Conteúdo apenas educacional. Não é aconselhamento de investimento.
Conteúdo apenas educacional. Não é aconselhamento de investimento.