Como testar um robô de negociação antes da compra

18 março 2014, 14:31
MetaQuotes Software Corp.
0
18 696

A compra de um robô de negociação no Mercado MQL5 apresenta uma vantagem distinta em relação a todas as outras opções similares - um sistema automatizado oferecido pode ser inteiramente testado diretamente no terminal MetaTrader 5. Antes da compra, um Expert Advisor pode e deve ser cuidadosamente executado em todos os modos não favoráveis no Strategy Tester integrado para que você entenda completamente o sistema, observando que todo Expert Advisor oferecido no Mercado MQL5 disponibiliza uma versão de demonstração.

Lembre: Não é apenas o valor pago que você arrisca ao comprar um robô de negociação, mas também potenciais perdas que podem ocorrer como resultado do uso desse robô de negociação para fazer operações na conta real.

Vamos observar isso utilizando como exemplo um Expert Advisor de três médias móveis gratuito, o qual vamos baixar diretamente no terminal MetaTrader 5. Esta é uma implementação de uma estratégia de negociação clássica baseada em três médias móveis.

Download do Expert Advisor do Mercado MQL5 diretamente no terminal MetaTrader 5


Métodos de avaliação de Expert Advisor baseados em resultados de teste

Apesar de não haver um método geral que poderia lhe dar 100% de garantia sobre o desempenho de um robô de negociação, há métodos simples que permitem que você verifique os parâmetros principais de qualquer sistema de negociação específico no Strategy Tester do terminal MetaTrader 5. Os métodos-chave disponíveis são os seguintes: 

  • Teste de estresse no modo de atraso aleatório,
  • Teste em um ambiente de negociação diferente,
  • Teste em um símbolo/período de tempo diferente,
  • Backtesting em dados históricos ruins,
  • Backtesting ao longo de um período histórico estendido (após a publicação do Expert Advisor no Mercado MQL5),
  • Teste progressivo.

Além disso, deve-se prestar atenção a fatores potencialmente suspeitos, tal como:

  • fator de lucro muito alto,
  • alto valor de lucro em dados históricos,
  • um grande número de parâmetros externos em um sistema de negociação,
  • regras complexas de gerenciamento de dinheiro.

Embora o que foi apresentado acima seja uma tarefa bastante simples, a maioria dos iniciantes, bem como muitos negociadores já um pouco experientes ou não estão cientes desses detalhes ou nem sempre estão suficientemente atentos. Mais uma vez, vamos notar que qualquer robô de negociação baixado do Mercado MQL5 pode ser configurado para teste diretamente na janela do navegador.

Iniciando o Expert Advisor través do menu do navegador

O painel do Strategy Tester com o Expert Advisor que você selecionou aparecerá automaticamente uma vez que você pressionar "Testar" no menu de contexto. Tudo está preparado para o teste do Expert Advisor baixado e estamos prontos para uma análise detalhada dos métodos de avaliação indicados acima.


Teste de estresse no modo de atraso aleatório

O Strategy Tester é fundamentalmente projetado para testar as regras de negociação de um sistema. Isso significa que o Strategy Tester simula o ambiente ideal para todos os processos:

  • envio de solicitações de negociação,
  • atualização do status de posições abertas e ordens pendentes,
  • obtenção de eventos de negociação,
  • obtenção de histórico de preços,
  • cálculo de indicadores e muito mais.

Tudo é planejado para o teste e otimização da estratégia de negociação dentro de um tempo mínimo. Entretanto, visto que a operação de um robô de negociação em ambiente real está longe de ser ideal e instantânea, o Strategy Tester foi aprimorado com um modo de teste adicional que simula um atraso aleatório entre o envio e a execução de uma ordem de negociação.

Configuração do modo de atraso aleatório

Esse modo de teste detecta com precisão:

  • os erros de gerenciamento da operação de negociação,
  • o ajuste da estratégia para determinadas condições de negociação.

