Indicador vs estratégia em 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 reporta o que teriam rendido. Misturar os dois é a razão mais comum por que um script que parece ótimo no histórico desilude ao vivo. Este guia cobre as diferenças que mudam os seus resultados, mais o terceiro tipo de script, a biblioteca.
Indicador, estratégia e biblioteca: para que serve cada um
- Indicador (
indicator()): calcula e traça. Use-o para níveis, sinais desenhados complotshape(), painéis, viés de mercado e alertas criados comalertcondition(). - Estratégia (
strategy()): tudo o que um indicador consegue desenhar, mais ordens simuladas através destrategy.entry,strategy.exitestrategy.close. O TradingView corre essas ordens e preenche o Strategy Tester com estatísticas de operações. - Biblioteca (
library()): um conjunto de funções reutilizáveis que publica e depoisimportapara outros scripts. Uma biblioteca nunca é adicionada sozinha a um gráfico.
Um único script declara exatamente um dos três, por isso um script não pode ser indicador e estratégia ao mesmo tempo. Uma configuração comum é uma biblioteca com a lógica partilhada, um indicador para o gráfico e os alertas e uma estratégia para testes.
A diferença numa linha
A primeira linha de um script Pine declara de que tipo é. Um script que abre com indicator() só pode calcular e traçar, linhas, cores, etiquetas, preenchimentos. Não tem conceito de posição, de preço de execução nem de lucro. Um script que abre com strategy() acrescenta um motor de simulação de ordens: pode chamar funções como strategy.entry e strategy.exit, e o TradingView corre essas ordens contra barras históricas para produzir o relatório do Strategy Tester, lucro líquido, drawdown máximo, taxa de acerto, fator de lucro e a lista de operações simuladas.
Assim, a separação é esta: um indicador descreve condições; uma estratégia afirma o que essas condições teriam rendido. A segunda afirmação pesa muito mais do que a primeira, porque no momento em que simula ordens herda uma pilha de pressupostos sobre quando e a que preço essas ordens foram executadas.
Onde o motor de backtest faz pressupostos discretamente
A curva de capital de uma estratégia é tão fiável quanto os pressupostos de execução que tem por baixo. Quatro predefinições fazem a maior parte do estrago:
- Avaliação no fecho da barra. Por defeito, o tester avalia a sua lógica quando uma barra fecha. Se uma condição se refere ao máximo, mínimo ou fecho 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 barra seguinte. Uma ordem a mercado colocada num sinal é executada na abertura da barra seguinte na simulação. Numa abertura rápida, esse preço impresso pode estar vários ticks, ou pontos, distante de onde seria realmente executado.
- Atrito zero. Se
commissioneslippageficarem a zero na chamadastrategy(), cada operação simulada é grátis, enquanto cada operação real paga comissão e slippage. - Tamanho da amostra. O tester reportará de bom grado uma curva magnífica construída sobre doze operações. Doze vitórias é ruído vestido de vantagem.
Um exemplo prático
Digamos que uma estratégia mostra +4200 US$ em 40 operações em futuros do ES com os custos a zero. Acrescente uma comissão de ida e volta de cerca de 5 US$, as comissões de futuros de retalho variam muito conforme a corretora, por isso use a sua, mais um tick de slippage por lado. No ES um tick são 0.25 pontos, no valor de 12,50 US$, pelo que um tick para cada lado são 25 US$. São cerca de 30 US$ de atrito por operação, cerca de 1200 US$ em 40 operações, arrastando um +4200 US$ de destaque para perto de ~3000 US$. E esta é a versão educada: se as entradas se concentrarem em aberturas voláteis, o slippage real é maior do que um tick e a diferença cresce. Nada desse atrito aparece na versão indicador da mesma lógica, porque um indicador nunca reclama uma execução. Para mais sobre como separar uma vantagem real de uma ajustada, veja como detetar sistemas de trading sobreajustados.
Sinais: plotshape num indicador, ordens numa estratégia
Um indicador marca um sinal com plotshape() ou plotchar(), um triângulo ou etiqueta na barra em que a sua condição foi verdadeira. Nada é comprado, por isso 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 reporta depois lucro líquido, taxa de acerto, drawdown e a lista completa de operações. Para medir a precisão do sinal, passe a condição para uma estratégia, acrescente custos realistas e leia a lista de operações.
Testar sinais: no fecho vs intrabarra
Por defeito, uma estratégia calcula uma vez por barra, no fecho, e uma ordem a mercado é executada na abertura da barra seguinte. Três definições mudam isso:
process_orders_on_close = trueexecuta as ordens no fecho da barra do sinal.calc_on_every_tick = truerecalcula a cada tick em direto. O histórico só tem barras terminadas, por isso os resultados reais e os históricos podem diferir.use_bar_magnifier = trueusa dados de um horizonte inferior para decidir qual dos preços de uma barra veio primeiro quando um stop e um alvo estão ambos dentro de uma barra.
Os sinais confirmados no fecho da barra dão a correspondência mais próxima entre os resultados do backtest e os reais.
Os sinais intrabarra continuam a ter o seu lugar. Uma estratégia de ruptura que tem de agir no momento em que o preço cruza um nível pode usar calc_on_every_tick em direto, desde que teste primeiro a versão real em avanço numa conta paper, porque o backtest não consegue mostrar como o sinal se comporta dentro de uma barra. Nos indicadores, a mesma separação aplica-se aos alertas: "Once Per Bar Close" espera pela barra confirmada, e "Once Per Bar" dispara na primeira vez que a condição se torna verdadeira dentro da barra, mesmo que a barra feche depois no sentido contrário. O FAQ de Pine Script cobre as definições de alertas com mais detalhe.
Que tipo de script funciona no Pine Screener?
O Pine Screener corre indicadores. Para filtrar o setup de uma estratégia, ponha a condição num indicador e trace o valor pelo qual quer filtrar.
O que o repainting realmente significa
"Repainting" é atirado a qualquer script que mostre valores diferentes em retrospetiva dos que mostrou em tempo real, mas a etiqueta é muitas vezes mal aplicada. 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 fecho da barra pede-lhe simplesmente que espere pelo fecho. Os casos genuinamente enganadores são sinais traçados na barra ainda em formação que depois saltam quando ela termina, ou dados de um horizonte temporal superior obtidos com lookahead. Avaliar a lógica numa barra confirmada mantém o seu backtest e a sua experiência real honestos um com o outro, quer esteja a construir um indicador quer uma estratégia.
Como isto se liga aos Planos de Trading
Os Planos de Trading contornam deliberadamente o problema do repaint ao entregar-lhe níveis fixos, planeados de antemão. Os níveis diários, os níveis do ES, SPY, NQ e QQQ, são calculados depois do fecho anterior e não se movem durante a sessão. Não há nada para repintar: cada nível é definido antes das 9:30 ET e fica no sítio. MyLinedChart, que desenha essas linhas, funciona como um indicador. Traça os níveis e não simula nada, por isso não trazem nenhum dos pressupostos de execução ou de comissão acima. Se um nível publicado discorda do que a sua própria estratégia lhe diz, essa discordância é informação, e muitas vezes a resposta é esperar.
Construir uma estratégia a partir dos seus próprios níveis
A maioria das estratégias negoceia em torno de preços que um trader já desenhou à mão: suporte, resistência, um pivô. O MyLinedChart exporta todas as linhas, níveis, notas e indicadores do seu gráfico como JSON, CSV ou XLSX. Entregue esse ficheiro ao ChatGPT, ao Claude ou ao seu próprio código e peça uma estratégia em Pine Script que negoceie exatamente esses preços. Você e a sua IA decidem como a estratégia entra e sai.
Uma pequena lista de verificação antes de confiar em qualquer dos tipos de script
- Saiba qual tem nas 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 realmente negoceia antes de ler um único número de lucro. - Confirme a lógica em barras fechadas para que o histórico e o real partilhem o mesmo momento de decisão.
- Avalie os resultados com operações suficientes para contarem.
- Mantenha as sobreposições de contexto (como os níveis publicados) separadas da autoridade de execução: o gráfico informa a decisão; as suas regras escritas tomam-na.
Usado assim, um indicador é uma lente e uma estratégia é uma hipótese. Teste ambos com execuções reais antes de confiar neles.
Leitura relacionada
- FAQ de Pine Script: backtests e alertas
- Como detetar sistemas de trading sobreajustados
- Glossário dos Planos de Trading
Fontes
- TradingView Pine Script Docs: Strategies
- TradingView Pine Script Docs: Repainting
- CFTC: Trading System Fraud Advisory
Apenas conteúdo educativo. Não é aconselhamento de investimento.
Apenas conteúdo educativo. Não é aconselhamento de investimento.