Teste e Otimização de Expert Advisors

5 outubro 2015, 09:15
Michael
0
2 563

Introdução

O artigo fornece uma descrição detalhada do processo de teste e otimização de Expert Advisors no Testador de Estratégia MetaTrader 4, a importância de tais informações e a necessidade desta publicação não pode ser subestimada. Um monte de usuários que iniciam com a plataforma de negociação MetaTrader 4 tem apenas uma idéia muito vaga do como e o que precisa ser feito quando se trabalha com os Expert Advisors.

Quase todos os dias (literalmente) o fórum é lotado com perguntas dos usuários iniciantes sobre como instalar um Expert Advisor no terminal, como começar com um Expert Advisor, o que é otimização e como ela pode ser realizada no Testador de Estratégia do MetaTrader 4, o que é o teste para a frente, etc.

O artigo proposto dá respostas simples e claras para todas essas perguntas e fornece uma abordagem mais profissional para lidar com esses problemas usando um exemplo específico. Com o desdobramento do artigo, você encontrará links para os artigos e páginas do site da MQL4.community para uma familiarização mais profunda e mais detalhada dos processos de teste e otimização relevantes.


Teste e Otimização de Expert Advisors

Vamos considerar os primeiros passos que você precisa dar quando se trabalha com um Expert Advisor. Para fins ilustrativos, vamos ver um Expert Advisor simples - um Expert Advisor de média móvel que nós modificamos. Em contraste com a versão original construída na plataforma de negociação MetaTrader 4, a nossa versão implementa uma abertura posição quando uma linha de média móvel é atravessada pelo preço, na posição de fechamento e quando existe um cruzamento inverso da outra média móvel pelo preço, mas com um período diferente. Nossa versão também foi melhorada com uma função para a abertura de posições nas condições de Execução a Mercado, pois esta modificação de programa tem sido uma grande demanda ultimamente. O código do Expert Advisor é fornecido abaixo:

//+------------------------------------------------------------------+
//|                                      Moving Average_Мodified.mq4 |
//|                      Copyright © 2013, MetaQuotes Software Corp. |
//|                                      Modified by BARS            |
//+------------------------------------------------------------------+
#define MAGICMA  20050610
//-----------------------------------------
extern int     StopLoss           = 500;
extern int     TakeProfit         = 500;
extern double  Lots               = 0.1;
extern double  MaximumRisk        = 0.02;
extern double  DecreaseFactor     = 3;
extern int     MovingPeriod_Open  = 12;
extern int     MovingPeriod_Close = 21;
extern int     MovingShift        = 1;
extern color   BuyColor           = clrCornflowerBlue;
extern color   SellColor          = clrSalmon;
//---
double SL=0,TP=0;
//-- Incluir módulos --
#include <stderror.mqh>
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
//--- Se houver mais de 100 barras no gráfico e o fluxo de negociação é livre
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- Se o tamanho do lote foi calculado e está alinhado com o valor do depósito atual
   if(CalculateCurrentOrders(Symbol())==0)
      CheckForOpen();   // inicar trabalho
   else
      CheckForClose();  // Caso contrário, fechar posições
  }
//+------------------------------------------------------------------+
//| Determina abertura de posições                                   |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
         break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY) buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- retorno do volume de ordens
   if(buys>0)
      return(buys);
   else
      return(-sells);
  }
//+------------------------------------------------------------------+
//| Calcula o tamanho ideal do lote                                  |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal(); // ordens total do histórico
   int    losses=0;              // número de ordens com prejuízos (perdas) sem uma pausa
//---- selecionar o tamanho do lote
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- Número calculado de ordens com prejuízos (perdas) sem uma pausa
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //----
         if(OrderProfit()>0)
            break;
         if(OrderProfit()<0)
            losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- retorno do tamanho do lote
   if(lot<0.1)
      lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Função de abertura da posição                                    |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- negocie apenas os primeiros tiks da nova barra
   if(Volume[0]>1)
      return;
