Backtesting
Bibliotecas Pine Script para backtesting avançado em indicadores: simulação de trades, métricas Sharpe/Sortino/Omega, filtros por data e tabelas visuais de performance.
Bibliotecas para implementar backtesting diretamente em scripts do tipo indicator(), contornando as limitações do strategy() nativo do TradingView.
Scripts disponíveis
| Script | Destaque | Aviso |
|---|---|---|
| BackTestLib | Backtesting completo em indicadores | — |
| SAT_BACKTEST | Sessões, fusos, TP/SL math, exit strategy | — |
| Replica Engine | Replica do motor nativo via arrays | Apenas long; sem comissões |
| LibBacktestingDayRange | Filtro por range de datas | Pine v1, docs incompletas |
| LapseBacktestingTable | Sharpe, Sortino, Omega, tabela visual | — |
| Position (Electrified) | Simulação de trade em indicadores v6 | — |
| MonthlyReturnsVsMarket | Tabela mensal de P&L vs benchmark | — |
Por que backtesting em indicadores?
O strategy() nativo do TradingView tem limitações conhecidas:
- Não permite personalizar visualmente os resultados
- Dificulta combinar backtesting com outros dados do indicador
- Limite de plotagem diferente dos indicadores
As bibliotecas desta categoria permitem implementar a lógica de backtesting dentro de um indicator(), com total controle sobre métricas e visualização.
Stack completo de backtesting
Para um sistema completo de backtesting em indicadores, combine:
Position (Electrified)
→ Simula trades individuais (entrada, saída, PnL)
→ Saída: dados brutos por trade
BackTestLib
→ Agrega os trades e calcula estatísticas
→ Saída: win rate, profit factor, drawdown
LapseBacktestingTable
→ Exibe as métricas em tabela visual no gráfico
→ Sharpe Ratio, Sortino Ratio, Omega RatioExemplo de integração dos três
//@version=6
indicator("Backtesting Completo", overlay=true)
import Electrified/Position/6 as pos
import someauthor/BackTestLib/1 as bt
import someauthor/LapseBacktestingTable/1 as table
// 1. Simular trades com Position
p = pos.new(close, strategy.long)
// 2. Agregar com BackTestLib
bt.update(p)
// 3. Exibir com LapseBacktestingTable
table.render(bt.stats())Filtro por período
Para backtesting em janelas específicas, adicione o LibBacktestingDayRange:
import author/LibBacktestingDayRange/1 as dateRange
// Só executar backtest no período definido
if dateRange.inRange(time, startDate, endDate)
// sua lógica aquiGreat Expectations [LucF]
Biblioteca Pine Script do autor LucF para visualização de P&L Cloud histórico — mostra o range de lucros e perdas possíveis ao longo do tempo. AVISO: repinta fortemente.
BackTestLib
Biblioteca Pine Script para backtesting completo dentro de indicadores (indicator()), contornando as limitações do strategy() nativo do TradingView.