Pine Script

Como fazer backtest de estratégia com AI

Guia prático: criar strategy() em Pine Script com AI, rodar backtest no TradingView, interpretar métricas. Sem precisar saber programar.

📚 14 min 📈 Pine Script v5 📅 Maio 2026

Backtest é o teste de fogo de qualquer estratégia. Antes de operar com dinheiro real, você precisa saber: essa estratégia teria funcionado nos últimos 2-5 anos? Com Pine Script + AI, qualquer trader pode rodar backtest profissional em minutos. Vou mostrar exatamente como.

O que é backtest e por que importa

Backtest = simular sua estratégia em dados históricos para ver como teria performado.

Por que é crítico:

  • Você descobre se estratégia teria sido lucrativa
  • Identifica drawdowns piores que você suportaria
  • Ajusta parâmetros antes de arriscar dinheiro real
  • Valida ideias antes de gastar tempo emocional operando
⚠️ Limitações do backtest

Backtest NÃO é prova de que estratégia vai funcionar no futuro. Cuidado com:

Overfitting: ajustar parâmetros até performar perfeitamente no passado (não generaliza)
Survivorship bias: dados que você tem não incluem ativos que “morreram”
Slippage não modelado: backtest assume execução perfeita
Spread fixo: realidade tem spread variável
Mudança de regime: mercado de 2020-2022 ≠ 2023-2026

Backtest é condição necessária mas não suficiente. Use como filtro inicial, não como prova final.

Strategy vs Indicator no Pine Script

No Pine Script, há 2 tipos de scripts:

  • indicator() — apenas mostra sinais visualmente
  • strategy() — simula trades, mostra P/L, métricas de backtest

Para backtest, você precisa de strategy(). AI pode converter facilmente entre os dois.

Prompt para gerar strategy completa

Template prático para qualquer estratégia:

“Crie strategy() em Pine Script v5 para TradingView.

ESTRATÉGIA: [descrever em detalhes]
Ex: ‘Trend pullback – entrada quando preço acima EMA200, faz pullback até EMA21, RSI < 45, candle de reversão’

REGRAS ENTRADA LONG:
– close > ema200
– low <= ema21 (toque na EMA)
– rsi < 45
– close > open (candle bullish)
– condições anteriores: barras anteriores estavam corrigindo

REGRAS SAÍDA:
– Stop Loss: 1.5x ATR(14) abaixo da entrada
– Take Profit 1: 1:1 R:R (50% da posição)
– Take Profit 2: 1:2.5 R:R (50% da posição)
– Trailing stop após TP1: pela EMA 21

GESTÃO DE RISCO:
– Risk per trade: 1% do equity
– Position sizing: calculado dinamicamente baseado em stop distance
– Max trades simultâneos: 1 (sem pyramiding)

CONFIGURAÇÃO STRATEGY:
– initial_capital: 10000
– currency: USD
– commission: 0.02% por lado
– slippage: 2 pips
– default_qty_type: % equity
– calc_on_every_tick: false

VISUAL:
– Plotar EMAs no gráfico
– Trade markers visíveis

IMPORTANTE: código deve compilar sem warnings em Pine Script v5.”

Strategy completa de exemplo

Aqui está strategy gerada com prompt acima:

📝 Trend Pullback Strategy
// Trend Pullback Backtest Strategy
//@version=5
strategy("Trend Pullback Backtest",
   overlay=true,
   initial_capital=10000,
   currency=currency.USD,
   commission_type=strategy.commission.percent,
   commission_value=0.02,
   slippage=2,
   default_qty_type=strategy.percent_of_equity,
   default_qty_value=100,
   calc_on_every_tick=false)

// === INPUTS ===
ema21Len = input.int(21, "EMA Pullback")
ema200Len = input.int(200, "EMA Trend")
rsiLen = input.int(14, "RSI")
rsiThreshold = input.int(45, "RSI Max para Long")
atrLen = input.int(14, "ATR")
atrMult = input.float(1.5, "ATR Multiplier (Stop)")
riskPct = input.float(1.0, "Risk per trade %")

// === INDICATORS ===
ema21 = ta.ema(close, ema21Len)
ema200 = ta.ema(close, ema200Len)
rsi = ta.rsi(close, rsiLen)
atr = ta.atr(atrLen)

// === CONDITIONS ===
upTrend = close > ema200
priceNearEMA = low <= ema21
rsiOk = rsi < rsiThreshold
bullCandle = close > open

longCondition = upTrend and priceNearEMA and rsiOk and bullCandle
   and strategy.position_size == 0