//---- obtenha a Média Móvel 
   ma=iMA(NULL,0,MovingPeriod_Open,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- condições de venda
   if(Open[1]>ma && Close[1]<ma)
     {
      if(StopLoss>0)
         SL=Bid+Point*StopLoss;
      if(TakeProfit>0)
         TP=Bid-Point*TakeProfit;
      res=WHCOrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,SL,TP,"Moving Average",MAGICMA,0,SellColor);
      if(res<0)
        {
         Print("Error when opening a SELL order #",GetLastError());
         Sleep(10000);
         return;
        }
     }
//---- condições de compra
   if(Open[1]<ma && Close[1]>ma)
     {
      SL=0;TP=0;
      if(StopLoss>0)
         SL=Ask-Point*StopLoss;
      if(TakeProfit>0)
         TP=Ask+Point*TakeProfit;
      res=WHCOrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,SL,TP,"Moving Average",MAGICMA,0,BuyColor);
      if(res<0)
        {
         Print("Error when opening a BUY order #",GetLastError());
         Sleep(10000);
         return;
        }
     }
//----
  }
//+------------------------------------------------------------------+
//| Função de fechamento da posição                                  |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//---- negocie apenas os primeiros tiks da nova barra
// (iniciar o trabalho no primeiro tick da nova barra)
   if(Volume[0]>1) return;
//---- obtenha a Média Móvel 
   ma=iMA(NULL,0,MovingPeriod_Close,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- verificar tipo de ordem 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
            OrderClose(OrderTicket(),OrderLots(),Bid,3,BuyColor);     break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
            OrderClose(OrderTicket(),OrderLots(),Ask,3,SellColor);     break;
        }
     }
  }
//+-------------------------------------------------------------------+
//| Abre posições em modo de Execução a Mercado                       |
//+-------------------------------------------------------------------+
int WHCOrderSend(string    symbol,
                 int       cmd,
                 double    volume,
                 double    price,
                 int       slippage,
                 double    stoploss,
                 double    takeprofit,
                 string    comment,
                 int       magic,
                 datetime  expiration,
                 color     arrow_color)
  {
   int ticket=OrderSend(symbol,cmd,volume,price,slippage,0,0,comment,magic,expiration,arrow_color);
   int check=-1;
   if(ticket>0 && (stoploss!=0 || takeprofit!=0))
     {
      if(!OrderModify(ticket,price,stoploss,takeprofit,expiration,arrow_color))
        {
         check=GetLastError();
         if(check!=ERR_NO_MQLERROR)
            Print("OrderModify error: ",ErrorDescription(check));
        }
     }
   else
     {
      check=GetLastError();
      if(check!=ERR_NO_ERROR)
         Print("OrderSend error: ",ErrorDescription(check));
     }
   return(ticket);
  }
//+------------------------------------------------------------------+

Baixe o arquivo anexado do Expert Advisor Moving Average_Мodify . O arquivo baixado deve ser colocado na pasta \MQL4\experts\ do terminal de negociação MetaTrader 4. Por exemplo, se você tem o terminal instalado em C:\Program Files\MetaTrader 4\, você precisará colocar o Expert Advisor no C:\Program Files\MetaTrader 4\MQL4\experts\. Depois desse procedimento, reinicie o terminal.

O arquivo do Expert Advisor - Moving Average_Мodify - deve aparecer no lado esquerdo, na janela Navegador ->Expert Advisors.

Comece o Testador de Estratégia a partir do menu (Ctrl + R) do terminal de negociação MetaTrader 4, Novos passos a seguir (veja a imagem abaixo):


  • A partir do menu drop-down do "Expert Advisor", selecionar nosso expert Moving_Average_Мodify.
  • A partir da lista "Ativo" (símbolo), selecione o par de moedas para os nossos testes, por exemplo, o EURUSD.
  • A partir da lista "Período", selecione o período de tempo, como H1.
  • Marque a opção "Use a data" e defina o intervalo de tempo a ser utilizado em testes e otimização, por exemplo, de 1 de Agosto de 2008 até 1 de maio de 2009. A razão pela qual nós precisamos selecionar 01 de maio, em vez de a data atual (hoje) se tornará claro para você em breve espaço de tempo.
  • A partir da lista "Modelo" selecione a opção no modo "Apenas abertura de preços".

