Versão beta do MetaTrader 5 build 1995: calendário econômico, programas MQL5 como serviços e APIs para linguagem R

 

Na sexta-feira, 15 de fevereiro de 2019, será lançada uma versão atualizada da plataforma MetaTrader 5 no modo beta. 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.

Para atualizar para o novo build 1995 da plataforma MetaTrader 5, basta clicar em "Ajuda \ Verificar Atualizações Desktop \ + Última versão beta":

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

Ela contém as seguintes alterações:

  1. Terminal: calendário econômico embutido totalmente atualizado.

    O Calendário econômico foi desenvolvido propriamente por nós. Mais de 600 indicadores e indicadores das 13 principais economias do mundo estão disponíveis: os EUA, a União Europeia, o Japão, a Grã-Bretanha, o Canadá, a Austrália, a China, etc. Todos os dados são coletados em tempo real a partir de fontes abertas.

    Além de atualizar o conteúdo, filtros de eventos avançados estão disponíveis no calendário: por hora, por prioridade, por moeda e por país.

    Em breve, será exibido o acesso aos dados do calendário a partir de programas MQL5.



  2. Terminal: adicionado um novo tipo de programa MQL5, Serviços. Eles permitem que você crie suas próprias fontes de preços para o terminal, transferindo preços vindos de sistemas externos em tempo real, como fazem os servidores de negociação das corretoras.

    Ao contrário de EAs, de indicadores e de scripts, os serviços não estão vinculados a um gráfico específico. Eles correm em segundo plano e começam a trabalhar automaticamente quando é iniciado o terminal (se eles não foram forçados a parar).

    Para gerenciar serviços, ao Navegador foi adicionada uma subseção:





    Criação de serviços
    Para criar um modelo de serviço, use o item correspondente em Assistente MQL5. Serviços têm um ponto de entrada OnStart semelhante a scripts. Nele, você pode organizar um loop interminável de recebimento e processamento de dados usando funções de rede.

    Inicialização de serviços
    Para iniciar várias cópias de um EA ou indicador com parâmetros diferentes, basta colocá-lo em gráficos diferentes. Isso cria instâncias separadas do programa, que operam independentemente umas das outras. Os serviços não estão vinculados a gráficos, portanto, é fornecido um mecanismo separado para criar suas instâncias.

    Selecione serviço no navegador e clique em "Adicionar serviço" em seu menu de contexto. Uma caixa de diálogo padrão do programa MQL5 é aberta, nela você pode ativar/desativar a negociação e o acesso a sinais, bem como definir parâmetros.




    Para iniciar e parar a instância do serviço, use seu menu. Para gerenciar todas as instâncias, use o menu do próprio serviço.

  3. Terminal: adicionado sistema de educação.

    Agora os iniciantes podem aprender facilmente como trabalhar com a plataforma. Nós adicionamos mais de 100 dicas interativas nas principais funções.

    • As dicas não distraem do trabalho com a plataforma, pois elas são incorporadas na barra de ferramentas na forma de uma barra de progresso.
    • As dicas são exibidas apenas para ações que você ainda não realizou na plataforma.
    • Links interativos são incorporados nas dicas para ir a elementos específicos da interface da plataforma. Por exemplo, diretamente do EA, você pode abrir um diálogo de negociação ou um menu com o comando desejado.

    Conforme você passa pelo treinamento e executa ações na plataforma, a barra de progresso é preenchida.




  4. Terminal: o histórico da conta de negociação pode ser representado como posições — a plataforma coleta dados sobre transações relacionadas à posição (abertura, aumento, fechamento parcial e total) e agrupa esses dados em um único registro. Isso facilita a visualização do horário de abertura e fechamento de posições, seu volume, preço e resultado total. Essa exibição agora também está disponível em relatórios de histórico exportados para arquivos.




  5. Terminal: adicionada uma API para solicitar dados do terminal MetaTrader 5 através de aplicativos usando linguagem R.

    Para o trabalho, preparamos o pacote especial MetaTraderR. Ele contém uma DLL para interação entre o terminal R e o terminal MetaTrader 5, bem como documentação e arquivos auxiliares-r. O pacote está atualmente no processo de registro no repositório CRAN e, em breve, estará disponível para download e instalação.




    Para instalar um pacote, use o seguinte comando:
    R CMD INSTALL --build MetaTraderR
    Atualmente, os seguintes comandos estão disponíveis para consulta de dados:

    • MT5Initialize — inicializa e estabelece uma conexão com o terminal MetaTrader 5. Quando o comando é executado, o terminal é iniciado, se necessário.
    • MT5Shutdown — desinicialização e desconexão do terminal MetaTrader 5.
    • MT5Version — obtém a versão do terminal MetaTrader 5.
    • MT5TerminalInfo — obtém o status e os parâmetros de conexão do terminal ao servidor da corretora (número da conta e endereço do servidor).
    • MT5WaitTerminal — espera de 2 minutos para o terminal MetaTrader 5 se conectar ao servidor da corretora.
    • MT5CopyTicksFrom(symbol, from, count, flags) — copia os ticks com a data especificada no valor especificado. A data é especificada em milissegundos desde 1970.01.01.
    • MT5CopyTicksRange(symbol, from, to, flags) — copia ticks a partir do período de data especificado. A data é especificada em milissegundos desde 1970.01.01.
    • MT5CopyRatesFrom(symbol, timeframe, from, count) — copia as barras de minuto de uma data especificada no valor especificado. A data é indicada em segundos desde 1970.01.01.
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) — copia as barras de minuto de uma posição especificada começando com última barra.
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) — copia barras do período de data especificado. As datas são especificadas em segundos desde 1970.01.01.

    No futuro, a lista de comandos suportados será expandida.

  6. Terminal: otimizado o diálogo fechar posição de negociação usando outra oposta. Agora seu trabalho não diminui com um grande número de posições abertas.
  7. Terminal: corrigidos erros de cálculo de instrumentos sintéticos, o que levava à formação de omissão de dados.
  8. Terminal: agora, ao excluir instrumentos personalizados, são excluídos os arquivos com seu histórico de ticks e de barras. Isso evita o acúmulo de dados não utilizados no disco rígido.
  9. MQL5: corrigido e significativamente acelerado o trabalho com histórico de ticks e de barras.
  10. MQL5: corrigidas e significativamente aceleradas funções para alterar o histórico de ticks e de barras nos instrumentos de negociação personalizados CustomTicks* e CustomRates*.
  11. MQL5: adicionadas novas funções de conversão de dados.

    CharArrayToStruct — copia um array de tipo uchar para uma estrutura POD.
    bool  CharArrayToStruct(
       void&         struct_object,    // estrutura
       const uchar&  char_array[],     // matriz
       uint          start_pos=0       // posição inicial na matriz
       );
    StructToCharArray — copia uma estrutura POD para um array de tipo uchar.
    bool  StructToCharArray(
       const void&  struct_object,     // estrutura
       uchar&       char_array[],      // matriz
       uint         start_pos=0        // posição inicial na matriz
       );

  12. Adicionada a função MathSwap para alterar a ordem dos bytes no valor ushort, uint e ulong.
    ushort MathSwap(ushort value);
    uint   MathSwap(uint   value);
    ulong  MathSwap(ulong  value);

  13. MQL5: adicionadas funções de rede para criar conexões TCP para hosts remotos por meio de soquetes de sistema:

    • SocketCreate — cria um soquete com os sinalizadores especificados e retorna seu identificador
    • SocketClose — fecha o soquete
    • SocketConnect — conecta-se a um servidor com controle de tempo limite
    • SocketIsConnected — verifica se o soquete está conectado no momento
    • SocketIsReadable — obtém o número de bytes que podem ser lidos no soquete
    • SocketIsWritable — verifica se os dados podem ser gravados no soquete no momento atual
    • SocketTimeouts — define os tempos limite para receber e enviar dados para o objeto do sistema de soquete
    • SocketRead — lê dados do soquete
    • SocketSend — grava dados em um soquete
    • SocketTlsHandshake — inicia uma conexão TLS (SSL) segura com o host especificado usando o protocolo TLS Handshake
    • SocketTlsCertificate — obtém informações sobre o certificado usado para proteger a conexão de rede.
    • SocketTlsRead — lê dados de uma conexão TLS segura
    • SocketTlsReadAvailable — lê todos os dados disponíveis a partir de uma conexão TLS segura
    • SocketTlsSend — envia dados por meio de uma conexão TLS segura

    O endereço do host ao qual você está se conectando - usando funções de rede - deve ser explicitamente da lista permitida nas configurações do terminal.
    Para trabalhar com funções de rede, adicionados novos códigos de erro:

    • ERR_NETSOCKET_INVALIDHANDLE (5270) — identificador de soquete inválido passado para a função
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271) — muitos soquetes abertos (máximo de 128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272) — erro de conexão com host remoto
    • ERR_NETSOCKET_IO_ERROR (5273) — erro ao enviar/receber dados para/de um soquete
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274) — erro de estabelecimento de conexão segura (handshake TLS)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — não há informações sobre o certificado protegendo a conexão

  14. MQL5: adicionadas novas funções para trabalhar com strings:

    StringReserve — reserva na memória para o string o buffer do tamanho especificado.
    bool  StringReserve(
       string&        string_var,          // string
       uint           new_capacity         // tamanho do buffer para armazenar a string
       );
    StringSetLength — define para a string o comprimento especificado nos símbolos.
    bool  StringSetLength(
       string&        string_var,          // strings
       uint           new_length           // novo comprimento da string
       );

  15. MQL5: adicionadas novas funções para trabalhar com arrays:

    ArrayRemove — remove o número especificado de elementos da matriz, iniciando no índice especificado.
    bool  ArrayRemove(
       void&         array[],              // matriz de qualquer tipo
       uint          start,                // índice para começar a excluir
       uint          count=WHOLE_ARRAY     // número de elementos
       );
    ArrayInsert — insere o número especificado de elementos do array de origem no array de destino, iniciando no índice especificado.
    bool  ArrayInsert(
       void&         dst_array[],          // array de destino
       const void&   src_array[],          // array de origem
       uint          dst_start,            // índice no array de destino para inserir
       uint          src_start=0,          // índice no array de origem para copiar
       uint          count=WHOLE_ARRAY     //  número de elementos a serem inseridos
       );
    ArrayReverse — inverte o número especificado de elementos no array, iniciando no índice especificado.
    bool  ArrayReverse(
       void&         array[],              // array de qualquer tipo
       uint          start=0,              // índice para começar a inverter o array
       uint          count=WHOLE_ARRAY     // número de elementos
       );

  16. MQL5: às funções CustomRatesUpdate, CustomRatesReplace, CustomTicksAdd e CustomTicksReplace adicionado o parâmetro "uint count" para especificar o número de elementos do array transmitido a ser usado. Por padrão, para o parâmetro, é usado o valor WHOLE_ARRAY. Isso significa que será usado todo o array.
  17. MQL5: adicionada a função CustomBookAdd — transmite o estado do livro de ofertas para o instrumento personalizado. A função permite transmitir um livro de ofertas como se viesse do servidor de uma corretora.
    int  CustomBookAdd(
       const string        symbol,            // nome do símbolo
       const MqlBookInfo&  books[]            // array com descrições de elementos do livro de ofertas
       uint                count=WHOLE_ARRAY  // número de elementos a serem usados
       );
  18. MQL5: adicionada a sobrecarga da função CustomSymbolCreate, permitindo que você crie um instrumento de negociação personalizado com base em um existente. Após a criação, qualquer propriedade de símbolo pode ser alterada para o valor desejado pelas funções correspondentes.
    bool  CustomSymbolCreate(
       const string        symbol_name,       // nome do símbolo personalizado
       const string        symbol_path="",    // nome do grupo em que é criado o símbolo
       const string        symbol_origin=NULL // nome do símbolo em cuja base é criado o símbolo personalizado
       );
    O nome do símbolo - do qual serão copiadas as propriedades do símbolo personalizado criado - é especificado no parâmetro "symbol_origin".

  19. Atualizada a função StringToTime que converte uma string de data/hora em um valor de data e hora. Agora suporta os seguintes formatos de data:

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • yyyy/mm/dd [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  20. MQL5: à enumeração ENUM_TERMINAL_INFO_INTEGER adicionada a propriedade TERMINAL_VPS — sinal de que o terminal está sendo executado em um servidor virtual Hospedagem Virtual MetaTrader (VPS MetaTrader). Se o programa estiver sendo executado em um serviço de hospedagem, você poderá desabilitar todas as suas funções visuais, já que o servidor virtual não possui uma interface gráfica de usuário.
  21. MQL5: à enumeração ENUM_SYMBOL_INFO_INTEGER adicionada a nova propriedade SYMBOL_EXIST — sinal de que existe um símbolo com o mesmo nome.
  22. MQL5: corrigida tipificação ao usar declaração preliminar de uma função de template.
  23. MQL5: adicionada a reinicialização de indicadores ao alterar uma conta de negociação.
  24. MQL5: otimizado o trabalho da função StringSplit.
  25. MQL5: corrigidos erros na biblioteca padrão.
  26. Tester: adicionada a função TesterStop — término antecipado do trabalho um EA em um agente de teste. Agora você pode forçar a interrupção do teste quando for atingido um determinado número de negociações perdedoras, um determinado nível de rebaixamento ou qualquer outro critério.

    O teste concluído com essa função é considerado bem-sucedido. Depois de ser chamado, o terminal recebe o histórico de negociação obtido como resultado de testes, bem como todas as estatísticas de negociação.

  27. Tester: desativado o recurso para testar e otimizar EAs via MQL5 Cloud Network no modo de uso de ticks reais. Este modo pode ser usado somente em agentes locais e farms na rede local.
  28. Tester: aprimorado o trabalho com indicadores para testes visuais. Agora, o gráfico de preços e as linhas de indicadores são desenhados em sincronia, mesmo na velocidade máxima de renderização.
  29. Tester: otimizados e significativamente acelerados teste e otimização.
  30. Tester: corrigida a depuração de indicadores em dados históricos. Agora a função OnInit e OnDeinit dos indicadores podem ser depuradas corretamente.
  31. Tester: acelerado o acesso a dados históricos ao testar EAs em várias moedas.
  32. Tester: corrigidos erros que faziam o testador visual congelar ao depurar dados históricos.
  33. Tester: acelerado início de passagens quando o agente processa o pacote de tarefas.
  34. Tester: alterada a política de distribuição de pacotes de tarefas para agentes de teste. O tamanho do pacote foi aumentado, o que levava a uma redução significativa nos custos indiretos das operações de rede.
  35. Tester: alterado o comportamento da opção de usar agentes locais, de rede e de nuvem. Agora, quando essas opções estão desativadas, as tarefas já emitidas são processadas no final e as novas não são mais emitidas. Anteriormente, essas opções funcionavam de forma semelhante ao comando "Desativar", impedindo o trabalho dos agentes imediatamente.




  36. MetaEditor: adicionado suporte para símbolos não-ANSI no depurador. Agora as expressões observadas são exibidas corretamente, mesmo se o nome da variável for especificado em cirílico.
  37. Adicionada tradução da interface do usuário para o idioma croata.
  38. Documentação atualizada.
A atualização estará disponível através do sistema LiveUpdate.
Razão: