hw98_console_prompt.avif Teste de estratégias de trading com dados históricos

Backtest de portfólio confiável. Nível de pesquisa quant quant

hamster-bot/tester - Ferramenta avançada para testar seus sistemas de trading com dados históricos.

    hw98_console_prompt.avif Recursos do backtester:
  • Execução simultânea de várias estratégias de tipos diferentes em diferentes timeframes.
  • Tudo isso com saldo compartilhado, para entender como as estratégias coexistem na mesma carteira em tempo real.
  • Suporte a dados de ticks. Simulação do comportamento da estratégia dentro do candle como em negociação real.
  • Sem limites para dados de mercado de entrada. Testes em qualquer período histórico.
  • Teste de lógica complexa própria que é difícil reproduzir com precisão em soluções prontas sem gambiarras.
  • Os backtests rodam no mesmo código de produção usado pelo bot em tempo real.

Implementado como um conector separado hw98_console_prompt.avif para uma "bolsa" (objeto Mock que substitui a bolsa real). Assim é possível testar todo o código já escrito do bot. O bot pensa que está trabalhando em uma bolsa real (envia ordens, recebe saldo e informações de posições). E essa bolsa virtual calcula tudo e gera o relatório.

hw98_console_prompt.avif Dados de mercado para teste

As corretoras de criptomoedas compartilham publicamente dados históricos de mercado. Exemplos: public.bybit.com, data.binance.vision, public.bitmex.com.
O testador baixa o intervalo necessário de dados de trades e monta os candles para o bot. Antes do início do teste, o testador também baixa dados extras para aquecer todos os indicadores de TA usados pela estratégia.
Os dados são salvos na hw98_console_prompt.avif pasta tester/data/{exchange}/{symbol}. Nessa pasta você também pode colocar seus próprios dados em formato CSV.
Há um arquivo run_download_data.bat na pasta do bot. Ele inicia o bot com a flag --download-data e neste modo o testador simplesmente baixa todos os dados necessários.

O download automático de dados de mercado está implementado para spot e futuros das corretoras: BYBIT, BINANCE, MEXC.
A corretora é configurada no arquivo de configurações: settings.exchange.name = "binance"


hw98_console_prompt.avif Comportamento do testador

Do ponto de vista do bot, o testador é apenas mais uma bolsa. O bot se conecta a ela e começa a receber candles, enviar ordens etc. Enquanto isso, o testador apenas emula o comportamento de uma bolsa real.
Saldo é compartilhado entre todas as estratégias. Comportamento como em futuros BYBIT/BINANCE com margem cruzada. O bot pode solicitar saldo Wallet ou Margin. O saldo de margem é calculado considerando todas as posições abertas e o PnL não realizado.
Comportamento real do preço. Quando o bot solicita o candle atual ainda não finalizado, o testador retorna o preço de trade dos dados de ticks (até acabarem os dados de mercado dentro do candle e passar para o próximo). Assim, estratégias dependentes de preço intrabar (por exemplo, slippage, trailing stops etc.) funcionam corretamente.


hw98_console_prompt.avif Relatório

Ao final do teste, um relatório HTML detalhado é salvo na hw98_console_prompt.avif pasta tester/report.
Também é adicionada uma linha em reports_history.csv com o resumo do teste, para facilitar a busca das melhores combinações de parâmetros durante a otimização.

    Conteúdo do relatório:
  • Métricas gerais de todo o sistema de trading:
    • Saldo inicial e saldo final
    • Lucro/prejuízo total em USDT e em %
    • Máximo drawdown
    • Número de trades
    • Percentual de trades lucrativos
    • Profit Factor
    Hamster Bot Backtesting
  • Gráficos de candles individuais para cada estratégia, com marcações das operações e visualização dos indicadores TA da estratégia. Hamster Bot Backtesting
  • Gráfico de saldo de margem (considerando todas as posições abertas e PnL não realizado) e gráfico de saldo Wallet. Hamster Bot Backtesting
  • Gráfico que mostra o tamanho total das posições abertas em USDT (e uma linha em % em eixo separado mostrando a relação entre o total das posições abertas e o saldo de Margem)Hamster Bot Backtesting
  • Tabelas com a lista completa de operações por estratégia. Hamster Bot Backtesting
  • Lista de configurações das estratégias e parâmetros do testador.
  • Resumo consolidado de todas as estratégias. Volume negociado e comissões pagas.Hamster Bot Backtesting


hw98_console_prompt.avif Parâmetros do testador

arquivo: config_tester.json Você pode editar esse arquivo em qualquer editor de texto.
name_comment - comentário do teste, para facilitar a navegação nos relatórios
InitialBalance - saldo inicial para o backtest em USDT
StartDate - data de início do backtest no formato 2026-02-03T00:00:00
EndDate - data de término do backtest no formato 2026-02-13T00:00:00
WarmupDays - quantidade de dias de aquecimento antes do início do backtest
MakerFee - taxa maker (0.0001 = 0.01%). Taxa padrão da BYBIT: 0.00036 = 0,0360%. (guia para reduzir bastante as taxas)
TakerFee - taxa taker (0.0001 = 0.01%). Taxa padrão da BYBIT: 0.001 = 0,1000%
SlippagePercent - slippage para ordens a mercado (0.0001 = 0.01%)
limit_order_volume_check - Verificação de volume para execução correta de ordens limitadas. O testador verifica o volume a cada tick e preenche a ordem até que esteja completa ou enquanto houver volume disponível
FundingRate - Valor da taxa de funding (0.00025)
FundingIntervalHours - Intervalo de atualização da taxa de funding em horas (8)
UpdateData - atualizar dados antes do backtest (true/false)
use_logger - usar logger. Se desativado, acelera o backtest (true/false)
max_parallel_runs - quantidade de execuções paralelas do testador durante a otimização de parâmetros. Se o computador suportar, é possível paralelizar sem perda de velocidade por cálculo.