Devemos dizer algumas palavras sobre este modo, os sinais de abertura e fechamento de posições são recebidos somente na abertura da próxima nova barra. Este é o modo de entrada no mercado previsto no algoritmo de operação do nosso Expert Advisor! Mais informações sobre os modos de modelação pode ser encontrado no artigo intitulado "Testador de Estratégia: Modos de Modelagem durante os testes".

Vamos prosseguir aos testes. Por agora, vamos usar os parâmetros padrão nas configurações do Expert Advisor. Clique em "Iniciar" no canto inferior direito do Testador de Estratégia e prepare-se para ver os resultados do teste no final da barra de progresso. Para ver os resultados, abra a guia "Relatório" do Testador de Estratégia. Alternativamente, você pode abrir o gráfico de balanço no teste - a aba gráfico (veja a imagem abaixo).

Infelizmente, os resultados são bastante angustiante. Nosso depósito inicial está de forma constante tendendo a zero... Podemos ver as estatísticas do teste na aba "Relatório". Os usuários novatos podem achar útil o artigo "O Que Significam os Números no Relatório de Teste do Expert ?".


Conclusão: Nosso Expert Advisor não é lucrativo no ativo (símbolo) e no prazo especificado com os parâmetros padrão definidos nas configurações do Expert Advisor. Devemos encontrar os valores de parâmetros que permitirão ao nosso Expert Advisor ser rentável!

Em outras palavras, "otimização significa encontrar os parâmetros para o sistema de negociação selecionado que nos permitirão obter os melhores resultados" (ver o artigo Como Não Cair em Armadilhas da Otimização).

No modo de otimização, o Expert Advisor é repetidamente executado com diferentes variáveis externas que variam de acordo com o esquema definido nas configurações do Expert Advisor. O Testador de Estratégia permite otimizar múltiplos parâmetros simultaneamente. Agora, precisamos definir os parâmetros de otimização. Para fazer isso, clique no botão "Propriedades do expert" (o botão superior direito) e abra primeiro a guia "Testando" e coloque um capital inicial de 1000 USD, em seguida clique na guia "Entradas":


À esquerda, marque as caixas dos parâmetros que vamos otimizar, a coluna "Valor" permanece e vamos configurar demais colunas "Início", "Passo" e "Parar", respectivamente. A imagem mostra os parâmetros que nós estamos otimizando (encontrar):

  • StopLoss - Stop Loss (Início=400 points, Passo=10 points, Parar=1500 points).
  • TakeProfit - nível de preço definido para fechar a posição com lucro
  • MovingPeriod_Open - período da MA para a abertura da posição.
  • MovingPeriod_Close - período MA para o fechamento da posição.

Os valores "Iinício" e "Parar" da otimização são definidos com base no senso comum. Para EURUSD Н1, parece ser bastante razoável definir os valores como mostrado na imagem acima. Por favor, tenha em mente que neste caso, as cotações são de cinco dígitos no terminal MetaTrader 4.

A otimização no modo "Apenas abertura de Preços" é muito rápida. Assim, podemos nos dar ao luxo de otimizar todos os quatro parâmetros selecionados ao mesmo tempo. Feche a janela "Propriedades do expert", clique em "OK" e no Testador de Estratégia marque a caixa "Otimização" no lado direito. Em seguida, clique em "Iniciar" no canto inferior direito do Testador de Estratégia. A otimização está agora em progresso.

Você pode monitorar visualmente o processo utilizando as guias do Testador de Estratégia: "Resultados Otimizados" e "Gráfico de Otimização". Se áreas verdes são exibidas em vez do gráfico de otimização, recomendamos que clique com o botão da direita do mouse sobre as áreas verdes e desmarque a opção "Superfície 2D - Space" na janela que aparece, ou simplesmente acione a tecla "espaço" do seu computador.

