MetaTrader 5 Build 1200: Recebendo o Histórico de Tick e Pagamento Direto pelos Serviços

O que há de novo na MetaTrader 5?

23 outubro 2015

Terminal

  1. Implantado a condição de trabalhar com o histórico de tick na Observação do Mercado. Anteriormente um gráfico de tick mostrava apenas o histórico coletado no terminal durante o seu funcionamento. Agora você poderá acessar todo o histórico de tick no servidor de negociação. Desative a rolagem automática e inicie a rolagem do gráfico de tick voltando no tempo, usando o mouse para fazer o download do histórico anterior a partir do servidor de negociação, da mesma forma como é feito nos gráficos de preços comuns. O novo recurso será útil para os traders que desejam obter os gráficos mais detalhados dos preços.



    A função CopyTicks() é usada para receber um histórico de tick mais detalhado, ela foi modificada para chamar o histórico anterior e baixando-o se estiver presente no servidor de negociação.

  2. Implementado um ícone para rápida abertura/fechamento do Livro de Ofertas (Profundidade do Mercado). O ícone está localizado perto do painel de Negociação a Um Clique no gráfico. Você também pode usar a nova tecla de atalho Alt+B. A tecla de atalho também funciona na Janela da Observação do Mercado para abertura do Livro de Ofertas (Profundidade do Mercado) mediante qualquer símbolo (ativo) selecionado.




  3. informações sobre as características de hardware do PC e do sistema operacional estão agora disponíveis no ínicio do Diário do terminal do cliente. Exemplo:
    2015.10.14 14:48:18.486 Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486 Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486 MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)

  4. Foi aprimorada a execução com os símbolos (ativos) na janela da Observação do Mercado:

    • Implementada a exibição da quantidade de símbolos (ativos) na janela da Observação do Mercado e a quantidade total de símbolos (ativos) disponíveis no servidor de negociação.
    • Implementado uma linha para adicionar um novo símbolo com a lista de seleção inteligente.
    • A busca da nova linha do símbolo (ativo), além do próprio nome, é também realizada pela sua descrição e nome internacional.




  5. Implementado o suporte do calendário econômico em diferentes idiomas.
  6. Adicionado ícones dos países que estão faltando no calendário econômico.
  7. Adicionado a tecla de atalho para abrir a janela de gerenciamento dos símbolos (ativos) na Observação do Mercado - Ctrl+U.
  8. Corrigido a organização das janelas abertas no gráfico de acordo com os comandos de menu Janela.
  9. Corrigido um erro que ocasionalmente prejudicava a capacidade do terminal em encontrar um arquivo certificado ao usar a autenticação avançada.
  10. Corrigido um erro em relação a sincronização do histórico que eventualmente poderia levar a repetição da mesma dentro do programa (looping).
  11. Corrigido a situação onde os níveis de StopLoss/TakeProfit eram anulados de uma posição aberta previamente após o volume dela ser aumentado, quando um símbolo (ativo) era negociado no modo Solicitação de Execução.
  12. Corrigido a colocação de uma posição vendida quando o modo de negociação dos símbolos (ativos) no Livro de Ofertas (Profundidade do Mercado) era "Apenas Comprar."
  13. Corrigido a função de operação do Trailing Stop. Em alguns casos raros, um Stop Loss era movido incorretamente para uma posição aberta.
  14. A interface do terminal foi adaptado para telas de alta resolução (4K).
  15. Corrigido o descarregamento dos dados históricos com sendo excessivos, a pesar das solicitações regulares dos mesmos nos programas MQL5.
  16. Corrigida a exibição de alguns elementos da interface do usuário ao trabalhar com Windows 10.
  17. Atualizado as traduções da interface do usuário.

Mercado

  1. A operação com o banco de dados do produto no mercado MQL5 foi revista e otimizada.
  2. Compras sem uma conta na Comunidade MQL5 foram desativadas nos terminais instalados em VPS. Para comprar agora é exigido a especificação de uma conta na Comunidade MQL5 configurada no terminal: Ferramentas - Opções - Comunidade.
  3. Adicionado compra de produtos usando o sistema UnionPay.
  4. Registro avançado ao comprar produtos no Mercado MQL5.


Hospedagem e sinais

  1. Pagamentos pela Hospedagem Virtual e assinaturas de Sinais poderão ser transferidos diretamente dos sistemas de pagamento.

    Para pagamento dos serviços de hospedagem, os usuários não precisam acessar a conta da Comunidade MQL5 e creditar dinheiro nela. O pagamento de um serviço poderá ser transferido diretamente da plataforma usando um dos sistemas de pagamento disponíveis.



    Escolha um dos sistemas disponíveis para fazer uma transferência de dinheiro online:




    Da mesma forma, o pagamento de uma assinatura de sinal de negociação poderá ser realizado diretamente do terminal através de um sistema de pagamento.




    Primeiramente o montante necessário será transferido para sua conta na Comunidade MQL5, a partir de então, um pagamento do serviço será realizado. Assim, você mantém uma histórico claro e unificado das locações das plataformas de hospedagem virtuais e assinaturas de sinais, podendo facilmente acessar e revisar todos os seus pagamentos aos serviços na Comunidade MQL5.
  2. Corrigida a migração das configurações de exportação FTP na hospedagem virtual, independentemente da permissão para publicar relatórios via FTP.
  3. Implentado um gerenciameno da hospedagem virtual (exceto para a migração) ao trabalhar na versão do terminal do cliente de 32 bits.