A obtenção de resultados de negociação notoriamente diferentes após a execução de um único teste do Expert Advisor em dois modos, padrão e atraso aleatório, deve fazer você pensar. Primeiramente, observe o registro do Strategy Tester visto que o fato de ele conter diversos erros de negociação deve ser uma razão suficiente para eliminar esse Expert Advisor da sua lista. Em nosso caso, nenhum erro desse tipo foi detectado durante o teste de estresse no modo de atraso aleatório, o que sugere que o Expert Advisor passou com êxito na primeira metade do teste.

Agora, vamos ver se há alguma diferença entre os resultados de negociação obtidos com o uso de testes únicos executados em dois modos. O número significativamente reduzido de negociações e lucros obtidos no modo de atraso aleatório sugere que a estratégia é altamente dependente da qualidade da transmissão e execução de ordens de negociação e apenas pode obter lucros sob determinadas condições ideais. O desenvolvedor poderá ter feito isso despropositadamente, o que é geralmente o caso. Mas essa "falha" pode se tornar desastrosa para sua conta de negociação.

Comparação de resultados de testes em diferentes modos de execução de ordem de negociação

Em nosso exemplo, a troca para um modo de execução de ordem de negociação diferente não afetou o número de negociações e de transações. Os resultados do teste são apenas um pouco diferentes, o que pode ser adequadamente explicado por pequenas alterações de preço presentes nas transações devido a novas cotações. 

Conclusão: o Expert Advisor de três médias móveis passou nesse teste. O teste de estresse no modo de atraso aleatório não teve um efeito considerável sobre os resultados de negociação.


Teste em um ambiente de negociação diferente

Execute um teste do robô de negociação sob as condições especificadas em sua descrição no Mercado MQL5. Em seguida, conecte-se à conta de outro corretor e execute o teste novamente. Isso é um pouco similar ao teste de estresse anterior e permite que você veja como pequenas alterações nos preços e nas condições de negociação (spread, níveis admissíveis de StopLoss/TakeProfit, etc.) podem afetar os resultados de negociação.

Por exemplo, você tem os resultados de teste do Expert Advisor para EURUSD na conta do corretor A . Execute o mesmo teste em EURUSD, mas, desta vez, na conta do corretor B. Se os resultados forem muito diferentes, essa é uma boa razão para reconsiderar a necessidade de obter esse robô de negociação.


Outro símbolo/período de tempo

A maioria dos robôs de negociação são desenvolvidos para negociar em um símbolo específico e alguns deles também requerem o uso em período de tempo específico. Parece muito razoável, visto que cada instrumento se comporta de maneira particular. Dessa forma, o símbolo e o período de tempo, em regra, sempre são especificados na descrição de um robô de negociação ofertado no Mercado MQL5.

Faça o download de uma versão de demonstração do Expert Advisor e inicie ele em um símbolo e/ou período de tempo diferente. Primeiramente, você precisa se certificar de que o Expert Advisor não falhará com um erro crítico ou preencherá o registro com mensagens de erros de negociação, sendo utilizado em condições de início inadequadas. Em segundo lugar, verifique se uma estratégia de negociação lucrativa não tenha se tornado extremamente prejudicial devido às mudanças na configuração apresentadas acima - isso pode ocorrer quando o ajuste de curvas foi feito.

Uma das formas mais simples para organizar esse tipo de teste para o Expert Advisor é otimizá-lo através de todos os símbolos selecionados em Market Watch. Executamos a otimização do Expert Advisor nesse modo em um período de tempo H1 bastante longo com a geração a "Cada tick" e obtemos uma resposta bem rápida para a segunda pergunta.

 Otimização através de todos os símbolos selecionados em Market Watch

Os resultados dessa otimização mostram que a estratégia tem direito de existir, demonstrando número estatístico suficiente de negociações em cada símbolo sem produzir resultados muito ruins. Saiba que testamos uma estratégia em todos os 13 símbolos em Market Watch com os mesmos parâmetros estabelecidos de forma padrão.

Resultados da otimização através de todos os símbolos selecionados em Market Watch

Certamente não podemos esperar que cada Expert Advisor funcione igualmente bem em qualquer símbolo e período de tempo. Ainda assim, vale a pena verificá-lo no Strategy Tester utilizando esse método. Ele apenas não revelará possíveis erros no código, mas pode inclusive fornecer novas ideias.

