Little Bird Trading

FAQ do Pine Script: backtests e alertas

4 min de leitura · Atualizado em

Este é um FAQ em linguagem simples para as duas dúvidas de Pine que pegam quase todo mundo no TradingView: por que o backtest de uma estratégia parece melhor do que o trading real e por que um alerta às vezes dispara em outro momento ou a outro preço do que você esperava. As duas vêm da mesma causa raiz, uma diferença entre os dados que estavam de fato disponíveis quando uma decisão foi tomada e o que os seus olhos veem depois que as barras fecharam.

Qual é a diferença entre um indicador, uma estratégia e um alerta?

Um indicador (indicator()) só desenha e calcula: plota linhas, cores e rótulos. Uma estratégia (strategy()) simula ordens: chama strategy.entry/strategy.exit, executa-as contra barras históricas e produz o relatório do Strategy Tester com lucro líquido, drawdown e taxa de acerto. Um alerta é uma camada de notificação separada que o TradingView dispara quando uma condição é verdadeira; ele não opera nada sozinho. A confusão começa quando as pessoas leem um backtest como promessa, ou esperam que um alerta seja uma execução: são três trabalhos diferentes. Para a separação mais detalhada, veja o guia de indicador vs. estratégia.

Por que o meu backtest parece ótimo mas os resultados reais não batem?

Quatro coisas inflam um backtest em relação à realidade, e todas têm conserto:

  • Premissas de fechamento de barra vs. intrabarra. Por padrão, o Strategy Tester avalia a lógica no fechamento da barra. Se a sua condição usa a máxima/mínima ou o fechamento da barra atual de um jeito que só seria conhecido depois que a barra termina, a execução histórica usa informação que a operação real não poderia ter.
  • Execuções padrão a preços irrealistas. Uma ordem a mercado no tester é executada na abertura da próxima barra; numa abertura rápida esse preço pode estar vários ticks ou pontos distante no real.
  • Nenhuma comissão ou slippage modelados. Se você deixa commission_value e slippage em zero em strategy(), toda operação simulada fica sem atrito. Coloque valores realistas: mesmo uma fração de tick de slippage vira para o negativo muitos sistemas de scalping "lucrativos". (A comissão é definida por commission_type e commission_value.)
  • Amostras minúsculas. Doze operações que deram certo é uma amostra pequena demais para chamar de vantagem. Veja como identificar sistemas de trading com overfitting antes de confiar em qualquer curva.

Exemplo prático: um sistema que mostra +US$ 4200 em 40 operações de ES sem custos parece muito diferente depois que você soma uma comissão de ida e volta de US$ 2,50 e um tick de slippage em cada lado, entrada e saída. Um tick em ES é 0.25 ponto = US$ 12,50, então dois ticks são US$ 25,00; some a comissão de US$ 2,50 e você tem US$ 27,50 de atrito por operação. Em 40 operações isso dá cerca de US$ 1100, transformando um +US$ 4200 de manchete em aproximadamente +US$ 3100, e pior se as entradas se concentrarem em aberturas voláteis, onde o slippage real é maior que um único tick.

O que é repainting, e isso quer dizer que o script está quebrado?

Não necessariamente. "Repainting" é um termo guarda-chuva para um script que mostra valores diferentes nas barras históricas dos que produziu em tempo real. O teste honesto é simples: a decisão poderia ter sido tomada com a mesma informação, no mesmo momento, ao vivo? Um sinal que só confirma depois do fechamento da barra está cumprindo o seu papel: espera o fechamento para confirmar. O problema vem de scripts que plotam um sinal na barra em formação e depois o movem quando a barra termina, ou que puxam dados de timeframe maior com lookahead ativado. Se você quer um sinal em que possa agir, avalie-o em barstate.isconfirmed (fechamento da barra), que só reage à barra completa.

Por que o meu alerta disparou atrasado, a outro preço ou duas vezes?

  • "Uma vez por fechamento de barra" vs. "Uma vez por barra". Um alerta configurado para disparar na barra em formação pode disparar no instante em que uma condição pisca como verdadeira dentro da barra, e depois a barra fecha em outro lugar e parece "errado". Disparar no fechamento da barra é mais tarde, mas bate com o momento em que uma estratégia confirmada de fato toma a decisão (a estratégia então age na abertura da barra seguinte).
  • O preço do alerta é uma foto do momento em que o alerta disparou. A sua corretora executa ao preço de mercado do momento, que se move nos milissegundos entre o alerta e a sua ordem.
  • Disparos duplicados geralmente significam que a condição continuou verdadeira ao longo de vários ticks e o alerta foi configurado para disparar a cada tick quando deveria disparar uma vez por barra.

Como isso se liga ao método dos Planos de Trade?

Os Planos de Trade evitam todo o problema do "meu sinal sofreu repainting?" ao dar a você níveis fixos e pré-planejados. Os níveis diários, desenhados em ES, SPY, NQ e QQQ antes da abertura, são calculados depois do fechamento anterior e não mudam durante a sessão, então não há o que repintar: cada nível é definido antes das 9:30 ET e fica onde está. O MyLinedChart apenas desenha esses níveis; ele nunca simula ordens, então não carrega nenhuma das premissas de execução de backtest acima. Se um nível publicado discordar do seu próprio alerta ou da sua estratégia, trate isso como informação, e muitas vezes a resposta é esperar. Para o vocabulário, veja o glossário dos Planos de Trade.

Checklist prático antes de confiar em qualquer resultado do Pine

  • Confirme a lógica em barstate.isconfirmed para que o backtest e o real compartilhem o mesmo momento de decisão.
  • Defina comissão e slippage realistas, commission_type, commission_value e slippage em strategy(), para o instrumento que você realmente opera.
  • Escolha a frequência do alerta de propósito: fechamento de barra para confirmação, uma vez por barra para evitar duplicados.
  • 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.

Leituras relacionadas

Fontes

Conteúdo apenas educacional. Não é aconselhamento de investimento.

Conteúdo apenas educacional. Não é aconselhamento de investimento.