Versão beta do MetaTrader 5 build 1845: Funções para trabalhar com barras em MQL5 e melhorias no testador de estratégias

 

Versão beta do MetaTrader 5 build 1845: Funções para trabalhar com barras em MQL5 e melhorias no testador de estratégias

Na sexta-feira, 8 de junho de 2018, será lançada uma versão atualizada da plataforma MetaTrader 5 no modo beta. Vamos atualizar nosso servidor MetaQuotes-Demo, localizado no servidor access.metatrader5.com:443. Convidamos todos os traders a testar a nova versão da plataforma para experimentar todas as suas possibilidades e ajudar os desenvolvedores a corrigir os erros encontrados.

A fim de atualizar para o build 1845 da plataforma MetaTrader 5, basta se conectar ao servidor access.metatrader5.com:443.

Após a etapa do teste beta, será lançado o novo build final da nova plataforma MetaTrader 5.

Esta atualização da plataforma estará disponível apenas para terminais funcionando no Windows 7 e posterior. Versões anteriores do Windows não são suportadas.
Ela contém as seguintes alterações:
  1. Terminal: completamente redesenhado a caixa de diálogo de abertura de conta. Agora você primeiro seleciona a corretora de interesse e, em seguida, o tipo de conta que deseja abrir. Graças a isso, a lista de corretores se tornou mais compacta, uma vez que agora exibe nomes de empresas, em vez de mostrar todos os servidores disponíveis.

    Também para facilitar a busca, à lista foram adicionados logotipos de empresas. Se a corretora desejada não estiver na lista, basta digitar o nome da empresa ou o endereço do servidor na caixa de pesquisa e clicar em "Encontrar sua corretora".




    Para ajudar traders inexperientes, à caixa de diálogo foram adicionadas as descrições dos tipos de conta. Além disso, devido à atualização da General Data Protection Regulation (GDPR), ao abrir uma conta, agora podem ser exibidos os links para vários contratos e políticas de empresas corretagem:




    As possibilidades de abertura de contas reais foram significativamente expandidas. A função de upload documentos para confirmar a identidade e o endereço, anteriormente existente em terminais móveis, agora está disponível na versão desktop. Corretoras regulamentadas pelo MiFID podem agora solicitar todas as informações necessárias para a identificação do cliente, incluindo dados sobre emprego, renda, experiência comercial, etc. Tudo isso facilitará e agilizará a obtenção de contas reais, além de livrá-lo de burocracia desnecessária.





  2. MQL5: aumentada a velocidade de trabalho de programas MQL5, graças à otimização adicional do código-fonte durante a compilação. Para aumentar a velocidade, recompile seus programas na nova versão do MetaEditor.
    Infelizmente, a otimização adicional levou à perda de compatibilidade dos novos programas com versões anteriores do terminal. Todos os programas compilados no MetaEditor versão 1845 e superior não serão iniciados nos terminais anteriores à versão 1845. Neste caso, os programas compilados nas versões anteriores do MetaEditor funcionarão nos novos terminais.

  3. MQL5: adicionadas as funções iTime, iOpen, iHigh, iLow, iClose, iVolume, iBars, iBarShift, iLowest, iHighest, iRealVolume, iTickVolume, iSpread. Essas funções são semelhantes àquelas usadas em MQL4. Assim, será mais fácil para os usuários transferir o código de programas de negociação para a plataforma de quinta geração.

    Anteriormente, a maioria das tarefas resolvidas por essas funções podiam ser executada facilmente usando as funções Copy *. No entanto, para encontrar os valores máximo/mínimo no gráfico e para procurar as barras segundo o tempo, o usuário tinha que implementar suas próprias funções. Agora pode ser facilmente executado usando as funções iHighest, iLowest e iBarShift.

    iTime
    Retorna o valor do tempo de abertura da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    datetime  iTime(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iOpen
    Retorna o valor do preço de abertura da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    double  iOpen(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iHigh
    Retorna o valor do preço máximo da barra (especificado pelo parâmetro shift) do gráfico correspondente.
    double  iHigh(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iLow
    Retorna o valor do preço mínimo da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    double  iLow(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iClose
    Retorna o valor do preço de fechamento da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    double  iClose(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iVolume
    Retorna o valor do volume do tick (especificado pelo parâmetro shift) do gráfico correspondente.
    long  iVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iBars
    Retorna o número de barras - no histórico - do símbolo e do período correspondentes.
    int  iBars(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe        // período
       );

    iBarShift
    Busca de barra pelo tempo. A função retorna o índice da barra na qual coincide o tempo especificado.
    int  iBarShift(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       datetime         time,            // tempo
       bool             exact=false      // modo
       );

    iLowest
    Retorna o índice do menor valor encontrado (deslocamento em relação à barra atual) do gráfico correspondente.
    int  iLowest(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              type,            // identificador das séries temporais
       int              count,           // número de elementos
       int              start            // índice
      );

    iHighest
    Retorna o índice do maior valor encontrado (deslocamento em relação à barra atual) do gráfico correspondente.
    int  iHighest(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              type,            // identificador das séries temporais
       int              count,           // número de elementos
       int              start            // índice
      );

    iRealVolume
    Retorna o valor do volume real da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    long  iRealVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iTickVolume
    Retorna o valor do volume do tick (especificado pelo parâmetro shift) do gráfico correspondente.
    long  iTickVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

    iSpread
    Retorna o valor do spread da barra (indicado pelo parâmetro shift) do gráfico correspondente.
    long  iSpread(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // período
       int              shift            // deslocamento
       );

  4. Terminal: agora, ao exibir ordens pendentes no gráfico, é usado o volume atual da ordem, em vez de implementar o solicitado inicialmente.




  5. Terminal: otimizada e significativamente acelerada a exibição do livro de ofertas no modo avançado com exibição de spread ativada.
  6. Terminal: otimizado o processamento de resultados de execução de pedidos de negociação. Em alguns casos, isso pode dar uma aceleração significativa de processamento.
  7. Terminal: corrigido o erro de funcionamento do Trailing Stop, em alguns casos levando ao envio de várias solicitações para alterações no nível de Stop Loss numa posição.
  8. Terminal: corrigida a colocação de volume mínimo e volume máximo, bem como o passo do volume nas propriedades de instrumentos personalizadas.
  9. Terminal: corrigido um erro devido ao qual a opção "Fixar a escala" não era levada em conta ao aplicar a escala ao gráfico do instrumento de negociação.
  10. Terminal: corrigido um erro que, em alguns casos, levava à coleta incorreta do histórico de ticks.
  11. MQL5: adicionada a função TesterHideIndicators. Especifica o modo de exibir/ocultar os indicadores usados ​​no EA. A função se destina a controlar a visibilidade dos indicadores utilizados apenas durante o teste. Especifique o sinalizador true se você quiser ocultar os indicadores que estão sendo criados, caso contrário, false.
    void  TesterHideIndicators(
       bool      hide     // sinalizador
       );
  12. MQL5: adicionada a geração do evento CHARTEVENT_CLICK so clicar nos níveis de negociação do gráfico.
  13. MQL5: corrigido e otimizado o trabalho das funções CopyTicks.
  14. MQL5: corrigido o valor dado pelas funções SymbolInfoDouble para a propriedade SYMBOL_PROP_LIQUIDITY_RATE.
  15. MQL5: corrigido o erro ao copiar matrizes de string com uma área de memória sobreposta.
  16. MQL5: corrigido o erro de alocação de matriz de string na função FileReadArray.
  17. MQL5: corrigidos vários erros na biblioteca MQL5 padrão.
  18. Tester: completamente atualizado o sistema para trabalhar com o cache de otimização. O cache é os dados sobre as passagens de otimização calculados anteriormente. O testador de estratégias os armazena para retomar a otimização após uma pausa e para não recalcular as passagens de teste já calculadas.

    Mudanças no formato de armazenamento em cache
    Anteriormente, o cache de otimização era armazenado como um único arquivo XML, que incluía todas as passagens de otimização do EA com as configurações de teste especificadas. No mesmo arquivo os resultados da otimização eram obtidos com diferentes parâmetros de entrada.
    Agora, o cache de otimização é armazenado como arquivos binários separadamente para cada conjunto de parâmetros otimizados. Alterando o formato e reduzindo o tamanho dos arquivos, foi significativamente acelerado o trabalho do testador com o cache de otimização. Essa aceleração será especialmente notável com a continuação da otimização suspensa anteriormente.

    Visualização dos resultados das otimizações realizadas anteriormente
    Agora você pode ver os resultados de otimizações anteriores diretamente no testador de estratégias, sem analisar enormes arquivos XML em programas de terceiros. Clique na guia "Resultados de otimização", selecione o EA e o arquivo com o cache de otimização:



    A lista exibe todos os arquivos de cache de otimização que estão no disco para o Expert Advisor selecionado. Para cada arquivo são mostrados a data de otimização, configurações de teste (símbolo, timeframe, datas), bem como informações sobre os parâmetros de entrada. Além disso, você pode filtrar os resultados da otimização no servidor de negociação no qual eles são recebidos.

    Recálculo do critério de otimização em tempo real
    O critério de otimização é um determinado indicador cujo valor determina a qualidade de um conjunto testado de parâmetros de entrada. Quanto maior o valor do critério de otimização, melhor será avaliado o resultado do teste com tal conjunto de parâmetros.

    Anteriormente, ao otimizar, era calculado apenas um critério selecionado antes da otimização. Agora, ao visualizar os resultados, você pode alterar o critério de otimização em tempo real, o testador de estratégia recalculará automaticamente todos os valores.




    Como usar o cache de otimização manualmente
    Anteriormente, o cache de otimização era armazenado como um arquivo XML que podia ser aberto e analisado em programas de terceiros. Agora ele é armazenado em arquivos binários fechados. Para obter dados no formato XML, exporte-os por meio do menu de contexto da guia "Resultados de otimização".

  19. Tester: adicionado a capacidade de especificar manualmente a moeda de depósito e o tamanho da alavancagem para teste e otimização. Anteriormente, esses parâmetros eram definidos de acordo com a conta atual conectada. Assim, para mudá-los, o usuário tinha que mudar para outras contas.

    Observe que, para testes corretos, na conta devem estar disponíveis os pares de moedas para conversão de lucros e margens na moeda de depósito especificada.




  20. Tester: removido o banimento do uso de OpenCL em agentes de teste. Anteriormente, os dispositivos OpenCL só podiam ser usados ​​ao testar em agentes locais. Agora, os agentes podem usar todos os dispositivos OpenCL disponíveis (processador, placa de vídeo) ao trabalhar na rede local e na MQL5 Cloud Network.
  21. MetaEditor: otimizado e acelerado o trabalho com o repositório de dados MQL5 Storage.
  22. MetaEditor: corrigido a retomada de depuração após a suspensão no arquivo MQH.
  23. MetaEditor: corrigidos erros no destaque do código-fonte no editor.
  24. MetaEditor: corrigido o erro de transição nos resultados de pesquisa.
  25. MetaEditor: corrigida a substituição massiva de texto. Em alguns casos, era substituída apenas a primeira ocorrência da sequência substituída, em vez de todas.
  26. Documentação atualizada.

A atualização estará disponível através do sistema LiveUpdate.