Um indicador apenas mostra sinais no gráfico. Uma estratégia (strategy) no Pine Script v5 vai além: ela abre e fecha posições simuladas e gera um relatório de backtest com lucro, drawdown e taxa de acerto. O coração de qualquer estratégia são duas funções: strategy.entry, que abre a posição, e strategy.exit, que define stop loss, alvo e saída. Este guia mostra a sintaxe, um exemplo completo de cruzamento de médias pronto para copiar, e — com honestidade — os cuidados para não se enganar com resultados de backtest bons demais para ser verdade.

Validou a estratégia no backtest? O próximo passo é executá-la sozinha, sem emoção e sem atraso.

Ver o bot de automação →

Declarando uma estratégia

Tudo começa trocando indicator() por strategy() no cabeçalho. É nele que você define capital inicial, tamanho de ordem e comissões — parâmetros que tornam o backtest realista.

//@version=5 strategy(“Minha Estratégia”, overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
Dica: sempre defina commission_value e, se possível, slippage. Backtests sem custos parecem lucrativos e enganam — no mundo real, taxa e spread comem boa parte do resultado.

strategy.entry: abrindo posições

strategy.entry() envia uma ordem de entrada. Os parâmetros essenciais são o id (um nome único para a ordem) e direction, que pode ser strategy.long ou strategy.short.

// Abre uma posição comprada strategy.entry(“Compra”, strategy.long) // Abre uma posição vendida strategy.entry(“Venda”, strategy.short)

Se você chama strategy.entry("Venda", strategy.short) estando comprado, o Pine inverte a posição automaticamente — fecha a compra e abre a venda na mesma ordem. Esse comportamento é ótimo para estratégias de “sempre no mercado” (always in the market).

strategy.exit: stop, alvo e trailing

strategy.exit() fecha uma posição aberta. Ele precisa apontar para o from_entry (o id da entrada que vai encerrar) e aceita stop loss e take profit em pontos (loss/profit) ou em preço (stop/limit).

// Stop de 50 ticks e alvo de 100 ticks strategy.exit(“Saída”, from_entry=”Compra”, loss=50, profit=100) // Saída por preço absoluto strategy.exit(“Saída”, from_entry=”Compra”, stop=close * 0.98, // stop 2% abaixo limit=close * 1.04) // alvo 4% acima
Atenção: strategy.close() fecha a posição a mercado (por exemplo, num sinal contrário), enquanto strategy.exit() coloca ordens de stop/alvo que ficam ativas. Use os dois com critério — misturá-los sem cuidado gera saídas duplicadas.

Exemplo completo: cruzamento de médias

Estratégia clássica: compra quando a média rápida cruza acima da lenta, vende quando cruza abaixo, com stop e alvo definidos.

//@version=5 strategy(“Cruzamento de Médias”, overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1) rapida = ta.ema(close, 9) lenta = ta.ema(close, 21) compra = ta.crossover(rapida, lenta) venda = ta.crossunder(rapida, lenta) if compra strategy.entry(“Compra”, strategy.long) strategy.exit(“Saída Compra”, from_entry=”Compra”, loss=80, profit=160) if venda strategy.close(“Compra”) plot(rapida, color=color.aqua) plot(lenta, color=color.orange)

Cole no editor Pine, abra a aba Testador de Estratégia (Strategy Tester) e o TradingView mostra lucro líquido, número de trades, taxa de acerto e drawdown máximo.

Cuidado com o overfitting

Aqui vai o conselho mais importante e o que quase nenhum tutorial diz com clareza: um backtest bonito não garante lucro futuro. É fácil ajustar parâmetros até o gráfico do passado ficar perfeito — isso se chama overfitting, e a estratégia costuma desmoronar com dados novos.

  • Teste em vários ativos e períodos diferentes, não só no que “deu certo”.
  • Separe uma parte dos dados que você nunca usou para ajustar (validação fora da amostra).
  • Desconfie de taxas de acerto acima de 70% e de curvas de capital suaves demais.
  • Sempre inclua comissão e slippage no strategy().

FAQ

Qual a diferença entre strategy.exit e strategy.close?
strategy.exit registra ordens de stop loss e take profit que ficam pendentes. strategy.close fecha a mercado imediatamente, geralmente num sinal contrário.

Posso usar mais de uma saída por entrada?
Sim. Você pode escalonar saídas usando o parâmetro qty_percent em múltiplas chamadas de strategy.exit apontando para a mesma entrada.

Por que minha ordem não executa no candle do sinal?
Por padrão, ordens são processadas no fechamento do candle e executadas na abertura do próximo. Isso é mais realista. Ative calc_on_every_tick apenas para testes em tempo real.

O resultado do backtest vale para opções binárias?
Não diretamente. O Strategy Tester simula compra/venda de ativos com stop e alvo, não o formato de payout fixo das opções binárias. Use-o para validar a lógica do sinal, não para projetar retorno em binárias.

Aviso: opções binárias e trading alavancado são produtos de altíssimo risco e podem resultar na perda total do capital investido. Este conteúdo é estritamente educacional e não constitui recomendação de investimento. Resultados de backtest não garantem desempenho futuro. Teste sempre qualquer estratégia em conta demo antes de operar com dinheiro real.