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.
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
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 visualmentestrategy()— 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 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
- Cole código no Pine Editor
- Save → “Adicionar ao gráfico”
- Strategy aparece no chart com trades marcados
- Abra “Strategy Tester” (parte inferior da tela)
- 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.
- Divida histórico em períodos (ex: anos)
- Otimize parâmetros em 2020-2022 (“in-sample”)
- Teste mesmos parâmetros em 2023 (“out-of-sample”)
- 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:
- Backtest 5+ anos com profit factor > 1.3 e drawdown < 20%
- Walk-forward mostra performance consistente
- Forward test em demo por mínimo 3 meses
- Resultados em demo alinhados com backtest (±20%)
- Live com modal pequeno (10-20% do planejado) por 1 mês
- 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