MQL5

  1. Desenvolvido um novo compilador de otimização. A execução de programas foi acelerado em até 5 vezes com uma plataforma de 64 bits. Os Programas MQL5 devem ser recompilados na última versão do MetaEditor.
  2. Formato extendido da estrutura MqlTick. Agora, a transmissão do tempo de chegada de um tick é em milissegundos, bem como as flags para determinar qual parâmetro de tick foi alterado.
    struct MqlTick
      {
       datetime     time;          // Tempo da última atualização do preço
       double       bid;           // Preço Bid em tempo real (atual)
       double       ask;           // Preço Ask em tempo real (atual)
       double       last;          // "Last" Preço em tempo real (último preço atual)
       ulong        volume;        // Volume do "Last" preço em tempo real (atual)
       long         time_msc;      // Tempo do "Last" preço atualizado em  milissegundos
       uint         flags;         // Flags de tick 
      };
    Os parâmetros de cada tick são preenchidos independentemente se existem alterações comparadas com o tick anterior. Assim, é possível descobrir o preço correto para qualquer momento no passado, sem a necessidade de procurar os valores anteriores do histórico do tick. Por exemplo, mesmo que apenas altere o preço Bid durante a chegada do tick, a estrutura ainda contém outros parâmetros, bem como incluindo o preço Ask anterior, volume, etc. Você pode analisar as flags dos ticks para descobrir quais dados foram alterados exatamente:

    • TICK_FLAG_BID - tick alterou o preço Bid
    • TICK_FLAG_ASK  - tick alterou o preço Ask
    • TICK_FLAG_LAST - tick alterou o último preço da oferta
    • TICK_FLAG_VOLUME - tick alterou o volume
    • TICK_FLAG_BUY - tick é resultado de uma compra
    • TICK_FLAG_SELL - tick é resultado de uma venda
    A estrutura MqlTick é usada através de dois métodos:

    • CopyTicks - este método não suporta o formato da antiga estrutura. Quando chamar a função CopyTicks usando a compilação EX5 no formato anterior de tick, irá retornar o erro 4006 (ERR_MQL_INVALID_ARRAY).
    • SymbolInfoTick - este método suporta tanto o formato novo como o da antiga estrutura.

  3. Implementado modelos de classe que permitem criar classes parametrizadas como no C++. Isso permite uma maior capacidade de abstração e uso do mesmo código para trabalhar com objetos de diferentes classes de uma maneira uniforme. Exemplo de uso:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| Declara uma classe template                                      |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| Classe template do array de ponteiro. No processo de destruição, |
    //| exclui os objetos que são os ponteiros armazenados no array.     |
    //|                                                                  |
    //| Por favor, note a herança do array da classe template            |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+------------------------------------------------------------------------------+
    //| Declarar a classe. Ponteiros aos respectivos objetos são armazenados no array|
    //+------------------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // criar instância TArray (TArray especializada pelo tipo int)
    TArray<double>  ExtDblArray;   // criar instância TArray (TArray especializada pelo tipo double)
    TArrayPtr<CFoo> ExtPtrArray;   // criar instância TArrayPtr (TArrayPtr especializada pelo tipo CFoo)
    //+------------------------------------------------------------------+
    //| Função "Start" de Programa Script                                |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- preencher o array com dados
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- Saída do conteúdo do array
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- Objetos CFoo criados via nova versão não deve ser suprimidos, uma vez que eles são excluídos no objeto destructor TArrayPtr <CFoo>}
    Resultado da execução:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  4. Novos operadores * e & para receber uma variável pela referência e receber uma referência à variável.
  5. Implementado a forma sobrecarregada da função ObjectsDeleteAll - exclui todos os objetos de um tipo específico por um prefixo de nome numa sub-janela do gráfico.
    int  ObjectsDeleteAll(
       long           chart_id,   // ID de gráfico
       const string     prefix,   // prefixo do nome do objeto
       int       sub_window=-1,   // índice da janela
       int      object_type=-1    // tipo de objeto para deletar
       );
  6. Corrigido o funcionamento da função ObjectGetValueByTime. Anteriormente um valor de preço incorreto por um tempo gráfico poderia algumas vezes ser devolvido (por exemplo, por uma linha de tendência horizontal).
  7. Corrigido a operação das funções Copy* na ausência de dados históricos no servidor. Anteriormente esses casos causavam atrasos de 30 a 50 segundos antes de retornar o controle.
  8. Adicionado algumas melhorias na biblioteca padrão MQL5.
  9. Documentação da Biblioteca Padrão traduzida ao Alemão, Francês, Chinês, Turco, Espanhol e Português.
  10. Adicionada a Documentação MQL5 em japonês.

Tester

  1. O processo da seleção de programas a serem executados no Testador de Estratégia tornou-se muito mais fácil. A lista é exibida agora como uma árvore, em conformidade com os diretórios onde os Expert Advisors e indicadores estão armazenados.




  2. Carregado a exibição de alguns indicadores durante a visualização de teste alinhados com o terminal do cliente.
  3. Corrigido a configuração da alavancagem e timeframe do gráfico durante a depuração de programas MQL5 via o Testador de Estratégia.
  4. Corrigida a depuração de inidicadores quando testados no histórico.
Corrigidos erros relatados nos registros (logs) quebrados.

Documentação atualizada.

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