Após a conclusão da otimização (quando a barra de progresso atingir o final), abra a guia do Testador de Estratégia, "Resultados da Otimização", e redimensione arrastando sua borda superior para cima. Depois disso, clique na segunda coluna, "Lucro", até organizar os resultados recebidos em ordem decrescente. Nós vamos veremos o seguinte:


Como a imagem sugere, algumas combinações de parâmetros do Expert Advisor resultam num lucro máximo de $ 4.658. No entanto, não vamos ter pressa para definir esses parâmetros em nosso Expert Advisor. Apesar do valor de lucro, o rebaixamento é muito grande! Para começar, devemos usar os resultados para escolher a combinação mais adequada com o lucro máximo e um rebaixamento razoável. É por isso que vamos verificar o passe 2406 com o valor de lucro de $ 2,715 e um rebaixamento relativo mínimo de 19,83% . Uma observação, os seus resultados serão iguais aos do artigo se vc estiver trabalhando no terminal da MetaTrader-demo 4 Alpari e com o histórico atualizado para o EURUSD, mas se não obter o mesmo resultado no seu terminal, com certeza terá um resultado parecido, neste caso busque um % de rebaixamento menor e um lucro razoável na sua otimização.

Clique com o botão direito do mouse sobre essa linha. Será aberta uma janela onde você deve clicar em "Configurar parâmetros de entrada". Quando isso acontece, os parâmetros seleccionados são automaticamente definidas no Expert Advisor. Clique no botão "Iniciar" no canto inferior direito do Testador de Estratégia. Após a conclusão do teste, abra a guia "Relatório" para verificar os resultados do teste.

  • Depósito inicial : 1,000.00
  • Total de Lucro Líquido: 2,705.40
  • Lucro bruto: 7,520.57
  • Perda bruta: -4,815.17
  • Fator de lucro: 1.56
  • Retorno esperado: 15.37
  • Rebaixamento máximo: 413.08 (11.48%)
  • Rebaixamento relativo: 19.88% (399.50)
  • Negociações totais: 176
  • Posições vendidas (ganho em %): 80 (41.25%)
  • Posições compradas (ganho em %): 96 (32.29%)
  • O maior lucro da negociação: 142.10
  • A maior perda da negociação: -87.10
  • Lucro médio da negociação: 117.51
  • Perda média da negociação: -42.99
  • Máximo de vitórias consecutivas (lucro em dinheiro): 4 (567.62)
  • Máximo de derrotas consecutivas (perda de dinheiro): 8 (-310.27)
  • StopLoss=870; TakeProfit=1420; Lots=0.1; MaximumRisk=0.02; DecreaseFactor=3; MovingPeriod_Open=37; MovingPeriod_Close=54; MovingShift=1;


O quanto estáveis são estes resultados? Será que o Expert Advisor negocia em tempo real com os mesmos resultados mostrado no Testador de Estratégia? Estas perguntas podem até certo ponto ser respondidas durante o chamado teste para a frente!

Deixe-me lembrá-lo que temos um conjunto de testes e otimização período de 1 de Agosto de 2008 a 01 de maio de 2009. Nós deliberadamente evitamos a otimização ao longo do intervalo de agosto de 2008 até a data atual, treinando o Expert Advisor no intervalo de tempo especificado. Agora, é hora de fazer um "exame" e ver do que o Expert Advisor é capaz, ou seja, testá-lo com os mesmos parâmetros fora do período de otimização - de 2 de maio a 08 de junho de 2009!

Costuma-se chamar de "teste para a frente", em oposição ao anterior - teste de volta.

