MetaTrader 5 build 1860: funções para trabalhar com barras em MQL5 e melhorias no testador de estratégias

O que há de novo na MetaTrader 5?

15 junho 2018

Terminal

  1. 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. Adicionada a exibição de valores de Stop Loss e Take Profit ao histórico de transações. Para as transações de entrada e reversão, elas são definidas de acordo com os valores das ordens Stop Loss e Take Profit, como resultado de que foram executadas. Para transações de saída, os valores de Stop Loss e Take Profit das respectivas posições são usados ​​no momento de seu fechamento. O último permite que você salve e exiba informações sobre o valor do Stop Loss e Take Profit na posição no momento em que foi fechada. Antes disso, tais informações não eram armazenadas em nenhum lugar, uma vez que a posição após o fechamento desaparece e o histórico de posições no terminal é formado com base em transações.




  3. Adicionada a exibição de valores de Stop Loss e Take Profit ao histórico de posições. Eles são preenchidos de acordo com o valor das transações Stop Loss e Take Profit que abrem e fecham as posições correspondentes.




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




  5. Otimizada e significativamente acelerada a exibição do livro de ofertas no modo avançado com exibição de spread ativada.
  6. 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. 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. Corrigida a colocação de volume mínimo e volume máximo, bem como o passo do volume nas propriedades de instrumentos personalizadas.
  9. 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. Corrigido um erro que, em alguns casos, levava à coleta incorreta do histórico de ticks.

MQL5

  1. 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 1860 e superior não serão iniciados nos terminais anteriores à versão 1860. Neste caso, os programas compilados nas versões anteriores do MetaEditor funcionarão nos novos terminais.

  2. 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 de timeseries
       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 de timeseries
       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
       );
  3. 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
       );
  4. Adicionada a geração do evento CHARTEVENT_CLICK so clicar nos níveis de negociação do gráfico.
  5. Corrigido e otimizado o trabalho das funções CopyTicks.
  6. Corrigido o valor dado pelas funções SymbolInfoDouble para a propriedade SYMBOL_TRADE_LIQUIDITY_RATE.
  7. Corrigido o erro ao copiar matrizes de string com uma área de memória sobreposta.
  8. Corrigido o erro de alocação de matriz de string na função FileReadArray.
  9. Corrigidos vários erros na biblioteca MQL5 padrão.

Tester

  1. 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".

  2. Adicionado a capacidade de especificar manualmente a moeda de depósito e o tamanho da alavancagem para teste e otimização. Anteriormente, a moeda de depósito era definida de acordo com a conta atual conectada. Assim, para alterá-lo, o usuário tinha que mudar para outras contas. O tamanho da alavancagem só podia ser selecionada numa lista predefinida, agora você pode especificar qualquer valor.

    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.




  3. 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.

MetaEditor

  1. Otimizado e acelerado o trabalho com o repositório de dados MQL5 Storage.
  2. Corrigido a retomada de depuração após a suspensão no arquivo MQH.
  3. Corrigidos erros no destaque do código-fonte no editor.
  4. Corrigido o erro de transição nos resultados de pesquisa.
  5. 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.

Documentação atualizada.