Little Bird Trading

Perguntas frequentes sobre Pine Script: backtests e alertas

4 min de leitura · Atualizado em

Esta é uma FAQ em linguagem simples sobre as duas perguntas de Pine que enganam quase toda a gente no TradingView: porque é que o backtest de uma estratégia parece melhor do que o trading real, e porque é que um alerta por vezes dispara num momento ou a um preço diferente do esperado. Ambas vêm da mesma causa de fundo, uma discrepância entre os dados realmente disponíveis quando uma decisão foi tomada e o que os seus olhos veem depois de as barras fecharem.

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

Um indicador (indicator()) só desenha e calcula, traça linhas, cores e etiquetas. 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; não negoceia nada por si. A confusão começa quando as pessoas leem um backtest como uma 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.

Porque é que o meu backtest parece ótimo mas os resultados reais não correspondem?

Quatro coisas inflacionam um backtest face à realidade, e todas se corrigem:

  • Pressupostos de fecho de barra vs. intrabarra. Por defeito, o Strategy Tester avalia a lógica no fecho da barra. Se a sua condição usa o máximo/mínimo ou o fecho da barra atual de uma forma que só se saberia depois de a barra terminar, a execução histórica usa informação que a operação real não poderia ter.
  • Execuções por defeito a preços irrealistas. Uma ordem a mercado no tester é executada na abertura da barra seguinte; numa abertura rápida esse preço pode estar vários ticks ou pontos distante do real.
  • Sem comissão nem slippage modelados. Se deixar commission_value e slippage a zero em strategy(), cada operação simulada fica sem atrito. Acrescente valores realistas, até uma fração de tick de slippage torna negativos muitos sistemas de scalping "lucrativos". (A comissão define-se através de commission_type e commission_value.)
  • Amostras minúsculas. Doze operações que correram todas bem é uma amostra pequena demais para chamar vantagem. Veja como detetar sistemas de trading sobreajustados antes de confiar em qualquer curva.

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

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

Não necessariamente. "Repainting" é um termo genérico 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 de a barra fechar está a fazer o seu trabalho: espera pelo fecho antes de confirmar. O problema vem de scripts que traçam um sinal na barra em formação e depois o mexem quando a barra termina, ou que vão buscar dados de um horizonte temporal superior com lookahead ativado. Se quer um sinal em que possa agir, avalie-o em barstate.isconfirmed (fecho da barra), que reage só à barra concluída.

Porque é que o meu alerta disparou tarde, a outro preço, ou duas vezes?

  • "Once Per Bar Close" vs. "Once Per Bar." Um alerta definido para disparar na barra em formação pode ser acionado no instante em que uma condição pisca verdadeira intrabarra, e depois a barra fecha noutro sítio e parece "errado". Disparar no fecho da barra é mais tarde, mas corresponde ao momento em que uma estratégia confirmada realmente toma a decisão (a estratégia age depois na abertura da barra seguinte).
  • O preço do alerta é uma fotografia do momento em que o alerta disparou. A sua corretora executa-o ao preço de mercado em direto, que se move nos milissegundos entre o alerta e a sua ordem.
  • Disparos duplicados normalmente significam que a condição se manteve verdadeira ao longo de vários ticks e o alerta foi configurado para disparar a cada tick quando devia disparar uma vez por barra.

Como é que isto se liga ao método dos Planos de Trading?

Os Planos de Trading contornam todo o problema do "o meu sinal fez repaint?" ao dar-lhe níveis fixos, planeados de antemão. Os níveis diários, desenhados no ES, SPY, NQ e QQQ antes da abertura, são calculados depois do fecho anterior e não se deslocam durante a sessão, por isso não há nada para repintar: cada nível é definido antes das 9:30 ET e fica no sítio. MyLinedChart só desenha esses níveis; nunca simula ordens, por isso não traz nenhum dos pressupostos de execução de backtest acima. Se um nível publicado discorda do seu próprio alerta ou estratégia, trate isso como informação, e muitas vezes a resposta é esperar. Para o vocabulário, veja o glossário dos Planos de Trading.

Lista de verificação prática antes de confiar em qualquer resultado de Pine

  • Confirme a lógica em barstate.isconfirmed para que o backtest e o real partilhem o mesmo momento de decisão.
  • Defina comissão e slippage realistas, commission_type, commission_value e slippage em strategy(), para o instrumento que realmente negoceia.
  • Escolha a frequência dos alertas com cuidado: fecho da barra para confirmação, uma vez por barra para evitar duplicados.
  • 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.

Leitura relacionada

Fontes

Apenas conteúdo educativo. Não é aconselhamento de investimento.

Apenas conteúdo educativo. Não é aconselhamento de investimento.