Visualizar uma estratégia no Tester do MetaTrader 5

MetaQuotes | 21 janeiro, 2014

Todos conhecemos o ditado "é melhor ver uma vez do que ouvir cem vezes". Você pode ler diversos livros sobre Paris ou Veneza, mas com base nas imagens mentais, você não teria os mesmos sentimentos do que se estivesse caminhando à noite por essas cidades fabulosas. A vantagem da visualização pode ser facilmente projetada em qualquer aspecto de nossas vidas, incluindo trabalho no mercado, por exemplo, a análise de preço em gráficos utilizando indicadores e, é evidente, a visualização de teste de estratégia.


Será que todos conhecem as possibilidades do provador de estratégia?

A prática demonstra que nem todos conhecem. A vantagem da plataforma de negociação MetaTrader 5 em relação aos seus concorrentes não é somente uma interface mais conveniente e de fácil utilização, amplas oportunidades do terminal e MQL5, um provador de múltiplas moedas com possibilidade de computação em nuvem através do uso da Rede MQL5 em nuvem e muitas outras opções. A vantagem é também que todas as ferramentas requeridas por um negociador estão disponíveis em apenas um local.

O objetivo deste artigo é mostrar aos negociadores mais um recurso importante entre todas as possibilidades do MetaTrader 5 - ou seja, a visualização de teste de estratégia e otimização. A análise do comportamento de um Expert Advisor em dados históricos e a seleção dos melhores parâmetros não é apenas uma análise trabalhosa de figuras, balanço, participação, etc. Sente-se em uma cadeira, relaxe, coloque os seus óculos "3D" e vamos começar.


E eu penso comigo, que mundo maravilhoso de gráficos...

Ao publicar Expert Advisors na Base de códigos ou no Mercado, os autores geralmente anexam um relatório estatístico sobre o teste deles, bem como os gráficos de balanço e participação. Entretanto, gráficos mais interessantes estão disponíveis nas estatísticas da aba "Resultados" do provador de estratégia:

Gráficos dos resultados de teste

Com base nesses gráficos, você pode analisar os meses, dias ou horas em que o seu EA realiza as melhores negociações quando ele entra ativamente no mercado. Você também pode avaliar a performance do EA em termos de saber se as posições lucrativas estão fechadas no horário adequado, se o EA resiste a perdas com base nos gráficos de distribuição da MFE (Excursão Favorável Máxima) e da MAE (Excursão Adversa Máxima).

Gráficos de distribuição MFE/MAE

Ao rolar os resultados do teste para baixo, você encontrará outro gráfico:

Distribuição de lucros e período de retenção de posição

O diagrama mostra a dependência do lucro da posição em relação a sua vida útil. Este diagrama será muito útil para o próximo Campeonato de negociação automatizada (ATC) 2012. Uma das regras do ATC proíbe venda com ágio. Teste o seu Expert Advisor e certifique-se de que ele está de acordo com as regras.


Um filme histórico ou teste visual

Um dos recursos revolucionários do provador de estratégia é o modo de teste visual. A análise de negociações por datas, desenho de gráficos e outros procedimentos de rotina "interessantes" é um processo bastante complicado. Entretanto, é como se o provador de estratégia estivesse lhe oferecendo um controle remoto. Você aperta "play" e assiste a um filme histórico. Você pode fazer com que o filme passe mais devagar ou mais rápido, parar ele e analisar a situação. Em tempo real, você visualiza como os gráficos são construídos com base em dados históricos simulados e como o Expert Advisor responde às mudanças de preço.


O visualizador suporta múltiplas moedas totalmente, assim como o provador de estratégia. O Expert Advisor do vídeo utiliza 4 pares de moedas para a negociação. Todos os preços simulados estão disponíveis em "Market Watch" e nos gráficos.


Resultados da otimização em 2D