Conclusão: o comportamento do Expert Advisor de três médias móveis foi normal durante o teste em um símbolo/período de tempo diferente. Nenhum erro de código evidente foi detectado durante o teste.


Backtesting em dados históricos ruins

Descobrimos que o Expert Advisor produz melhores resultados ao trabalhar com GBPUSD. Mas o que acontece se esse padrão não for consistente e se esse comportamento ocorre devido ao intervalo de teste selecionado (2012.01.01 a 2012.09.28) que, apenas por acaso, foi favorável? Para analisar essa pergunta, testamos o Expert Advisor com os mesmos parâmetros em 2011, tomando 2011.01.01-2011.12.31 como intervalo. Executamos o teste e observamos os resultados.

Backtesting em dados históricos ruins

O Expert Advisor não é mais lucrativo e imediatamente tornou-se muito menos impressionante. Além disso, as perdas ocorridas em 2011 excedem significativamente os lucros demonstrados no Strategy Tester para o período 2012.01.01-2012.09.28. Entretanto, agora estamos cientes das perdas potenciais, inclusive em negociações em GBPUSD.

Conclusão: o Expert Advisor de três médias móveis requer maior desenvolvimento para assegurar respostas automáticas adequadas para mudanças no comportamento do mercado ou, então, os parâmetros adequados para cada intervalo têm que ser encontrados através de otimização.


Backtesting ao longo de um período histórico estendido

Ao fornecer descrições, os desenvolvedores de robôs de negociação tentam mostrar o melhor de seus produtos e, assim, apresentam relatórios e gráficos de teste com parâmetros ótimos para um determinado intervalo. Visto que, geralmente, um tempo considerável transcorreu desde a data da publicação do robô de negociação até a data em que você se interessou por ele, podemos executar o chamado teste progressivo.

O teste progressivo é um teste durante um período histórico que não foi considerado durante a seleção de parâmetros ótimos. Vamos continuar a análise desse Expert Advisor em GBPUSD durante um intervalo de teste um pouco mais longo, incluindo dados históricos posteriores a 28 de setembro de 2012. A data final é estabelecida como 2012.11.26, adicionando-se assim quase dois meses extras. Assim, após o teste executado para o período de 2012.01.01 a 2012.11.26, obtemos o novo gráfico de teste:

Backtesting ao longo de um período histórico estendido

Em nosso caso, os resultados demonstrados pelo Expert Advisor de três médias móveis ao longo do curto intervalo adicional (Progressivo) são ainda melhores que os obtidos nos 10 meses precedentes. No entanto, isso é muito raro.

Conclusão: o teste do Expert Advisor de três médias móveis em GBPUSD durante o período histórico estendido não demonstrou qualquer enfraquecimento dos parâmetros de negociação.


Teste progressivo

O teste progressivo é usado para avaliar a estabilidade do sistema de negociação no comportamento mutável do mercado. Os parâmetros de otimização no Strategy Tester permitem obtermos os parâmetros em que o robô de negociação tem o melhor desempenho nos dados históricos dentro de um determinado intervalo. Mas isso não garante que os parâmetros obtidos serão os mais adequados mesmo quando utilizados para negociação no futuro próximo.

Os negociadores que desenvolvem sistemas de negociação automatizados geralmente confundem conceitos tal como otimização e ajuste de curva. A linha que separa uma otimização favorável e um ajuste de curva é muito tênue e difícil de encontrar. É aqui que o teste progressivo mostrou ser útil para permitir uma avaliação objetiva dos parâmetros obtidos.

Durante a otimização no Strategy Tester do MetaTrader 5, você pode escolher fazer o teste progressivo dos parâmetros ótimos resultantes e estabelecer os limites necessários. Vamos realizar o teste progressivo do nosso robô de negociação com as configurações mostradas abaixo.

Configuração do modo de otimização progressiva

A progressão é estabelecida como 1/4, o que significa que o intervalo 2012.01.01- 2012.11.26 especificado será dividido em 4 partes. Os primeiros 3/4 do histórico serão utilizados para encontrar os parâmetros ótimos e as 25% melhores aprovações (conjuntos de parâmetros do Expert Advisor) serão testados progressivamente no 1/4 de dados históricos restantes.