Hamster Bot Backtesting

arquivo: config_tester.json/report Configuração do conteúdo do relatório:
chart_ohlc_height - altura do gráfico OHLC em pixels
chart_balance_height - altura do gráfico de saldo em pixels
chart_position_height - altura do gráfico de tamanho das posições abertas em pixels
include_chart_ohlc - incluir gráfico OHLC no relatório (true/false)
include_chart_balance - incluir gráfico de saldo no relatório (true/false)
include_chart_position - incluir gráfico de tamanho das posições no relatório (true/false)
include_strategy_settings - incluir configurações da estratégia no relatório (true/false)

Hamster Bot Backtesting


hw98_console_prompt.avif Otimizador (varredura de parâmetros)

arquivo: config_tester.json/parameter_mining Configuração do otimizador:
Por padrão, isso é uma lista vazia []. Preencha com entradas como {"name":"nome_do_parametro", "start": 1, "end": 10, "step": 0.1, "values": ["string1", "string2"]}

name - nome do parâmetro a otimizar. Quase qualquer configuração do bot pode ser usada. O bot tem 4 grupos de configuração.
1) Configurações de estratégia (arquivos .json em settings_strategy). Aqui você ajusta par, timeframe, gestão de depósito e opções da estratégia.
Exemplo: settings[*].mrs2.ma_long.type - otimizar type da ordem de entrada da estratégia mrs2
2) Configurações da chave API da conta (arquivos .json em settings_accounts). Aqui você ajusta take profit global por margem e limite de posições abertas simultaneamente.
Exemplo: account[*].close_by_margin.profit - otimizar profit em close_by_margin
3) Configurações globais do programa do bot (settings_program.json). Aqui você ajusta opções globais, como multiplicador de risco.
Exemplo: settings_program.risk_multiplier - otimizar risk_multiplier
4) Configurações globais do testador (config_tester.json). Aqui você pode otimizar parâmetros do testador, como comissões.
Exemplo: config_tester.MakerFee - otimizar MakerFee

start - valor inicial
end - valor final
step - passo de variação
values - lista de valores em string para varrer. Usado para parâmetros textuais.
Por exemplo, tipos de média móvel disponíveis:
["SMA", "EMA", "GMA", "HARMONIC", "TEMA", "DEMA", "ZLEMA", "WMA", "VWMA", "RMA", "EHMA", "THMA", "HMA", "DMA", "ATR", "H", "L", "SMA_KALMAN", "EMA_KALMAN", "GMA_KALMAN", "HARMONIC_KALMAN", "TEMA_KALMAN", "DEMA_KALMAN", "ZLEMA_KALMAN", "WMA_KALMAN", "VWMA_KALMAN", "RMA_KALMAN", "EHMA_KALMAN", "THMA_KALMAN", "HMA_KALMAN", "DMA_KALMAN", "ATR_KALMAN", "H_KALMAN", "L_KALMAN"]
Fontes de preço disponíveis:
["open", "high", "low", "close", "hl2", "hlc3", "ohlc4", "hlcc4", "oc2"].
Para varredura de pares — veja o Exemplo 1.

Hamster Bot Backtesting
Se você definir dois parâmetros de 1 a 10 com passo 1, o testador fará 100 combinações (10 variações do primeiro parâmetro * 10 variações do segundo). Os resultados são salvos em relatórios HTML separados e na tabela consolidada (reports_history.csv). Isso ajuda a encontrar rapidamente as melhores combinações de parâmetros para suas estratégias.

Exemplo 1: varredura de pares de trading
parameter_mining é uma lista ([]) onde você adiciona objetos de varredura separados por vírgula ([{}, {}]).
Para varrer pares de trading, use o campo de string values; os campos numéricos start/end/step devem ser definidos como 1.0 (são ignorados quando values não está vazio).
O parâmetro settings[*].basic.symbol será aplicado a todos os arquivos de configuração na pasta settings_strategy:

"parameter_mining": [
    {
        "name": "settings[*].basic.symbol",
        "start": 1.0,
        "end": 1.0,
        "step": 1.0,
        "values": [
            "1000BONKUSDT", "1000FLOKIUSDT", "1000LUNCUSDT",
            "1000NEIROCTOUSDT", "1000PEPEUSDT", "1000TAGUSDT",
            "4USDT", "AAVEUSDT", "ACHUSDT", "ADAUSDT"
        ]
    }
]

Resultado: o testador executará o backtest para cada um dos 10 pares em sequência.

Exemplo 2: varredura de vários parâmetros simultaneamente
Adicionamos à varredura de pares uma varredura de % take-profit — de 0% a 10% com passo 0.5 (21 valores no total). Número de combinações: 10 pares × 21 valores = 210 execuções.

"parameter_mining": [
    {
        "name": "settings[*].basic.symbol",
        "start": 1.0,
        "end": 1.0,
        "step": 1.0,
        "values": [
            "1000BONKUSDT", "1000FLOKIUSDT", "1000LUNCUSDT",
            "1000NEIROCTOUSDT", "1000PEPEUSDT", "1000TAGUSDT",
            "4USDT", "AAVEUSDT", "ACHUSDT", "ADAUSDT"
        ]
    },
    {
        "name": "settings[*].options.take_profit_long",
        "start": 0,
        "end": 10.0,
        "step": 0.5,
        "values": []
    }
]

Além disso, todas as estratégias do bot estão disponíveis em formato PineScript para testes no TradingView.