Os resultados dos testes para a frente nos permitem mais confiança e objetiva avaliar as perspectivas da negociação em tempo real para o nosso Expert Advisor. Eu não vou deixar você esperando, então vamos executar um teste para a frente, como descrito acima. Para fazer isso, precisamos definir o intervalo de tempo no Testador de Estratégia a partir de 2 de maio de 2009 para apresentar até 8 de junho e clicar em "Iniciar"! Aqui estão os resultados:

  • Depósito inicial : 1,000.00
  • Total de Lucro Líquido: 348.44
  • Lucro bruto: 1,049.34
  • Perda bruta: -700.90
  • Fator de lucro: 1.50
  • Retorno esperado: 8.93
  • Rebaixamento máximo: 287.60 (20.82%)
  • Rebaixamento relativo: 20.82% (287.60)
  • Negociações totais: 39
  • Posições vendidas (ganho em %): 22 (59.09%)
  • Posições compradas (ganho em %): 17 (70.59%)
  • O maior lucro da negociação: 42.00
  • A maior perda da negociação: -89.00
  • Lucro médio da negociação: 41.97
  • Perda média da negociação: -50.06
  • Vitórias consecutivas (lucro em dinheiro): 6 (251.90)
  • Máximo de derrotas consecutivas (perda de dinheiro): 3 (-267.00)


Que resultado surpreendente! Isto é muito raro na primeira execução, foi completamente inesperado. O teste à frente mostrou um lucro muito bom, mas com rebaixamento. O ideal é que as negociações sem lucro resultantes dos maiores valores de rebaixamento devam ser verificadas no gráfico, usando o modo de visualização do Testador de Estratégia, qualquer leitor deste artigo pode repetir os passos descritos acima (em MetaTrader 4 Alpari) e ver por si mesmos que todos os resultados exibidos são completamente justos. Numa outra análise, foi realizado um teste para a frente semelhante com parâmetros de otimização mais lucrativos e de maior rebaixamento (3061 e 771,95), onde no final produziram resultados muito piores.

Uma avaliação mais objetiva do desempenho do Expert Advisor requer uma série destes testes para a frente, sendo executados através de dados históricos. Uma boa e clara descrição de todas as medidas necessárias e de avaliação geral dos resultados é descrita no artigo "Expert Advisors Baseados em Sistemas Populares de Negociação e Alquímia de Otimização de Robô de Negociação".

Aqui, temos o objetivo de familiarizar os leitores com os primeiros passos básicos para trabalhar com Expert Advisors. Vamos voltar ao valor de rebaixamento visto ao executar o teste para a frente, o gráfico sugere que o rebaixamento ocorreu após 18 de maio de 2009 - operações de 18 a 20. Vamos tentar acompanhar esta situação no modo de visualização do Testador de Estratégia, e alterar no campo "Modelo" para "Cada tick", a fim de termos um maior clareza. O modo de visualização nos permite controlar a velocidade do tempo, definir a data para 18 de maio de 2009 e clicar em "Iniciar".

Isto é o que podemos ver na parte deficitária dos dados históricos:

O rebaixamento significativo foi causado por três operações consecutiva de posição VENDIDA nos Stop Loss. As entradas não estavam na direção da tendência, expondo imediatamente a principal desvantagem do nosso Expert Advisor: o algoritmo de operação é muito primitivo. Temos de adicionar pelo menos um filtro de tendência de base e/ou separar o mecanismo de entrada para a negociação de compra e de vendas numa mesma maneira, mais ou menos como foi sugerido no artigo "Negociação Automatizada Fora do Padrão". No entanto, estas questões saem fora do âmbito deste artigo.


Conclusão

Nós descrevemos as práticas de trabalho básicos para testar e otimizar um Expert Advisors no Testador de Estratégia, Para uma maior compreensão e uma maior experiência com esses testes, você pode verificar os artigos "Como Implementar Seus Próprios Critérios de Otimização" e "Otimização e Testes Fora da Amostra".

Como conclusão, vamos considerar algumas das perguntas mais freqüentes que os novos usuários geralmente fazem ao testar EAs.

1. O que causa a diferença nos resultados dos mesmos testes em diferentes Centros de Negociação (corretoras)?

A diferença nos resultados dos testes em diferentes Centros de negociação é causada por diferenças de cotação, cada corretora tem suas próprias fontes de alimentação da cotação. Isto dá origem a diferenças de preços e reflete nos resultados dos testes.