// === ENTRY ===
if longCondition
    stopLoss = close - (atr * atrMult)
    target1 = close + (atr * atrMult)
    target2 = close + (atr * atrMult * 2.5)

    // Position size based on risk
    riskUSD = strategy.equity * (riskPct / 100)
    stopDistance = close - stopLoss
    qty = riskUSD / stopDistance

    strategy.entry("Long", strategy.long, qty=qty)
    strategy.exit("TP1", from_entry="Long",
       qty_percent=50, limit=target1, stop=stopLoss)
    strategy.exit("TP2/SL", from_entry="Long",
       limit=target2, stop=stopLoss)

// === PLOTS ===
plot(ema21, "EMA 21", color=color.new(#16a34a, 0))
plot(ema200, "EMA 200", color=color.new(color.black, 0), linewidth=2)
bgcolor(upTrend ? color.new(color.green, 95) : color.new(color.red, 95))

Rodando o backtest no TradingView

  1. Cole código no Pine Editor
  2. Save → “Adicionar ao gráfico”
  3. Strategy aparece no chart com trades marcados
  4. Abra “Strategy Tester” (parte inferior da tela)
  5. Veja métricas, lista de trades, gráfico de equity

Para testar diferentes condições:

  • Mude timeframe (M15, H1, H4, Daily)
  • Mude par (EUR/USD vs XAU/USD vs GBP/JPY)
  • Ajuste período histórico
  • Mude parâmetros via configurações

Métricas críticas para interpretar

1. Net Profit

Lucro total após custos. Mais não é sempre melhor — veja em conjunto com drawdown.

2. Win Rate (%)

  • 40-50%: ok se R:R 1:2+
  • 50-60%: bom para a maioria das estratégias
  • > 70%: suspeito (provavelmente overfitting)
  • < 35%: precisa R:R muito alto pra ser lucrativo

3. Profit Factor

Gross profit / Gross loss. Métrica mais importante.

  • < 1.0: estratégia perde dinheiro
  • 1.0-1.3: marginal
  • 1.3-1.7: razoável
  • 1.7-2.5: bom
  • > 2.5: excelente (ou overfit, verificar)

4. Max Drawdown

Pior perda do pico ao vale. Define se você suportaria psicologicamente.

  • < 10%: muito bom
  • 10-20%: aceitável
  • 20-30%: aguenta?
  • > 30%: você precisa nervos de aço — provavelmente não vai aguentar

5. Sharpe Ratio

Retorno ajustado pelo risco.

  • < 0.5: ruim
  • 0.5-1.0: ok
  • 1.0-2.0: bom
  • > 2.0: muito bom (suspeito de overfit se > 3.0)

6. Average Trade Duration

Confirma se estratégia opera no horizonte que você esperava (swing = dias, day = horas).

Prompts para AI analisar resultados

“Analise resultados de backtest abaixo. Estratégia: trend pullback EUR/USD H4.

RESULTADOS (3 anos):
– Total Trades: 187
– Win Rate: 48%
– Profit Factor: 1.52
– Net Profit: +34%
– Max Drawdown: 14%
– Avg Trade Duration: 4.2 dias
– Sharpe: 1.1

PERGUNTAS:
1. Esses números indicam estratégia viável?
2. Há sinal de overfitting?
3. Que ajustes melhorariam consistência?
4. É realista esperar performance similar live?
5. Próximos passos para validar?”

Walk-forward analysis (avançado)

Estratégia que funciona em todo período histórico é suspeita. Solução: walk-forward.

  1. Divida histórico em períodos (ex: anos)
  2. Otimize parâmetros em 2020-2022 (“in-sample”)
  3. Teste mesmos parâmetros em 2023 (“out-of-sample”)
  4. Compare performance: similar = robusta, divergente = overfit

TradingView Pro tem Strategy Optimizer. Free não tem, mas você pode fazer manualmente com diferentes períodos.

Quando estratégia “passa” no backtest

Sequência recomendada antes de operar live:

  1. Backtest 5+ anos com profit factor > 1.3 e drawdown < 20%
  2. Walk-forward mostra performance consistente
  3. Forward test em demo por mínimo 3 meses
  4. Resultados em demo alinhados com backtest (±20%)
  5. Live com modal pequeno (10-20% do planejado) por 1 mês
  6. Aumento gradual conforme confiança aumenta

Pular etapas = receita pra perder dinheiro. Backtest é só o primeiro passo.

Backtest = filtro inicial

Necessário mas não suficiente. Sempre seguido de forward test em demo antes de live.

10 Indicators Demo vs Real