Especifique os parâmetros a serem otimizados - selecionaremos aqueles que devem ter um impacto sobre a lógica de negociação. Assim, não otimizaremos os parâmetros responsáveis pelo gerenciamento de dinheiro.

Parâmetros a serem otimizados

A combinação dos valores de passo acima, bem como valores de início e de parada, resultaram em quase 5 milhões de passes. Sob as condições especificadas, não é insensato utilizar algoritmo genético e envolver a rede em nuvem da MQL5 na otimização.

Assim, vamos observar os resultados da otimização incluindo passes progressivos que levaram um total de 21 minutos e custaram 0,26 crédito para mais de 4000 passes utilizando agentes em nuvem. Um exemplo de como os custos são calculados pode ser encontrado no artigo Rede em nuvem da MQL5: Você ainda está calculando?

Gráfico dos resultados do teste progressivo

À primeira vista, parece ter alguma coisa errada com ele. Verificamos os resultados e percebemos que os valores dos três primeiros parâmetros otimizados são iguais durante todos os passes. E apenas os dois últimos parâmetros Inp_Signal_ThreeEMA_StopLoss e Inp_Signal_ThreeEMA_TakeProfit possuem valores diversos.

Tabela de resultados dos passes progressivos

Considerando a tabela acima, podemos criar duas hipóteses:

  • esses parâmetros, especificamente StopLoss e TakeProfit values, na realidade não têm qualquer influência sobre os resultados de negociação;
  • o algoritmo genético falhou em sair do extremo local que atingimos durante a otimização.

Vamos verificar as duas hipóteses através de uma nova otimização com as mesmas configurações e parâmetros de entrada. Dessa vez, o gráfico de resultados de teste progressivo é um pouco diferente.

Outro gráfico de nova otimização do período progressivo

Como resultado da otimização, agora podemos ver três tendências principais. Isso significa que os dois últimos parâmetros otimizados ainda parecem incidentais para o robô de negociação especificado.

Conclusão: a otimização do Expert Advisor de três médias móveis em GBPUSD demonstrou que a lógica de negociação apenas depende de três entre sete parâmetros.

Vamos fazer uma última tentativa de remover parâmetros desnecessários da otimização. Agora temos apenas 1650 passes.

Conjunto de parâmetros reduzido para otimização

Assim, uma busca completa de parâmetro faria mais sentido, em vez de otimização genética. A rede em nuvem da MQL5, nesse caso, nos fornece mais agentes e o tempo requerido para completar o processo será, consequentemente, reduzido de forma significativa.

Uso de agentes de rede em nuvem da MQL5 durante a busca completa de parâmetro

A tarefa foi realizada em 7 com 2000 agentes de nuvem envolvidos e o gráfico de teste progressivo parece bom.

Gráfico de otimização

A maioria dos passes ao longo do período progressivo mostrou ser lucrativa, com número de pontos superiores aos 10.000 USD iniciais sendo muito maior que os pontos da zona de prejuízo. Isso parece um pouco otimista, mas não significa que os conjuntos de parâmetros resultantes também serão lucrativos no futuro.


Número de parâmetros em um sistema de negociação

Tivemos uma chance de ver que nem todos os parâmetros disponíveis para configuração de um robô de negociação são igualmente significativos e capazes de afetar os resultados de negociação. Em nosso caso, os valores de Inp_Signal_ThreeEMA_StopLoss e Inp_Signal_ThreeEMA_TakeProfit não tiveram praticamente qualquer impacto sobre o desempenho do Expert Advisor. Entretanto, é muito mais comum encontrar um robô de negociação que apresenta um grande número de configurações de parâmetros.

Um grande número de parâmetros permite que você faça configurações muito precisas para um robô de negociação para adequar o desempenho dele a um determinado período histórico cuja probabilidade de ser revelado durante a otimização seja muito alta.

O ajuste de curva significa que o Expert Advisor provavelmente não mostrará o mesmo nível de lucratividade em dados além do intervalo específico utilizado para a otimização como ocorreu nos dados do teste. E, pior ainda, ele pode produzir os resultados opostos, levando a perdas.