2. Por que os mesmos testes executados no mesmo Centro de Negociação produzem resultados diferentes?

Diferentes resultados obtidos no mesmo Centro de Negociação podem ser causados por várias razões, sendo uma a mais comum:
Spread flutuante - o spread tem um forte impacto sobre os resultados, especialmente quando o teste é realizado em timeframes e no modo CADA TICK. O Testador de Estratégia do MetaTrader 4 armazena o último valor do spread, o spread pode mudar na próxima execução e o resultado do teste em conSequência será diferente.

3. O que causa a diferença de resultados ao testar no modo "cada tick" em relação ao modo "apenas abertura de preços" ?

O Expert Advisor funciona com base em ticks, ele recebe e analisa os dados em cada tick, ao trabalhar com base nos preços de abertura, obtém dados e envia sinais apenas na nova barra, com todas as consequências advindas... Conclusão: É essencial determinar como o Expert Advisor funciona e começar o Testador de Estratégia no modo apropriado.

4. Por que não existe posições abertas pelo Expert Advisor?

Primeiro, você deve abrir o diário do Testador de Estratégia. Ele irá exibir um possível código de erro. A interpretação de código pode ser encontrado na seção Códigos de erro.

Esperamos que este artigo tenha respondido a muitas perguntas dos usuários iniciantes na plataforma de negociação MetaTrader 4. Os usuários novatos têm a oportunidade de ganhar um pouco de experiência, executando (repetição) os passos descritos acima por conta própria e obtendo a habilidade essencial para futuros experimentos!

O artigo foi preparado utilizando os materiais referenciados no texto, assim como as informações a partir da página do site de I.Kim, Como executar um Expert Advisor? .

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

Arquivos anexados |
Lite_EXPERT2.mqh: Exemplos da implementação do Expert Advisor Lite_EXPERT2.mqh: Exemplos da implementação do Expert Advisor

Neste artigo, o autor continua a familiarizar os leitores com as funções do Lite_EXPERT2.mqh, usando exemplos reais da aplicação do Expert Advisor. O artigo lida com a idéia de usar ordens pendentes flutuantes e ordens pendentes que variam dinamicamente de negócio para negócio, determinados com base nos valores do indicador Average True Range (ATR).

Métodos Simples de Previsão das Direções das Velas Japonesas (Candles) Métodos Simples de Previsão das Direções das Velas Japonesas (Candles)

Sabendo a direção do movimento do preço é o suficiente para a obtenção de resultados positivos nas operações de negociação. Algumas informações sobre a possível orientação do preço podem ser obtidas a partir das Velas Japonesas (candles). Este artigo trata de algumas abordagens simples para prever a direção Velas Japonesas (candles).

Gráficos Off-line no Novo MQL4 Gráficos Off-line no Novo MQL4

A atualização MQL4 tem um novo formato para armazenar dados históricos e fornecer a estrutura MqlRates apropriada para o armazenamento conveniente dos valores Time, Open, Low, High, Close e Volume. Por muitos anos, os traders têm desenvolvido seus aplicativos MQL4 que coletam e armazenam seus dados em arquivos HST para gerar gráficos off-line e nós garantimos que todos os arquivos compilados anteriormente (EX4) irão trabalhar no novo terminal MetaTrader 4 da mesma forma que antes.

Estrutura de Dados no Terminal MetaTrader 4 Versão 600 e Superior Estrutura de Dados no Terminal MetaTrader 4 Versão 600 e Superior

MetaTarder 4 Versão 600 apresenta a nova estrutura e localização dos arquivos no terminal do cliente. Os aplicativos MQL4 são colocados em diretórios separados de acordo com o tipo de programa (Expert Advisors, indicadores ou scripts). Na maioria dos casos, os dados do terminal estão agora armazenados numa pasta especial separada do local da instalação do terminal. Neste artigo vamos descrever em detalhes como os dados são transferidos, bem como as razões para a introdução do novo sistema de armazenamento.