Antes de introduzirmos a imagem tridimensional que se tornou muito popular entre os fabricantes de aparelhos de televisão, observe a visualização em 2D no provador de estratégia. Os retângulos, que podem parecer estranhos à primeira vista, permitem que você visualize a influência mútua de dois parâmetros de otimização no critério de otimização (em nosso caso, é o valor máximo do balanço). Quando mais escuro o tom de verde, maior é o balanço:

Resultados da otimização em 2D

Percebemos que a relação tem o aspecto de onda e que o resultado máximo é obtido mediante o uso dos valores médios do período e da mudança da média móvel. Estes são os resultados da otimização do EA Moving Average, que está disponível no pacote de distribuição padrão do terminal. Mesmo aqui, você pode encontrar algo interessante.


Agora em 3D

Uma imagem tridimensional proporciona opções de visualização ainda melhores. Abaixo, você pode analisar a mesma dependência entre os dois parâmetros e o resultado final. Você pode mudar para este modo avançado utilizando o menu de contexto da aba Gráfico de otimização.

Resultados da otimização em 3D

Após a otimização tridimensional ter aparecido no Strategy Tester do MetaTrader 5, os negociadores começaram a publicar os seus próprios exemplos de visualização de cálculos matemáticos no fórum:

Gráficos tridimensionais são totalmente interativos - você pode aproximar ou afastar a visualização, girar para um ângulo conveniente, etc. Uma característica importante é que qualquer resultado de teste e otimização pode ser exportado como imagens ou relatórios XML/HTML.


Visualizar otimização

E, finalmente, bem vindo - trabalhe com os resultados de otimização! Para processar os resultados, o negociador precisa preparar dados, baixá-los e processá-los em algum local. Agora você pode fazer isso no próprio local durante a otimização! Para demonstrar esta possibilidade, precisamos de vários arquivos de cabeçalho que implementam os exemplos mais simples desse processamento.

Faço o download dos arquivos MQH anexos abaixo e salve eles no arquivo MQL5\Include. Selecione qualquer Expert Advisor e copie este bloco ao final do código dele:

//--- Add a code for working with optimization results
#include <FrameGenerator.mqh>
//--- timeframes generator
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- Insert here your own function for calculating the optimization criterion
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- Call at each end of testing and pass the optimization criterion as a parameter
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- Prepare the chart to show the balance graphs
   fg.OnTesterInit(3); //The parameter sets the number of balance lines on the chart
  }
//+------------------------------------------------------------------+
//| TesterPass function                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- Process the testing results and show the graphics
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit function                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- End of optimization
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Handling of events on the chart                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   //--- Starts frames after the end of optimization when clicking on the header
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 is a pause between frames in ms
  }
//+------------------------------------------------------------------+

Nós utilizamos o Expert Advisor Moving Averages.mq5 disponível no pacote de entrega padrão. Cole o código e salve o Expert Advisor como Moving Averages With Frames.mq5. Faça a compilação e execute a otimização.


Assim, os negociadores agora podem executar a otimização visual e processar os resultados ou exibir as informações requeridas durante o processo de otimização.


Você quer mais?

Continuamos expandindo as possibilidades da plataforma de negócio do MetaTrader 5 adicionando ferramentas novas para ajudar os negociantes. Publique os seus comentários e compartilhe suas ideias sobre como melhorar ainda mais a visualização no provador de estratégia. Tentaremos implementar as sugestões mais interessantes e úteis.


Como usar os arquivos

Todos os arquivos com a extensão .mqh devem ser colocados na pasta MQL5\Include, que é onde o compilador buscará por eles ao compilar o Expert Advisor Moving Average_With_Frames.mq5. Os arquivos do EA podem ser colocados no próprio MQL5\Experts ou em qualquer de seus subdiretórios.

Inicie você mesmo os Expert Advisors anexos no Strategy Tester do MetaTrader 5 para tornar a leitura deste artigo ainda mais interessante. Temos certeza de que você irá gostar.