Acredita-se que quanto menos configurações de parâmetros tem um sistema de negociação, menor a probabilidade de que o padrão identificado desapareça no futuro. E vice-versa - quanto mais parâmetros no sistema, menor a possibilidade de que o mercado mantenha suas características alinhadas a um Expert Advisor tão específico. Como prova do que foi dito acima, recomendamos fortemente que você se familiarize com os resultados da análise de negociação apresentada no artigo Otimização vs realidade: Evidências do ATC 2011 que abordaremos mais abaixo.

Correlação entre balanço e número de parâmetros

O gráfico exibe resultados de negociação dos participantes durante o Campeonato de negociação automatizada 2011. O eixo vertical mostra o balanço da conta ao final do campeonato e o eixo horizontal exibe o número de parâmetros externos do EA. Os Expert Advisors são representados por diamantes vermelhos. Pode-se ver claramente que os Expert Advisors com grande número de parâmetros perderam dinheiro ou, na melhor situação, não ganharam nem perderam, durante a negociação no período progressivo do campeonato.

A ausência de parâmetros externos em um robô de negociação ofertado para venda também não diz nada sobre a generalidade das regras de negociação integradas e não pode ser considerada como falta de qualidade. O desenvolvedor do Expert Advisor deve ter, por alguma razão, simplesmente integrado os parâmetros externos ao robô de negociação.


Fator de lucro muito alto

A maioria dos negociadores não gosta de perder negociações e percebe isso como sinal de uma operação defeituosa de um sistema de negociação. Na realidade, isso não pode ser evitado devido à natureza da negociação nos mercados financeiros. Qualquer negociação após a abertura de uma posição pode ser ganhadora ou perdedora. As perdas de negociação são inevitáveis e são vistas como uma forma de pagamento que ocorre naturalmente e um item de despesa inevitável, como em qualquer negócio.

Muitos desenvolvedores de sistemas de negociação automatizados vão para os extremos, tentando reduzir o número de negociações perdedoras e perda bruta para o mínimo. Para conseguir fazer isso e melhorar os resultados que poderão ser obtidos no Strategy Tester, eles adicionam novos filtros que permitem que você evite perder negociações, melhorando assim o fator de lucro. Os filtros adicionais têm os seus próprios parâmetros e configurações, aumentando assim o número total de parâmetros de entrada.

O fator de lucro é definido como o lucro bruto dividido pela perda bruta. O fator de lucro de sistemas lucrativos é sempre superior a 1. Entretanto, se alguém tentou otimizar excessivamente um sistema de negociação no Strategy Tester, esse número poderá ser muito maior. Vamos observar mais um gráfico do artigo Otimização vs realidade: Evidências do ATC 2011.

Fator de lucro muito alto como resultado da otimização

É evidente que quase todos os robôs de negociação que apresentaram um fator de lucro muito alto durante o teste nos dados históricos não chegaram nem perto dos seus resultados do backtesting quando testados durante o período progressivo do Campeonato de negociação automatizada 2011 e perderam praticamente tudo. Isso sugere que um fator de lucro muito alto demonstrado no Strategy Tester ocorreu devido ao ajuste da estratégia a um determinado período de tempo utilizado para a otimização do robô de negociação.


Lucros enormes em dados históricos

Um lucro enorme apresentado na descrição de um robô de negociação pode ser outro fator alarmante. Se os relatórios do Strategy Tester anexos exibem um balanço astronômico, isso muito provavelmente está relacionado ao ajuste de curva. Em geral, os desenvolvedores dessas "máquinas de fazer dinheiro" se quer se dão conta de que os seus sistemas estão excessivamente otimizados e contêm demasiados parâmetros externos. Vamos comprovar essa afirmação com outro gráfico do relatório Otimização vs realidade: Evidências do ATC 2011 mencionado acima.

Lucros enormes em dados históricos

Os compradores desses "Graals" são, em regra, inexperientes e facilmente iludidos por lucros enormes em dados históricos. Nesses casos, a ilusão do lucro que esse robô de negociação pode obter é real e mútua.


Manipulações com gerenciamento de dinheiro

