Backtest Robustness Checker
- Indicadores
-
Kazuma Uezono
MQL5 / MQL4 / Pine Script v6 developer and active trader.
Seller on the MQL5 Market (indicators for MT4/MT5).
Services:
- TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
- MT4 to MT5 migration - Versão: 1.1
- Ativações: 5
Backtest Robustness Checker é um indicador para MetaTrader 5 que lê uma lista das suas operações fechadas e mostra como as estatísticas mudam quando as mesmas operações vêm em outra ordem, quando algumas operações faltam ou quando os maiores ganhos são retirados. As operações podem vir do histórico da sua conta, de um relatório do Testador de Estratégia ou da conta salvo em HTML, ou de um arquivo CSV simples. Os resultados aparecem em um painel no gráfico e podem ser salvos em CSV.
Mostra apenas estatísticas de operações passadas. Não prevê nem garante resultados futuros, não diz se uma estratégia ou um EA é bom, lucrativo ou "robusto", e não dá nenhum veredito de "aprovado / reprovado". Um valor de Monte Carlo como "percentil 95 do drawdown máximo" descreve cópias embaralhadas das suas operações passadas; não é a probabilidade de um drawdown futuro. Como usar os números é decisão sua.
Somente leitura: nunca abre, modifica ou fecha ordens e não dá sinais de compra ou venda. No Testador de Estratégia (e na verificação automática do Market) não há operações suas, por isso ele mostra DADOS DE EXEMPLO embutidos (SAMPLE DATA), marcados em laranja como "not real" (não reais).
Recursos
- Três fontes de dados: histórico da conta (filtro por números mágicos, símbolos e data de fechamento), um arquivo em MQL5\Files (um relatório do MT5 salvo em HTML, ou um CSV) ou o exemplo embutido de 400 operações de demonstração.
- Ordem original: operações, lucro líquido, fator de lucro, taxa de acerto, resultado médio por operação, drawdown máximo (valor e %), máximo de perdas consecutivas, período mais longo abaixo do topo (em operações).
- Ordem embaralhada (Monte Carlo): as mesmas operações em ordem aleatória, repetidamente (1.000 vezes por padrão). Mínimo, 5%, 25%, 50%, 75%, 95% e máximo do drawdown máximo, do drawdown máximo em %, do máximo de perdas consecutivas e do período mais longo abaixo do topo; a proporção de embaralhamentos com drawdown pelo menos igual ao original; a proporção acima de um drawdown em % que você define; um histograma.
- Remoção aleatória de operações: cada rodada remove cada operação com a probabilidade que você define (10% por padrão) e mantém o resto na ordem original. Percentis do lucro líquido, do fator de lucro, do drawdown máximo e das operações mantidas, a proporção de rodadas com lucro líquido <= 0 e um histograma.
- Remover os maiores ganhos: lucro líquido, fator de lucro e drawdown máximo sem as K maiores operações vencedoras (5 por padrão).
- Tabela anual (operações, % de acerto, líquido, PF, DD máximo dentro do ano, maior sequência de perdas, média) e tabela mensal do lucro líquido, pelo horário de fechamento. Tabelas longas são divididas em páginas.
- Exportação CSV (botão): configurações, todas as estatísticas, percentis, tabelas anual e mensal, a lista de operações e, como opção, uma linha por simulação. Salvo em MQL5\Files.
- Semente aleatória fixa: os mesmos dados, configurações e semente sempre dão o mesmo resultado.
- Painel em inglês ou japonês (automático pelo idioma do terminal), cores claras ou escuras pelo fundo do gráfico, qualquer canto, três tamanhos, recolhível. Várias cópias no mesmo gráfico são empilhadas.
Parâmetros principais
- Trades to analyze: fonte de dados; conta: números mágicos, símbolos, fechadas de / até, incluir comissão, taxas e swap; arquivo: nome em MQL5\Files, ler da pasta Files comum; saldo inicial para o DD em % (0 = automático).
- Simulation: número de simulações (10-100000, padrão 1000), semente aleatória (padrão 12345), proporção de operações removidas (1-90 %, padrão 10), número de maiores ganhos removidos (0-1000, padrão 5), contar simulações com DD máximo acima deste % (padrão 20, 0 = desligado).
- Panel: página mostrada primeiro, linhas por página, idioma, canto, deslocamentos, tamanho, cores, iniciar recolhido, botão CSV, CSV com uma linha por simulação, recalcular quando novas operações forem fechadas.
- 27 parâmetros em 4 grupos.
Como é calculado
- Resultado de uma operação = lucro + comissão e taxas + swap (no histórico da conta, os custos podem ser excluídos). Uma operação é ganho ou perda quando se afasta de zero mais da metade da menor unidade da moeda (arquivos e exemplo: 0,005); caso contrário, fica no zero a zero. Fator de lucro = lucro bruto / prejuízo bruto.
- Curva de saldo = saldo inicial + resultado acumulado das operações na ordem de fechamento. Drawdown máximo = a maior queda a partir de um topo anterior; drawdown máximo em % = essa queda dividida pelo saldo no topo. Posições abertas e resultado flutuante não são incluídos.
- Saldo inicial (automático): histórico da conta = o saldo da conta logo antes do fechamento da primeira operação selecionada; HTML = as linhas balance antes da primeira operação; exemplo = 10.000. Depósitos e saques após a primeira operação não são adicionados à curva, por isso o denominador do DD em % não os inclui. O parâmetro "Starting balance for DD %" substitui o valor automático.
- Histórico da conta: uma operação = uma posição (fechamentos parciais pertencem à mesma operação, um Close By de duas posições é uma operação, uma reversão em netting é dividida).
- Relatório HTML: uma operação = um negócio de fechamento (out, in/out, out by) na tabela Deals. Cada fechamento parcial conta como uma operação separada, por isso o número de operações, a taxa de acerto e o PF podem diferir um pouco do histórico da conta das mesmas operações. Um relatório não tem IDs de posição, então cada negócio de fechamento é associado ao volume aberto por uma regra (mesmo símbolo, lado oposto; o negócio de abertura mais antigo com exatamente o mesmo volume restante; senão, primeiro a entrar, primeiro a sair). Com posições em hedge de volumes diferentes, essa associação é uma estimativa, assim como a parte da comissão e do swap de abertura atribuída a cada operação. Os totais são exatos.
- CSV: uma linha por operação, "horário,lucro" (vírgula, ponto e vírgula ou tabulação; horário como YYYY.MM.DD HH:MM ou YYYY.MM.DD HH:MM:SS, "-" ou "/" também aceitos), ou uma única coluna de lucro (então sem tabelas anual ou mensal). Somente "." como separador decimal, sem separadores de milhar. As linhas são usadas na ordem do arquivo. Uma primeira linha ilegível é tratada como cabeçalho; outras linhas ilegíveis são contadas como linhas ignoradas; linhas que começam com # são ignoradas. Um CSV não tem saldo: defina o saldo inicial nos parâmetros para ver o DD em %.
- Se o saldo inicial for desconhecido, o painel mostra "unknown" (desconhecido) e nenhum valor de DD em % é calculado. Os valores em dinheiro continuam sendo mostrados.
- Embaralhamento: a cada vez, Fisher-Yates a partir da ordem original. Remoção: um número aleatório por operação. Números aleatórios: splitmix64 a partir da semente (a remoção usa semente + 1). Percentis: interpolação linear.
- Limite de cálculo: simulações x operações fica em no máximo 100 milhões por tipo de simulação. Acima disso, o número de simulações é reduzido automaticamente (no mínimo 10) e o painel informa. Por exemplo, 50.000 operações são calculadas com 2.000 simulações. Cálculos grandes são feitos em etapas com uma linha de progresso, para que o gráfico não trave.
Notas e limitações
- Apenas estatísticas de operações passadas. Não são previsão, garantia, teste de "aprovado / reprovado" de uma estratégia, sinal de negociação nem conselho.
- O embaralhamento e a remoção tratam cada operação como um valor fixo que não depende das outras operações. Em sistemas em que as operações dependem umas das outras ou do saldo (por exemplo grid, martingale, preço médio ou tamanho de lote que cresce com o saldo), os resultados simulados podem ficar muito longe do que esse sistema realmente poderia fazer.
- Um resultado de backtest depende das configurações do teste (período, símbolo, spread, comissão, modelo de ticks). Esta ferramenta apenas lê o resultado que você fornece e não verifica como o teste foi feito.
- Relatórios .xlsx (Open XML / Excel) não podem ser lidos. Salve o relatório em HTML ou use CSV. Arquivos com mais de 64 MB não são lidos, e são usadas no máximo 2.000.000 de operações.
- Somente arquivos dentro de MQL5\Files (ou da pasta Files comum) podem ser lidos. O nome do arquivo não pode conter ".." nem ":".
- Os nomes padrão dos relatórios do MT5 contêm o número da conta (por exemplo ReportTester-12345678.html). O painel e o CSV exportado mostram o nome do arquivo, por isso renomeie o arquivo antes de tirar capturas de tela ou compartilhar o CSV.
- As tabelas anual e mensal usam o horário de fechamento como está escrito nos dados (horário do servidor nos relatórios e no histórico do MT5).
- No Testador de Estratégia, a fonte "Account history" não tem operações suas, por isso são mostrados DADOS DE EXEMPLO e o botão CSV fica oculto. Para os seus próprios dados, use-o em um gráfico normal.
Compatibilidade e suporte
- Somente MetaTrader 5. Contas hedging e netting, qualquer símbolo e período gráfico (o símbolo do gráfico não importa).
- Sem DLLs, sem acesso à internet. Só grava um arquivo quando você pressiona o botão CSV.
- Suporte por mensagens do MQL5, resposta em até 3 dias úteis: instalação, configurações, carregamento de arquivos e relatos de erros. Não podemos julgar se a sua estratégia ou o seu EA é bom, interpretar os seus resultados como conselho, dar opiniões sobre o mercado nem tomar decisões de negociação por você.
- Nenhum resultado da sua negociação é prometido ou insinuado.
