Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasTradingView / Pine ScriptBibliotecasBacktesting

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

ScriptDestaqueAviso
BackTestLibBacktesting completo em indicadores
SAT_BACKTESTSessões, fusos, TP/SL math, exit strategy
Replica EngineReplica do motor nativo via arraysApenas long; sem comissões
LibBacktestingDayRangeFiltro por range de datasPine v1, docs incompletas
LapseBacktestingTableSharpe, Sortino, Omega, tabela visual
Position (Electrified)Simulação de trade em indicadores v6
MonthlyReturnsVsMarketTabela 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 Ratio

Exemplo 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 aqui

On this page