A criação de regras especiais de manipulação de negociação que permite que você passe por dados históricos ruins no Strategy Tester com perdas mínimas e maximize os retornos de transações exitosas é a abordagem mais complicada e rara para o desenvolvimento anormal de um robô de negociação. Isso está muito longe de ser o que se chama de gerenciamento de dinheiro.

Esse ajuste pode ser melhor detectado pelo teste em dados que estão fora do período histórico utilizado para obter os resultados que são apresentados pelo desenvolvedor na descrição do robô de negociação. Quanto mais abrangente é o ajuste, maior a probabilidade de que o robô falhe no teste.


Não confie em ninguém. Nem em você mesmo

Infelizmente, o robô de negociação, como qualquer programa complexo, poderá conter erros não intencionais que não podem ser detectados de outra forma que não seja a negociação online. Nenhum desenvolvedor de robôs de negociação pode garantir que o seu programa seja livre de erros e que ele administrará corretamente todas as situações anormais. Até mesmo o Expert Advisor que foi testado com sucesso pode fazer um erro de negociação ou falhar devido a um erro crítico quando submetido a condições inesperadas que o desenvolvedor não tinha a possibilidade de prever. A única garantia implícita, nesse caso, pode ser a experiência e reputação do desenvolvedor do robô de negociação.

E, é claro, um Expert Advisor que demonstrou resultados positivos no serviço Sinais durante um período de tempo suficiente será mais confiável do que aquele que não demonstrou. Qualquer que seja o caso, não se atropele calculando seus lucros futuros e lembre-se de duas regras que ainda são válidas:

  1. não confie em ninguém,
  2. e nenhum sucesso de negociação do passado pode garantir lucros futuros.


Nós recomendamos os seguintes artigos referentes ao serviço de Mercado:

Traduzido do russo pela MetaQuotes Software Corp.
Artigo original: https://www.mql5.com/ru/articles/586

Fundamentos básicos da programação MQL5: strings Fundamentos básicos da programação MQL5: strings

O artigo cobre tudo que você pode fazer com strings no MQL5. Deve ser de interesse principalmente para programadores MQL5 novatos, enquanto os desenvolvedores mais experientes terão uma boa oportunidade para resumir e sistematizar seu conhecimento.

Aprendizagem de máquina: como as máquinas de vetores de suporte podem ser utilizadas nas negociações Aprendizagem de máquina: como as máquinas de vetores de suporte podem ser utilizadas nas negociações

As máquinas de vetores de suporte foram por muito tempo usadas em campos como de bioinformática e aplicava matemática para avaliar conjuntos de dados e extrair padrões úteis que podem ser usados para classificar dados. Este artigo visa em como é uma máquina de vetor de suporte, como trabalha e por que pode ser tão útil na extração de padrões complexos. Podemos investigar como elas podem ser aplicadas ao mercado e potencialmente usadas para aconselhar sobre negócios. Usando a Ferramenta de aprendizado da máquina de vetor de suporte, o artigo fornece exemplos trabalhados que permitem que os leitores experimentem com seus próprios negócios.

Fundamentos básicos da programação MQL5: Tempo Fundamentos básicos da programação MQL5: Tempo

Este artigo foca nas funções padrões do MQL5 para trabalhar com o tempo, bem como técnicas de programação e funções praticamente úteis para trabalhar com o tempo que são necessárias ao criar Expert Advisors e indicadores. Atenção particular é dedicada à teoria geral da medição de tempo. Este artigo deve ser de interesse principalmente para programadores MQL5 novatos.

Cálculo de características integrais das emissões de indicador Cálculo de características integrais das emissões de indicador

Emissões do indicador são uma área pouco estudada da pesquisa de mercado. Isso se deve principalmente à dificuldade de análise que é causada pelo processamento de arrays muito grandes de dados de tempo variável. A análise gráfica existente é um recurso muito intensivo e, portanto, tem provocado o desenvolvimento de um algoritmo parcimonioso que usa série temporal de emissões. Este artigo demonstra como a análise visual (imagem intuitiva) pode ser substituída pelo estudo de características de emissões integral. Isso pode ser de interesse para ambos negociantes e desenvolvedores de sistemas de negociação automatizados.