O que há de novo no MetaTrader 5?

Histórico de atualizações das plataformas desktop, móvel e web

5 setembro 2025
Nova versão da plataforma MetaTrader 5 build 5260: melhorias no Algo Forge e novas regras de herança no MQL5

Terminal

  1. Corrigida a exibição das configurações de margem na especificação do instrumento de negociação. Antes, ao usar alavancagem flutuante (por exemplo, dependendo do volume de posições na conta), em alguns casos as configurações de margem na especificação do contrato eram exibidas incorretamente.
  2. Corrigida a ordenação de ordens no book, caso o símbolo permita negociação com preços negativos. Agora, ordens com preços positivos, negativos e nulos são exibidas corretamente e na ordem adequada. 
  3. No guia do terminal foi adicionada a seção Como o testador carrega dados históricos. Nela reunimos as informações principais necessárias para compreender o funcionamento do testador de estratégias com o histórico de negociações. O testador sempre carrega um "buffer de histórico antes do início", para garantir estabilidade nos cálculos:
    • D1 e abaixo — desde o início do ano anterior. Isso garante pelo menos 1 ano de histórico.  Por exemplo, se a data de início do teste for 01.03.2023, o testador baixará dados do terminal a partir de 01.01.2022. Ou seja, 14 meses antes da data de início do teste.
    • W1 — 100 barras semanais (~2 anos).
    • MN1 — 100 barras mensais (~8 anos).

    Se houver menos dados, o testador ajusta a data real de início para a mais próxima disponível, onde as condições são atendidas.

    Devido a esses requisitos, às vezes ocorre a seguinte situação: o teste não começa na data especificada, mas em uma posterior. No log do testador isso é acompanhado por uma mensagem:

    start time changed to 2024.03.15 00:00 to provide data at beginning

MQL5

  1. Foram adicionados 5 novos métodos ao OpenBLAS, que é a nova seção Matrix Balance, que amplia as possibilidades de trabalho com matrizes quadradas. O novo conjunto de funções oferece:
    • Balanceamento de matrizes para aumentar a precisão do cálculo de autovalores.
    • Restauração de autovetores após transformações.
    • Redução à forma de Hessenberg e decomposição de Schur, incluindo a geração de matrizes ortogonais.

    Graças a essas ferramentas, os desenvolvedores têm acesso a um ciclo completo de transformações, isto é, desde a preparação inicial da matriz até o cálculo preciso e estável do seu espectro.

    Nos bastidores são utilizados algoritmos LAPACK já validados (GEBAL, GEBAK, GEHRD, ORGHR, HSEQR), que garantem alta performance e confiabilidade:

    • MatrixBalance — balanceia uma matriz quadrada (real ou complexa) por meio de permutações e/ou escalonamento de linhas e colunas. Reduz a 1-norma, aumentando a precisão do cálculo subsequente de autovalores/autovetores (baseado na função LAPACK GEBAL).
    • EigenVectorsBackward — gera os autovetores (à direita ou à esquerda) da matriz original após o balanceamento, realizando a transformação reversa (baseado em GEBAK). 
    • ReduceToHessenbergBalanced — transforma a matriz balanceada em forma triangular superior de Hessenberg por meio de uma transformação ortogonal (GEHRD).
    • ReflectHessenbergBalancedToQ — gera a matriz ortogonal Q, formada como produto de matrizes de reflexão obtidas durante a redução à forma de Hessenberg (ORGHR).
    • EigenHessenbergBalancedSchurQ — executa a decomposição de Schur: calcula os autovalores da matriz de Hessenberg, bem como as matrizes T (forma triangular superior de Schur) e Z (matriz de vetores), atualizando Q se necessário (HSEQR).


  2. Foram adicionados dois novos métodos na seção Eigen Values. Ambas as funções permitem obter autovetores de forma eficiente após a decomposição de Schur e complementam o conjunto completo de ferramentas de álgebra linear no MQL5:

    • EigenVectorsTriangularZ — calcula os autovetores de uma matriz triangular superior quase real ou de uma matriz triangular superior complexa (forma de Schur). Utiliza a decomposição A = Q · T · Qᴴ (TREVC). Destaca-se pela alta precisão.
    • EigenVectorsTriangularZBlocked — variante em blocos do cálculo de autovetores (TREVC3). Funciona mais rápido do que EigenVectorsTriangularZ, mas pode ser menos preciso.


  3. Foi introduzida uma mudança importante no processo de herança, nomeadamente a regra method hiding.

    Anteriormente, se em uma classe ou estrutura derivada fosse definido um método com o mesmo nome do que no classe base, ocorria sobrecarga: todas as variantes dos métodos (tanto da classe base quanto da derivada) ficavam disponíveis no herdeiro. Agora, métodos com o mesmo nome na classe derivada escondem os métodos da classe base (method hiding).

    Se for necessário chamar o método oculto da classe base, é preciso indicar explicitamente o escopo durante a chamada:
    class Base
      {
    public: 
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");    // вызов Derived::Print(string)
       d.Print(10);        // ВНИМАНИЕ! вызов Derived::Print(string), т.к. Base::Print скрыт (недоступен)
       d.Base::Print(10);  // явный вызов скрытого метода предка
      }
    Por algum tempo, o compilador MQL5 emitirá um aviso se o método oculto da classe base for mais adequado aos parâmetros da chamada do que o método disponível na derivada. Exemplo para o código acima d.Print(10):
    call resolves to 'void Derived::Print(string)' instead of 'void Base::Print(int)' due to new rules of method hiding
       see declaration of function 'Derived::Print'
       see declaration of function 'Base::Print'
    implicit conversion from 'number' to 'string'

  4. Foi adicionado o operador using para restaurar as sobrecargas de métodos da classe base.

    Para controlar o novo comportamento, no MQL5 foi introduzido o operador using. Ele permite “trazer” para o escopo da classe ou estrutura todas as sobrecargas do método a partir do tipo base:
    class Base
      {
    protected:
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
       using Base::Print;  // возвращаем перегрузки Print из Base
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");   // Derived::Print(string)
       d.Print(42);       // Base::Print(int)
       d.Print(3.14);     // Base::Print(double)
      }
    Se removermos using Base::Print;, então as chamadas d.Print(42) e d.Print(3.14) não estarão mais disponíveis, o que significa que restará apenas o método Derived::Print(string).

    Além disso, no exemplo apresentado é possível ver que métodos protected da classe base passaram a estar acessíveis na derivada (protected foi alterado para public).

    Dessa forma, os desenvolvedores ganham um controle mais flexível e previsível sobre hierarquias de classes e podem definir exatamente quais sobrecargas de métodos da classe base devem permanecer acessíveis no herdeiro.

MetaEditor

  1. Acelerados os cálculos de hashes SHA-1 para operações Git ao trabalhar com o Algo Forge. Isso garante um ganho de desempenho superior a 40% em operações em massa.
  2. Corrigida a lógica de verificação de modificações em arquivos para operações Git. Se apenas a data de modificação mudou, mas o conteúdo permaneceu o mesmo, o arquivo não será mais considerado alterado. Isso elimina falsos positivos e evita conflitos com o repositório remoto.

Algo Forge

Foi publicada a documentação de suporte sobre o uso do MQL5 Algo Forge. Nela você encontrará todos os principais benefícios do Git, sem complexidade desnecessária:
  1. armazenamento confiável do histórico de versões e trabalho com branches,
  2. testes rápidos e mesclagem segura de alterações,
  3. criação de repositório próprio ou fork de um projeto alheio com apenas um clique,
  4. colaboração transparente em equipe, com registro da contribuição de cada membro,
  5. catálogo de projetos abertos e oportunidade de aprender com outros.

  6. Clonagem de um projeto existente
    No forge.mql5.io, acesse o projeto que deseja clonar e execute o comando Fork. Preencha o nome do fork a ser criado e a descrição, e salve as alterações:

    Clonagem de projeto

    Em seguida, vá para o MetaEditor com a mesma conta MQL e execute o comando atualizar (Refresh) no Navegador.  Na pasta Shared projects aparecerá o seu projeto clonado. Agora, carregue-o a partir do portal Algo Forge com o comando Git Clone. Assim, você baixará não apenas todos os arquivos do projeto, mas também todo o histórico de commits e todos os branches desse projeto. Ou seja, poderá continuar trabalhando no fork tendo à disposição todo o histórico do projeto clonado.  

    Comando Git Clone para obter um projeto do Algo Forge

  7. Adicionada tradução do terminal para o idioma irlandês.
  8. Atualizadas as traduções da interface do usuário.


Web Terminal

  1. Corrigida a exibição do horário da sessão de negociação e de cotações na especificação do símbolo.
  2. Corrigida a exibição das configurações de margem na especificação do símbolo.
  3. Alterada a forma de exibir as sessões dos instrumentos de negociação na especificação do símbolo.
  4. Adicionado suporte a contas do tipo Contest. Essas contas são exibidas em azul, e contas Demo, em verde.
  5. Corrigida a precisão dos cálculos de margem com alavancagem flutuante em alguns casos. 
  6. Corrigido erro de abertura de nova conta, que acontecia em determinadas situações, o botão "Next" não funcionava para avançar para a próxima etapa.
  7. Corrigido erro que impedia a colocação de ordem limite entre os preços Bid e Ask no modo de execução em bolsa.
  8. Corrigido erro na exibição do preço de execução da ordem. Após o envio da ordem, a janela mostrará o resultado da execução, isto é, sucesso da operação de negociação ou recusa com a descrição do motivo pelo qual não foi executada. Em alguns casos, o preço de execução era mostrado como "0".
  9. Corrigido erro em que o botão de fechamento rápido da posição não era exibido.

    Botão de fechamento de posição

  10. Corrigida a exibição das moedas da conta de negociação na janela de seleção da lista de contas.
31 julho 2025
Nova versão da plataforma MetaTrader 5 build 5200: expansão do OpenBLAS e reforço de controle no MQL5

Terminal

  1. Adicionada a opção de aplicar automaticamente o tema claro ou escuro da interface conforme as configurações do Windows. Para isso, ative a nova opção "Exibir \ Esquemas de cores \ Sistema". A cada inicialização, a plataforma verificará qual interface você está usando no sistema e se adaptará automaticamente.


    Adicionada a opção de aplicar automaticamente o tema claro ou escuro da interface conforme as configurações do Windows


  2. Corrigida a exibição das barras de ferramentas destacadas da janela principal.
  3. Corrigido o cálculo do valor de liquidação da carteira na seção "Ativos". Posições de alguns instrumentos podiam não ser consideradas.
  4. Corrigida a exibição de preços negativos no book de ofertas. Agora eles são classificados corretamente.
  5. Corrigida a importação de histórico de preços em instrumentos personalizados. Para instrumentos localizados na pasta raiz, os comandos correspondentes podiam estar indisponíveis.
  6. Traduções da interface do usuário foram atualizadas.

MQL5

  1. Adicionados novos métodos do OpenBLAS:

    Redução de matrizes

    • ReduceToHessenberg — transforma uma matriz geral real ou complexa A de dimensão n por n na forma superior de Hessenberg B usando uma transformação ortogonal de similaridade: Q**T \* A \* Q = H. Função LAPACK GEHRD.
    • ReflecHessenbergToQ — gera uma matriz ortogonal Q definida como o produto de n-1 refletores elementares de ordem n, retornados pela função ReduceToHessenberg: Q = H(1) H(2) . . . H(n-1). Função LAPACK ORGHR.

    Cálculo de autovalores e autovetores

    • EigenHessenbergSchurQ — calcula os autovalores da matriz de Hessenberg H e as matrizes T e Z da decomposição de Schur: H = Z T Z**T. Aqui, T é uma matriz quase triangular superior (forma de Schur) e Z é a matriz ortogonal de vetores de Schur. Função LAPACK HSEQR.

    Solução de sistemas de equações lineares

    • SylvesterEquationTriangular — resolve a equação de Sylvester para matrizes quase triangulares reais ou triangulares complexas: op(A)*X + X*op(B) = scale*C ou op(A)*X - X*op(B) = scale*C, onde op(A) = A ou A**T ou A**H, e A e B são matrizes triangulares superiores. Função LAPACK TRSYL.
    • SylvesterEquationTriangularBlocked — resolve a equação de Sylvester para matrizes quase triangulares reais ou triangulares complexas: op(A)*X + X*op(B) = scale*C ou op(A)*X - X*op(B) = scale*C, onde op(A) = A, A**T ou A**H, e A e B são matrizes triangulares superiores. Função LAPACK TRSYL3. Esta é a versão em blocos (BLAS nível 3) da TRSYL. Até 5 vezes mais rápida, porém menos precisa.

    Cálculos fatorados

    • SylvesterEquationSchur — resolve a equação de Sylvester para matrizes quase triangulares reais ou triangulares complexas: A*X + X*B = C, onde A e B são matrizes triangulares superiores. A tem dimensão m por m, e B tem dimensão n por n; o lado direito C e a solução X têm dimensão m por n. Função LAPACK TRSYL.
    • SylvesterEquationSchurBlocked — resolve a equação de Sylvester para matrizes quase triangulares reais ou triangulares complexas: A*X + X*B = C, onde A e B são matrizes triangulares superiores. A tem dimensão m por m, e B tem dimensão n por n; o lado direito C e a solução X têm dimensão m por n. Função LAPACK TRSYL3. Esta é a versão em blocos (BLAS nível 3) da TRSYL. Até 5 vezes mais rápida, porém menos precisa.

    Cálculo de normas de matrizes para diferentes estruturas

    • MatrixNorm — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz retangular de forma geral. Função LAPACK LANGE.
    • MatrixNormGeTrid — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz tridiagonal geral. Função LAPACK LANGT.
    • MatrixNormHessenberg — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz superior de Hessenberg. Função LAPACK LANHS.
    • MatrixNormSy — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz simétrica real ou hermitiana complexa. Funções LAPACK LANSY e LANHE.
    • MatrixNormComplexSy — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz simétrica complexa (não hermitiana). Função LAPACK LANSY.
    • MatrixNormSyTrid — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz simétrica real ou hermitiana complexa tridiagonal. Funções LAPACK LANST e LANHT.
    • MatrixNormTriangular — retorna o valor da norma 1, norma infinita, norma de Frobenius ou o maior valor absoluto de qualquer elemento de uma matriz trapezoidal de dimensão m por n ou de uma matriz triangular. Função LAPACK LANTR.

    Análise de propriedades estruturais de matrizes

    • IsSymmetric — verifica se uma matriz quadrada é simétrica.
    • IsHermitian — verifica se uma matriz quadrada complexa é hermitiana.
    • IsUpperTriangular — verifica se uma matriz quadrada é triangular superior.
    • IsLowerTriangular — verifica se uma matriz quadrada é triangular inferior.
    • IsTrapezoidal — verifica se uma matriz retangular (não quadrada) de dimensão m por n é trapezoidal superior ou inferior.
    • IsUpperHessenberg — verifica se uma matriz quadrada é uma matriz de Hessenberg superior.
    • IsLowerHessenberg — verifica se uma matriz quadrada é uma matriz de Hessenberg inferior.
    • IsTridiagonal — verifica se uma matriz quadrada é tridiagonal.
    • IsUpperBidiagonal — verifica se uma matriz quadrada é bidiagonal superior.
    • IsLowerBidiagonal — verifica se uma matriz quadrada é bidiagonal inferior.
    • IsDiagonal — verifica se uma matriz quadrada é diagonal.
    • IsScalar — verifica se uma matriz quadrada é escalar.

  2. Adicionado o método Conjugate para matrizes e vetores complexos. Ele inverte o sinal da parte imaginária do número complexo e retorna a matriz ou vetor alterado.
  3. Reforçadas as regras de ocultação de métodos. Se a classe derivada possuir um método com o mesmo nome da classe base, agora, por padrão, será chamada a versão da classe derivada. Para acessar o método da base, será necessário usar qualificadores:
    struct A
      {
       int y;
      
       string func(double x)
         {
          return(__FUNCSIG__);
         }
      };
      
    struct B : public A
      {
       string func(int x)   // the method hides A::func
         {
          return(__FUNCSIG__);
         }
      };
      
    void OnStart(void)
      {
       B b;
       b.func(M_PI);          // according to new rules, it is a call to B::func
       b.A::func(M_PI);       // call the hidden method A::func
      }
    Isso facilita a leitura do código e elimina a ambiguidade que antes gerava apenas um aviso do compilador.

    Antes, a compilação emitia o aviso:
    deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
    Agora, essa mudança está em vigor.

    Durante alguns builds, será exibido no log um aviso se houver um método oculto mais apropriado pelos parâmetros.
    call resolves to 'string B::func(int)' instead of 'string A::func(double)' due to new rules of method hiding
       see declaration of function 'B::func'
       see declaration of function 'A::func'
    truncation of constant value from 'double(3.141592653589793)' to 'int(3)'
  4. Foi proibida a duplicação de nomes em um mesmo escopo. Por exemplo, anteriormente era possível declarar um parâmetro input e uma função com o mesmo nome no mesmo arquivo. Agora, essa duplicação não é mais permitida:
    input int somename=42;
    
    int somename(int x)
      {
       return(42);
      }
  5. Adicionada verificação rigorosa de tipos de valores padrão em enumerações. Para parâmetros de função que recebem enum, agora é verificado não apenas o valor, mas também a correspondência exata do tipo:
    int somename(ENUM_TIMEFRAMES TF=PERIOD_CURRENT);
    
    int somename(ENUM_TIMEFRAMES TF=0)   // error, type mismatch for the default parameter value, despite having the same value
      {
       return(42);
      }
  6. Proibidos identificadores iguais em diferentes enumerações. Um identificador dentro de uma enumeração agora não pode se repetir em outra dentro do mesmo escopo:
    enum A
      {
       Value
      };
      
    enum B
      {
       Value  // error, name 'Value' is already used in enumeration A
      };
      
    void OnStart(void)
      {
       enum C
         {
          Value // OK, 'Value' is not used within the OnStart scope
         };
      }
    Em escopos diferentes, nomes iguais ainda podem ser usados.

  7. Ativadas exigências rigorosas para funções-inicializadoras com template. Ao criar matrizes/vetores com essas funções, foram desativados:

    • Tipagem automática de funções com template
    • Valores padrão de parâmetros.

    Agora é necessário informar explicitamente os parâmetros de template e todos os argumentos: 
    template<typename T>
    void Initializer(matrix<T>& mat,int method=0);
    
    matrix<double> A(10,10,Initializer,42);          // error, Initializer must be explicitly typed
    matrix<double> A(10,10,Initializer<double>);     // error, missing 'method' parameter (default values no longer supported)
    matrix<double> A(10,10,Initializer<double>,42);  // OK
  8. Aprimorado o suporte ao ONNX. Adicionada conversão implícita de tipo com sinal ao passar arrays do tipo ulong em funções, facilitando a integração do MQL5 com modelos ONNX.
    OnnxSetInputShape( … , ulong\_array );
    OnnxSetOutputShape( … , ulong\_array );
  9. Corrigida a exibição de tipos nos avisos sobre conversão implícita de strings.
  10. Atualizado o pacote de integração com Python. Para instalar a atualização, execute o comando:
    pip install --upgrade MetaTrader5

MetaEditor

  1. Corrigido o funcionamento do comando "Reverter para revisão", utilizado com o MQL5 Storage. Agora, a verificação de conflitos entre versões que podem surgir durante o rollback é feita antes da operação. Se a reversão não for possível, a operação é cancelada.
  2. Traduções da interface do usuário foram atualizadas.

Tester

  1. Corrigido o funcionamento da função OrderCalcMargin para contas com modelo de compensação de bolsa.
  2. Corrigida a alternância entre gráficos durante o teste visual de EAs multimoeda.

Web Terminal

  1. Corrigida a verificação de email ao abrir contas demo e prévias. Em alguns casos, o campo para inserção do código de confirmação não era exibido.
  2. Corrigida a conexão à conta ao usar o navegador Huawei.
  3. Corrigida a conexão a contas ao utilizar senhas temporárias. Em alguns casos, ao se conectar pela primeira vez, o campo para digitar a senha temporária podia não aparecer.
27 junho 2025
Novo MetaTrader 5 para iPhone/iPad: relatório de trading e indicadores adicionais

Nas versões mais recentes do aplicativo móvel MetaTrader 5 para iOS, foram adicionadas muitas novas funções que ajudam os traders a se manterem conectados aos mercados financeiros, onde quer que estejam.

  1. Foi adicionado um relatório, que permite avaliar os resultados da sua negociação em uma forma visual prática. Ele ajuda a otimizar o portfólio, entender como reduzir riscos e aumentar a estabilidade do trading. Para analisar sua estratégia, vá até a seção de histórico e toque no ícone de seleção de período. Depois, selecione o período e toque em “Criar relatório de trading”.


    Novo relatório de trading


    O relatório é dividido em várias abas, cada uma contendo informações agregadas em seu contexto:

    • Summary — informações gerais sobre as negociações ao longo do tempo: lucros e perdas totais, valores de depósitos e saques, gráficos de saldo, crescimento e dividendos, entre outros resultados.
    • Profit/Loss — informações sobre operações lucrativas e com prejuízo. É dividido por tipo de negociação (manual, EA e cópia de trades), e os resultados podem ser analisados por operação ou por valores em meses e anos.
    • Long/Short — mostra a relação entre compras e vendas em dinâmica e em períodos específicos, além de permitir avaliar a lucratividade das direções Buy e Sell.
    • Symbols — análise de negociações por instrumentos financeiros. Aqui você verá em quais símbolos você lucra ou perde, com que frequência negocia com eles, e gráficos de operações e volumes monetários.
    • Risks — principais indicadores de risco da sua estratégia: gráficos de rebaixamento e carga sobre o depósito, e a proporção entre trades lucrativos e com prejuízo.

  2. Foram adicionados os indicadores ZigZag e Market Profile, além de um novo tipo de gráfico, o Heikin Ashi. Essas ferramentas ajudam a entender melhor o mercado e identificar tendências.

    Para adicionar os novos indicadores, abra o menu do gráfico, toque em “Janela principal” e selecione-os da lista. Localize o ZigZag nos indicadores de tendência e o Market Profile nos de volume.


    Indicadores Market Profile e ZigZag


    Para visualizar o gráfico Heikin Ashi, toque no gráfico e vá até as configurações.


    Gráfico Heikin Ashi


  3. Foi adicionada a exibição dos dados de operações na janela de dados. Se você posicionar o "cruzamento" sobre a barra onde ocorreram negociações, a janela de dados mostrará não apenas os preços e valores dos indicadores, mas também as informações completas da operação: direção, tíquete, volume, preço e resultado financeiro.


    Janela de dados aprimorada


  4. Foi adicionado o modo de acesso rápido à janela de dados no gráfico. Agora, ao pressionar por mais de um segundo o gráfico principal, o modo cruzamento é ativado e a janela de dados é exibida. Assim que você solta o dedo, o gráfico retorna ao modo normal. Isso permite ver rapidamente os valores exatos de barras, indicadores e negociações sem mudar para o modo cruzamento na barra superior.
  5. Foi adicionada uma nova opção para alterar o tamanho e a ordem das janelas adicionais dos indicadores. Essa mesma ação pode ser feita com um toque longo sobre a subjanela do indicador no gráfico. O modo de edição de subjanelas também foi melhorado — ícones extras foram adicionados para maior clareza.


    Nova opção para modificar tamanhos e ordem das subjanelas dos indicadores


  6. A exibição do histórico de negociações no gráfico foi otimizada. Agora o aplicativo pode mostrar milhares de negociações sem perda significativa de desempenho.

    Instale a versão mais recente do aplicativo e amplie suas possibilidades de trading:




    12 junho 2025
    Nova versão da plataforma MetaTrader 5 build 5120: melhorias e correções

    Terminal

    1. Corrigidos erros na exibição da interface gráfica ao rodar em Linux e macOS.
    2. Aprimorado o mecanismo de atualização da plataforma. Agora, a biblioteca padrão MQL5 não será substituída completamente a cada atualização, apenas os arquivos que de fato forem alterados.
    3. Adicionado o reset do modo de visualização em tela cheia ao reiniciar o aplicativo. Agora, a cada inicialização o programa será exibido com a interface completa.

    MQL5

    1. Permitida a passagem de arrays com conversão de sinal para as seguintes funções:

      • ArraySwap
      • WebRequest
      • CryptEncode
      • CryptDecode
      • StringToCharArray
      • CharArrayToString
      • StringToShortArray
      • ShortArrayToString
      • StructToCharArray
      • CharArrayToStruct

    2. Corrigida a captura do estado das teclas para programas MQL no gráfico ativo utilizando a função TerminalInfoInteger.
    3. Corrigido o funcionamento da função ArrayInitialize para arrays de enumerações (enum).

    MetaEditor

    1. Atualizados os modelos disponíveis para AI Assistant. Agora são suportados todos os modelos GPT-4.1 e 04-mini.
    2. Habilitadas verificações precisas para o status dos arquivos no repositório MQL5 Storage. Agora o hash dos arquivos é verificado, o que elimina a exibição de indicadores falsos. Anteriormente, arquivos que não tinham alterações locais em relação à versão no repositório podiam ser marcados com ícone vermelho.
    3. Foram atualizadas as traduções da interface do usuário.

    5 junho 2025
    Nova versão da plataforma MetaTrader 5 build 5100: Migração para Git e hub de desenvolvedores MQL5 Algo Forge, tema escuro e melhorias na interface

    MetaEditor

    • Atualizamos completamente o armazenamento de código-fonte MQL5 Storage. Agora, ele utiliza Git como sistema de controle de versões, em vez de Subversion. Git é o padrão global entre desenvolvedores, garantindo confiabilidade e flexibilidade na gestão de código.

      • Ramificação e fusão flexíveis: crie ramificações separadas para novas funcionalidades ou testes e, depois, integre facilmente essas alterações à versão principal do projeto.
      • Trabalho mais rápido com o repositório: ao contrário do Subversion, o Git armazena todos os dados localmente, tornando operações como commits, alternância entre versões e comparação de mudanças muito mais rápidas.
      • Operação offline: agora não é necessário estar constantemente conectado ao servidor; você pode fazer commits localmente e enviá-los ao repositório online quando for mais conveniente.
      • Sistema avançado de rastreamento de alterações: o Git permite visualizar facilmente o histórico de mudanças, identificar quem fez o quê e quando, além de facilitar o retorno a versões anteriores sem complicações.
      • Fusão de alterações aprimorada: o sistema avançado de comparação e fusão de código minimiza conflitos e facilita a gestão de projetos colaborativos.

      Colaboração em um novo nível
      Com a migração para o Git, lançamos também um novo portal para gerenciamento de projetos online: MQL5 Algo Forge. Não é apenas uma lista de seus projetos, mas uma rede social completa para desenvolvedores, uma espécie de GitHub para traders algorítmicos. Siga autores interessantes, forme equipes e conduza projetos colaborativos de forma prática.




      Visualize os detalhes dos projetos: estrutura, arquivos, commits, ramificações, etc. Acompanhe a contribuição de cada participante, crie documentação e compartilhe o projeto na Internet.




      Monitore todas as alterações no código: linhas novas, modificadas e removidas. Ao identificar problemas, atribua diretamente uma tarefa ao desenvolvedor dentro do projeto para correção.




      Para o uso com Git, reformulamos o menu do Navegador e da janela ativa de edição de código. Também adicionamos um menu Git separado na barra superior do MetaEditor:




      Todos os detalhes sobre o funcionamento com Git estarão disponíveis na documentação em breve.

    Terminal

    1. Adicionamos suporte ao esquema de cores escuro na interface de todos os componentes: terminal de negociação, MetaEditor e testador visual. O tema escuro permite trabalhar na plataforma com mais conforto durante a noite. Para alternar entre os temas, utilize o menu “Exibir”:




      Ao adaptar a interface para suporte a diferentes temas, fizemos diversas melhorias na exibição de diálogos, menus, painéis e botões para tornar o uso mais confortável. No MetaEditor, as informações sobre a posição atual do cursor na janela ativa, assim como o indicador do modo de entrada de texto (INS/OVR), são exibidas no canto superior direito. A barra de status na parte inferior da janela não é mais exibida, para economizar espaço de trabalho.

    2. Foi adicionada a possibilidade de alugar VPS por 12 meses. Ao contratar a hospedagem por um período mais longo, você economiza um terço do valor total.




    3. Otimizamos o consumo de memória, reduzindo agora os recursos necessários para a operação do terminal.
    4. Otimizamos a exibição do histórico de negociações da conta. Agora a plataforma consegue exibir corretamente milhões de registros.
    5. Adicionamos o comando “Padrão” no menu “Janela”. Ele restaura todos os elementos da interface (gráficos, Navegador, Testador de Estratégias etc.) à sua posição original.
    6. Corrigimos um erro que, em alguns casos, fazia a janela de modificação de posição travar.
    7. Corrigimos o cálculo do valor das posições abertas em situações de preços negativos.
    8. Corrigimos o cálculo da margem na especificação do instrumento financeiro quando os preços são negativos.
    9. Corrigimos o cálculo dos valores atuais e a exibição dos gráficos MFE e MAE no relatório de negociação.
    10. Corrigimos a escala dos osciladores nos subgráficos. Agora a escala vertical é exibida corretamente.
    11. Corrigimos o comportamento de esconder e mostrar os books e painéis de opções ao alternar o modo de tela cheia.
    12. Adicionamos a exibição do ticket da posição no histórico de negociação da conta. Para ativar essa coluna, utilize o menu de contexto.
    13. Corrigimos o cálculo do valor de liquidação na aba “Ativos” para futuros e opções.
    14. Corrigimos a cópia dos dados da conta criada para a área de transferência. Na etapa final do registro de uma conta demo ou prévia, os dados da conta — login, senhas etc. — são exibidos. Agora é possível copiá-los corretamente para a área de transferência e salvá-los em arquivo separado, inclusive no macOS.
    15. Corrigimos a exibição da seção de log do VPS. Em alguns casos, uma mensagem de erro era exibida na página.
    16. Corrigimos o suporte a monitores HiDPI em sistemas Linux.
    17. Atualizamos as traduções da interface do usuário.

    MQL5

    1. Adicionamos o operador de multiplicação matricial @. Ele segue as regras da álgebra linear e permite multiplicar matrizes e vetores, além de realizar produto escalar entre vetores.

      Multiplicação matricial (matriz × matriz)
      matrix A(2, 3);
      matrix B(3, 2);
      matrix C = A @ B; // Resultado: matriz C de tamanho [2,2]
      Multiplicação matricial (matriz × vetor)
      matrix M(2, 3);
      vector V(3);
      vector R = M @ V; // Resultado: vetor R com 2 elementos
      Multiplicação matricial (vetor × matriz)
      matrix M(2, 3);
      vector V(1, 2);
      vector R = V @ M; // Resultado: vetor R com 3 elementos
      Produto escalar (vetor × vetor)
      vector V1(1, 3), V2(1, 3);
      double r = V1 @ V2; // Resultado: escalar
    2. Adicionamos o parâmetro ddof aos métodos Std, Var e Cov. Ele define o número de graus de liberdade subtraídos do divisor ao calcular o desvio padrão. Por padrão, ddof é 0 para Std e Var, e 1 para Cov.

      Como o ddof afeta os cálculos:

      • Por padrão ddof=0, e o desvio padrão é calculado para a população inteira (population standard deviation).
      • Se ddof=1, o cálculo considera o desvio padrão amostral (sample standard deviation), corrigindo a estimativa para um subconjunto de dados — método comum na estatística.

    3. Adicionamos novos métodos da OpenBLAS:

      Cálculo de autovalores e autovetores

      • EigenTridiagonalDC — calcula autovalores e autovetores de uma matriz tridiagonal simétrica usando o algoritmo “dividir e conquistar” (função LAPACK STEVD).
      • EigenTridiagonalQR — calcula autovalores e autovetores de uma matriz tridiagonal simétrica usando o algoritmo QR (função LAPACK STEV).
      • EigenTridiagonalRobust — calcula autovalores e autovetores de uma matriz tridiagonal simétrica usando o algoritmo MRRR (Multiple Relatively Robust Representations) (função LAPACK STEVR).
      • EigenTridiagonalBisect — calcula autovalores e autovetores de uma matriz tridiagonal simétrica usando o algoritmo de bissecção (função LAPACK STEVX).
      • ReduceToBidiagonal — reduz uma matriz geral real ou complexa de dimensão m×n para uma forma bidiagonal superior ou inferior B, utilizando uma transformação ortogonal: QT A P = B. Se m≥n, então B é uma matriz bidiagonal superior; caso contrário, é inferior. (Função LAPACK GEBRD).
      • ReflectBidiagonalToQP — gera as matrizes ortogonais Q e PT (ou PH para tipos complexos), determinadas pelo método ReduceToBidiagonal ao reduzir uma matriz real ou complexa A à forma bidiagonal: A = Q B PT.  Q e PT são produtos de refletores elementares H(i) ou G(i), respectivamente. (Funções LAPACK ORGBR, UNGBR).
      • ReduceSymmetricToTridiagonal — reduz uma matriz simétrica real ou hermitiana complexa A para uma forma tridiagonal B por meio de uma transformação ortogonal de similaridade: QT A Q = B.  (Funções LAPACK SYTRD, HETRD).
      • ReflectTridiagonalToQ — gera a matriz ortogonal Q, que é o produto de n-1 refletores elementares de ordem n retornados pela função ReduceSymmetricToTridiagonal.

      • LinearEquationsSolution — resolve um sistema de equações lineares com matriz de coeficientes quadrada A e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionTriangular — resolve um sistema de equações lineares com matriz de coeficientes quadrada e triangular A e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionSy — resolve um sistema de equações lineares com matriz A simétrica ou hermitiana conjugada e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionComplexSy — resolve um sistema de equações lineares com matriz A complexa e simétrica e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionGeTrid — resolve um sistema de equações lineares com matriz A simétrica ou hermitiana conjugada, definida positiva, e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionSyPD — resolve um sistema de equações lineares com matriz de coeficientes geral (não simétrica) e tridiagonal A e múltiplos vetores de termos independentes.
      • LinearEquationsSolutionSyTridPD — resolve um sistema de equações lineares com matriz A simétrica tridiagonal e definida positiva, e múltiplos vetores de termos independentes.
      • FactorizationQR — calcula a decomposição QR de uma matriz geral de dimensão m por n: A = Q * R (função LAPACK GEQRF).
      • FactorizationQRNonNeg — calcula a decomposição QR de uma matriz geral de dimensão m por n: A = Q * R, onde R é uma matriz triangular superior com elementos não negativos na diagonal (função LAPACK GEQRFP).
      • FactorizationQRPivot — calcula a decomposição QR de uma matriz geral de dimensão m por n com permutação de colunas: A P = Q R (função LAPACK GEQP3).
      • FactorizationLQ — executa a decomposição LQ de uma matriz geral de dimensão m por n: A = L * Q (função LAPACK GELQF).
      • FactorizationQL — executa a decomposição QL de uma matriz geral de dimensão m por n: A = Q * L (função LAPACK GEQLF).
      • FactorizationRQ — executa a decomposição RQ de uma matriz geral de dimensão m por n: A = R * Q (função LAPACK GERQF).
      • FactorizationPLU — calcula a decomposição LU de uma matriz geral A de dimensão m por n usando seleção parcial do pivô e permutação de linhas (função LAPACK GETRF).
      • FactorizationPLUGeTrid — calcula a decomposição LU de uma matriz tridiagonal geral (não simétrica) A de dimensão n por n usando seleção parcial do pivô e permutação de linhas (função LAPACK GTTRF).
      • FactorizationLDL — calcula a decomposição de uma matriz simétrica real ou hermitiana complexa A usando seleção diagonal do pivô pelo método de Bunch-Kaufman (funções LAPACK SYTRF e HETRF).
      • FactorizationLDLSyTridPD — calcula a decomposição de uma matriz tridiagonal simétrica definida positiva (para dados reais) ou hermitiana definida positiva (para dados complexos) A (função LAPACK PTTRF).
      • FactorizationCholesky — calcula a decomposição de uma matriz simétrica real ou hermitiana complexa definida positiva A (função LAPACK POTRF).
      • FactorizationCholeskySyPS — calcula a decomposição de Cholesky com seleção completa do pivô (complete pivoting) para uma matriz simétrica real (ou hermitiana complexa) semi-definida positiva de dimensão n por n (função LAPACK PSTRF).

    4. Adicionamos a função e o método Random para preencher vetores e matrizes com valores aleatórios. Os valores são gerados de forma uniforme dentro de um intervalo definido.
      static vector vector::Random(
        const ulong   size,       // tamanho do vetor
        const double  min=0.0,    // valor mínimo
        const double  max=1.0     // valor máximo
         );
      
      static matrix matrix::Random(
        const ulong   rows,       // quantidade de linhasм
        const ulong   cols        // quantidade de colunas
        const float   min=0.0,    // valor mínimo
        const float   max=1.0     // valor máximo
         );
    5. Adicionamos suporte a pseudônimos adicionais para tipos inteiros. Isso facilita a portabilidade de código de outras linguagens como C e C++.

      Esses aliases não criam novos tipos, apenas fornecem nomes alternativos para tipos já existentes no MQL5. Eles podem ser utilizados em todos os contextos nos quais os tipos base são válidos.

      • int8_t
      • uint8_t
      • int16_t
      • uint16_t
      • int32_t
      • uint32_t
      • int64_t
      • uint64_t

    6. Adicionadas funções para identificar o esquema de cores do terminal:


      Para detectar a mudança de esquema de cores, utilize o manipulador OnChartEvent. Quando o esquema é alterado, o evento CHARTEVENT_CHART_CHANGE é disparado duas vezes.

    7. Corrigido erro que causava falha no MetaEditor durante a compilação de código contendo o método Array::Reserve. O método Reserve não altera o tamanho do array, apenas reserva espaço para a quantidade especificada de elementos, evitando realocações de memória ao adicionar novos itens.
    8. Corrigido o funcionamento do método Array::Push, que adiciona novos elementos ao final do array. O erro ocorria com arrays que já possuíam espaço reservado no buffer.
    9. Corrigidas as funções relacionadas ao uso com OpenCL.

    MetaTester

    1. Otimização de estratégias de negociação acelerada.
    2. Corrigido erro que, em alguns casos, levava ao consumo excessivo de memória RAM pelos agentes de teste ao executar tarefas pela MQL5 Cloud Network.

    Web Terminal

    1. Corrigida a opção de salvar senha na janela de conexão à conta.
    2. Corrigido o funcionamento dos botões de movimentação do gráfico. Em alguns casos, o gráfico desaparecia ao utilizá-los.
    3. Corrigida a validação do campo “Nome do meio” no formulário de solicitação de conta real. Agora esse campo não é mais obrigatório.
    4. Corrigida a abertura de contas demo. Em alguns casos, havia redirecionamento incorreto para o site da corretora.
    5. Corrigida a exibição dos botões para abertura de contas demo e reais. Agora esses botões são ocultados quando a função correspondente está desativada pela corretora.
    6. Corrigido o campo “Depósito” no formulário de abertura de contas demo.
    7. Corrigida a exibição do campo “Negociação” na especificação do contrato.
    8. Corrigido o campo de busca de símbolos na janela “Observação do mercado”. Agora o botão “X” para sair do modo de busca é exibido corretamente.
    9. Corrigida a dica exibida no campo para inserir o código de confirmação por email no formulário de abertura de conta.

    18 março 2025
    MetaTrader 5 para iPhone/iPad: régua, objetos de texto para gráficos e temporizador de barra

    Nas versões mais recentes do aplicativo móvel MetaTrader 5 para iOS, adicionamos várias funcionalidades úteis para gráficos, além de realizar algumas correções importantes para garantir um funcionamento mais estável do aplicativo.

    1. Adicionado um objeto de texto para criar suas próprias legendas no gráfico. Acesse o menu de objetos do gráfico e clique em "Adicionar texto". Em seguida, insira o texto e escolha o ponto no gráfico onde ele deve ser colocado. O objeto tem dois pontos — um para movimentação e outro para alterar a direção.



      Objeto de texto para criar suas próprias legendas no gráfico



      Também adicionamos um pequeno menu de objetos ao gráfico — ele aparece na parte inferior logo após a criação do objeto. Agora, para alterar as principais propriedades, você não precisa acessar o menu de objetos.

    2. Adicionado um temporizador que mostra o tempo restante até o fechamento da barra atual. Ele funciona em todos os timeframes, permitindo acompanhar qualquer vela — desde as de um minuto até as diárias. Essa funcionalidade será útil para traders cujas estratégias se baseiam no fechamento ou abertura de barras.

      Para ativar o temporizador, vá até as configurações do gráfico. O tempo será exibido na escala vertical, abaixo do preço atual.


      Temporizador que mostra o tempo restante até o fechamento da barra atual



    3. Aprimorado o modo de cruzamento — agora ele pode ser usado como uma régua. Ao ativar o cruzamento, posicione-o no ponto desejado de onde a medição deve começar. Em seguida, toque uma vez no ponto até o qual deseja medir. A diferença de preços, em porcentagem e em número de barras, será mostrada na dica.


      Aprimorado o modo de cruzamento — agora ele pode ser usado como uma régua



    4. Adicionada a exibição do ticket da posição no histórico de negociações.


      Adicionada a exibição do ticket da posição no histórico de negociações



    5. Melhorada a exibição do atraso nas cotações, caso seja aplicado a um instrumento de negociação. Agora, a informação é exibida no gráfico, e o ícone na "Visão do Mercado" ficou mais visível.



      Melhorada a exibição do atraso nas cotações



    6. Adicionada a compatibilidade com novos provedores para o sistema de pagamento integrado.
    7. Adicionado um campo para inserir a data de nascimento ao abrir contas demo.
    8. Melhorados os chats: corrigida a exibição de avatares, adicionado um visualizador de documentos, incluído suporte para imagens *.webp e aprimorada a função de busca.

    Instale a versão mais recente do aplicativo e expanda suas possibilidades de negociação:

    MetaTrader 5 na App Store
    13 dezembro 2024
    MetaTrader 5 build 4755: melhorias gerais
    No MetaTrader 5 build 4755, foi corrigido um erro no cálculo de swap triplo no testador de estratégias, que ocorria em determinadas combinações de condições de teste. Além disso, fizemos várias melhorias e correções menores para tornar a plataforma ainda mais estável.
    6 dezembro 2024
    MetaTrader 5 build 4730: Expansão do suporte ao OpenBLAS e otimização geral de desempenho

    Terminal Cliente

    1. O cálculo do custo de posições, ordens e negociações foi alterado. Agora é exibido na moeda de depósito da conta, em vez da moeda base do instrumento de negociação:

      O custo de posições, ordens e negociações agora é exibido na moeda de depósito da conta

    2. Adicionado um campo para inserir a data de nascimento ao abrir contas demo.

      Adicionado um campo para inserir a data de nascimento ao abrir contas demo


    3. Corrigida a escalabilidade de indicadores exibidos no subjanela do gráfico. Para alguns osciladores, o valor mínimo e máximo da escala poderia ser selecionado incorretamente.
    4. Otimizada e acelerada a extração de dados de ticks e do histórico de preços, aumentando a velocidade de abertura de gráficos.
    5. Corrigido o problema de edição da cor do texto na janela de criação de mensagens de correio interno.
    6. Atualizadas traduções da interface do usuário.

    MQL5

    1. Novos métodos adicionados ao OpenBLAS:

      • EigenSolver2 — cálculo de autovalores e autovetores generalizados para pares de matrizes quadradas comuns (função lapack GGEV).
      • EigenSolverX — cálculo de autovalores e autovetores de matrizes quadradas comuns no modo especialista (Expert mode), permitindo influenciar o algoritmo de cálculo e obter dados de cálculo auxiliares (função lapack GEEVX).
      • EigenSolver2X — cálculo de autovalores e autovetores generalizados para pares de matrizes quadradas comuns no modo especialista (Expert mode), permitindo influenciar o algoritmo de cálculo e obter dados de cálculo auxiliares (função lapack GGEVX).
      • EigenSolverShur — cálculo de autovalores, matriz triangular superior na forma de Schur e matriz de vetores de Schur (função lapack GEES).
      • EigenSolver2Shur — cálculo para pares de matrizes quadradas comuns de autovalores generalizados, autovetores generalizados, formas de Schur generalizadas e vetores de Schur à esquerda e à direita (função lapack GGES).
      • EigenSolver2Blocked — cálculo de autovalores e autovetores generalizados para pares de matrizes quadradas comuns usando o algoritmo por blocos (função lapack GGEV3).
      • EigenSolver2ShurBlocked — cálculo para pares de matrizes quadradas comuns de autovalores generalizados, autovetores generalizados, formas de Schur generalizadas e vetores de Schur à esquerda e à direita usando o algoritmo por blocos (função lapack GGES3).
      • EigenSymmetricRobust — cálculo de autovalores e autovetores de uma matriz simétrica ou hermitiana (conjugada complexa) usando o algoritmo Multiple Relatively Robust Representations, MRRR (funções lapack SYEVR, HEEVR).
      • EigenSymmetricBisect — cálculo de autovalores e autovetores de uma matriz simétrica ou hermitiana (conjugada complexa) usando o algoritmo de bissecção (funções lapack SYEVX, HEEVX).

    2. Novos métodos adicionados para matrizes complexas:

      • transposeConjugate — para criar uma matriz conjugada-transposta.
        matrix<complex<T>> matrix<complex<T>>::TransposeConjugate(void) const;
        O método retorna uma nova matriz conjugada-transposta, na qual os elementos da matriz original são transpostos e convertidos em seus valores complexos conjugados.

        Em caso de erro, é retornada uma matriz vazia; para obter o código do erro, use a função GetLastError.

      • CompareEqual — comparação absoluta de duas matrizes.
        int matrix<T>::CompareEqual(const matrix<T>& mat) const
        Valores retornados:

        • -1 — se um elemento da matriz A for menor que o elemento correspondente da matriz B.
        • 0 — se todos os elementos das matrizes A e B forem idênticos.
        • 1 — se um elemento da matriz A for maior que o elemento correspondente da matriz B.

        O método também pode retornar erros em caso de estado incorreto dos dados de entrada. Para obter o código do erro, use a função GetLastError.

    3. Adicionado suporte ao Python até a versão 3.13 para o pacote de integração. Para atualizar o pacote, execute o comando:

      pip install --upgrade MetaTrader5

    4. Corrigida a omissão do primeiro evento Timer. O erro ocorria se o timer fosse ativado dentro do manipulador OnTimer.

    MetaEditor

    • Corrigido o cálculo de valores para variáveis de entrada ao trabalhar no depurador. Em alguns casos, em vez do valor, era exibida a mensagem unknown identifier.

    Tester

    • Corrigida a busca por taxas de câmbio cruzadas necessárias para a conversão de moedas ao testar instrumentos de mercado.

    Web Terminal

    1. Adicionado suporte para o modo de execução «Sob consulta» para ordens de grande volume.
    2. Adicionado suporte para descrição detalhada do motivo de rejeição do pedido pela corretora.
    3. Corrigido o formulário de abertura de contas. Agora o conjunto de dados solicitados corresponde às configurações da corretora.
    4. Corrigida a identificação do país ao registrar uma conta demo.
    5. Corrigido o alinhamento do diálogo com o aviso sobre a ativação de negociação com um clique.
    11 outubro 2024
    MetaTrader 5 build 4620: correções de erros no MQL5 e novos métodos OpenBLAS

    Terminal

    1. Terminal: corrigido um erro que, em alguns casos, solicitava um histórico de ticks incompleto.
    2. Terminal: corrigido o autocompletar na seleção de símbolos para idiomas diferentes do inglês. Quando o usuário insere o nome de um símbolo no campo de busca, o sistema começa a sugerir automaticamente as opções correspondentes. Agora a busca funciona corretamente e sem distinção de maiúsculas/minúsculas para qualquer localidade.

    MQL5

    1. Na documentação do MQL5, foi adicionado a descrição de novos métodos OpenBLAS. Atualmente, foram adicionados 15 novos métodos para matrizes e vetores, e o trabalho de expansão continua.
      OpenBLAS é uma solução eficiente de código aberto para cálculos de alto desempenho, especialmente ao lidar com grandes conjuntos de dados.
      Função Ação

      SingularValueDecompositionDC

      Singular Value Decomposition, algoritmo divide and conquer. Considerado o mais rápido entre os outros algoritmos SVD (função lapack GESDD).

      SingularValueDecompositionQR

      Singular Value Decomposition, algoritmo QR. Considerado o algoritmo clássico de SVD (função lapack GESVD).

      SingularValueDecompositionQRPivot

      Singular Value Decomposition, algoritmo QR com pivotamento (função lapack GESVDQ).

      SingularValueDecompositionBisect

      Singular Value Decomposition, algoritmo bissecção (função lapack GESVDX).

      SingularValueDecompositionJacobiHigh

      Singular Value Decomposition, algoritmo Jacobi de alto nível (função lapack GEJSV).

      SingularValueDecompositionJacobiLow

      Singular Value Decomposition, algoritmo Jacobi de baixo nível (função lapack GESVJ). Em alguns casos, calcula valores singulares pequenos e seus vetores singulares com muito mais precisão do que outros subprogramas SVD.

      SingularValueDecompositionBidiagDC

      Singular Value Decomposition, algoritmo divide and conquer para matriz bidiagonal (função lapack BDSDC).

      SingularValueDecompositionBidiagBisect

      Singular Value Decomposition, algoritmo bissecção para matrizes bidiagonais (função lapack BDSVDX).

      EigenSolver

      Cálculo de valores próprios e vetores próprios de uma matriz quadrada comum usando o algoritmo clássico (função lapack GEEV).

      EigenSymmetricDC

      Cálculo de valores próprios e vetores próprios de uma matriz simétrica ou hermitiana (complexo-conjugada) usando o algoritmo divide and conquer (funções lapack SYEVD, HEEVD).

      SingularSpectrumAnalysisSpectrum

      Método-função para calcular as contribuições relativas dos componentes espectrais com base nos valores próprios.

      SingularSpectrumAnalysisForecast

      Função-método para cálculo de dados reconstruídos e previstos usando componentes espectrais da série temporal de entrada.

      SingularSpectrumAnalysisReconstructComponents

      Função-método para cálculo das componentes reconstruídas da série temporal de entrada e suas contribuições.

      SingularSpectrumAnalysisReconstructSeries

      Função-método para cálculo da série temporal reconstruída usando as primeiras component_count componentes.

    2. Corrigidos erros ao executar versões antigas de arquivos executáveis de programas MQL5 (.ex5), nos quais são usados os métodos matrix::CopyRates. Esses erros não ocorriam em arquivos compilados após a instalação das atualizações necessárias.
    3. Corrigida a verificação de tipos de objetos permitidos em union.

    MetaTester

    1. Corrigidas falhas que ocorriam em alguns casos durante a desinicialização de indicadores personalizados.


      4 outubro 2024
      MetaTrader 5 Platform build 4585: melhorias no funcionamento


      Terminal

      • Corrigidos os travamentos que ocorriam em alguns casos ao interromper a perfilagem de programas MQL5.

      MetaEditor

      MetaTester

      • Сorrigidos os travamentos que ocorriam em alguns casos ao reiniciar um único passe de teste.
      27 setembro 2024
      Nova versão da plataforma MetaTrader 5 build 4570: melhorias na versão web e integração com OpenBLAS no MQL5

      Terminal

      1. O acesso às funções de MQL5 para negociação e obtenção de histórico foi restrito em contas com assinatura de sinais.

        Ao detectar uma assinatura em uma conta (independentemente de o espelhamento estar ativado no terminal atual), a chamada de quaisquer funções de negociação MQL5 é bloqueada: obtenção de ordens abertas e posições, histórico de operações e execução de operações de trading. Um aviso correspondente é registrado no log:
        'XXX': assinatura de sinal detectada, funções de negociação e acesso ao histórico no MQL5 e Python desativadas.
        As restrições também se aplicam às chamadas de funções de negociação em Python: positions_total, positions_get, orders_total, orders_get, history_orders_total, history_orders_get, history_deals_total, history_deals_get, order_check, order_send.

        Se a conta for removida da assinatura ou você se conectar a uma conta que não está assinada, a restrição é removida e o log exibe a mensagem:
        'XXX': nenhuma assinatura de sinal detectada, funções de negociação e acesso ao histórico no MQL5 e Python ativadas.
        Com a restrição ativa na conta, as funções do MQL5 retornam os seguintes códigos de resposta:

        • OrderSend, OrderSendAsync — RET_REQUEST_AT_DISABLED_CLIENT
        • OrdersTotal, PositionsTotal — 0
        • PositionGetSymbol, PositionSelect, PositionSelectByTicket, PositionGetTicket — ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
        • OrderGetTicket, OrderSelect — ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
        • HistorySelect — retorna ERR_MQLAPI_TRADE_DEAL_NOT_FOUND

      2. O pedido de histórico de ticks foi corrigido, otimizado e significativamente acelerado, assim como sua exportação para arquivos CSV\HTML.
      3. Foi adicionada a compatibilidade com Microsoft Edge WebView2 para exibir páginas HTML na plataforma de trading no macOS. Comparado ao desatualizado MSHTML, o novo componente amplia significativamente as possibilidades de exibição de conteúdo web, proporcionando acesso a tecnologias modernas. A transição para o WebView2 permitiu melhorar a aparência das seções "Market", "Sinais", "VPS" etc., aumentar o desempenho e criar interfaces mais responsivas.

      4. Corrigido o menu de contexto na janela de envio de e-mail através do correio integrado.
      5. Corrigido o filtro no diálogo de seleção de instrumentos de trading. Agora, não é mais necessário inserir o nome do instrumento expirado na barra de pesquisa para ocultá-lo.
      6. Corrigido o cálculo da margem de garantia esperada na janela de especificação de contrato. O erro ocorria para instrumentos do tipo Ações e Títulos da Bolsa.
      7. Aprimorada a função de fechamento em massa de posições de trading para contas com FIFO. Agora, tipos de operações incompatíveis, como o fechamento de todas as posições lucrativas/perdedoras, posições em uma única direção e posições opostas, não são exibidos.
      8. Corrigido um erro que impedia os usuários de colocarem ordens pendentes em direções opostas em contas onde as posições são fechadas de acordo com a regra FIFO.
      9. Corrigido o cálculo do valor de liquidação da conta de trading para instrumentos do tipo Futuros de Bolsa.
      10. Corrigido o cálculo do lucro flutuante para posições de instrumentos do tipo Títulos de Bolsa e Títulos MOEX.
      11. A função de criação automática de conta demo ao iniciar a plataforma foi desativada, caso não haja contas previamente adicionadas.
      12. Melhorado o controle de entrada de nome e e-mail durante o registro de contas.
      13. Corrigido o cálculo da margem para posições com cobertura. O erro poderia ocorrer em alguns casos ao usar margem flutuante na conta (dependente do volume/valor das posições na conta).
      14. Corrigida a atualização do estado do botão "Próximo" no diálogo de abertura de conta demo. Após inserir o código de confirmação de telefone ou e-mail, o botão poderia permanecer inativo.
      15. Atualizadas as traduções da interface do usuário.

      MQL5

      1. Adicionada integração nativa com a biblioteca de cálculos matriciais OpenBLAS.

        OpenBLAS é uma biblioteca de álgebra linear de alto desempenho e código aberto, que implementa BLAS (Basic Linear Algebra Subprograms) e algumas funções LAPACK. O OpenBLAS visa aumentar o desempenho dos cálculos, especialmente em operações com matrizes e vetores, essenciais para tarefas científicas e de engenharia, como aprendizado de máquina, métodos numéricos e simulações.

        Principais características do OpenBLAS:

        • Suporte a multithreading: o OpenBLAS pode usar eficientemente vários núcleos de processador para cálculos paralelos, acelerando significativamente a execução de operações em sistemas multiprocessadores.
        • Otimização para arquiteturas de processadores: o OpenBLAS inclui compilações otimizadas para vários processadores, como Intel, AMD, ARM e outros. A biblioteca detecta automaticamente as características do processador (conjuntos de instruções suportados, como AVX/AVX2/AVX512) e escolhe as implementações de funções mais adequadas.
        • Suporte para uma ampla gama de operações BLAS: OpenBLAS implementa as principais funções BLAS, como operações com vetores (por exemplo, soma de vetores e produto escalar), matrizes (multiplicação) e operações entre vetores e matrizes.
        • Compatibilidade com LAPACK: a biblioteca suporta várias funções LAPACK (Linear Algebra PACKage), que são necessárias para operações mais complexas de álgebra linear, como a resolução de sistemas de equações lineares, cálculo de autovalores de matrizes, entre outras.
        • Alto desempenho: em comparação com outras bibliotecas BLAS, o OpenBLAS frequentemente apresenta melhores resultados devido à otimização manual para arquiteturas de processadores específicas.

        O OpenBLAS é amplamente utilizado em aplicativos relacionados a cálculos numéricos, como:

        • Treinamento de redes neurais e outras tarefas de aprendizado de máquina.
        • Cálculos científicos (por exemplo, simulações de processos físicos).
        • Processamento e análise de grandes volumes de dados.

        Atualmente, os seguintes métodos estão disponíveis no MQL5:

        Decomposição em valores singulares:

        • SingularValueDecompositionDC — algoritmo divide and conquer. Considerado o mais rápido entre outros algoritmos SVD (função LAPACK GESDD).
        • SingularValueDecompositionQR — algoritmo QR. Considerado o algoritmo clássico de SVD (função LAPACK GESVD).
        • SingularValueDecompositionQRPivot — algoritmo QR com pivotamento (função LAPACK GESVDQ).
        • SingularValueDecompositionBisect — algoritmo de bisseção (função LAPACK GESVDX).
        • SingularValueDecompositionJacobiHigh — algoritmo Jacobi de alto nível (função LAPACK GEJSV).
        • SingularValueDecompositionJacobiLow — algoritmo Jacobi de baixo nível (função LAPACK GESVJ). Em alguns casos, calcula pequenos valores singulares e seus vetores singulares com muito mais precisão do que outros subprogramas SVD.
        • SingularValueDecompositionBidiagDC — algoritmo divide and conquer para matrizes bidiagonais (função LAPACK BDSVDX).
        • SingularValueDecompositionBidiagBisect — algoritmo de bisseção para matrizes bidiagonais (função LAPACK BDSVDX).

        Métodos Eigen:

        • EigenSolver — cálculo de autovalores e autovetores de uma matriz quadrada clássica (função LAPACK GEEV).
        • EigenSymmetricDC — cálculo de autovalores e autovetores de uma matriz simétrica ou hermitiana (conjugada complexa) usando o algoritmo divide and conquer (funções LAPACK SYEVD, HEEVD).

        A documentação detalhada estará disponível em breve.

      2. Foi adicionado o valor SYMBOL_SWAP_MODE_CURRENCY_PROFIT na enumeração ENUM_SYMBOL_SWAP_MODE. Se a função SymbolInfoInteger retornar esse valor, significa que os swaps na conta são creditados em dinheiro na moeda de cálculo do lucro.
      3. Suporte expandido para ONNX Runtime. Novos tipos de operações de aprendizado de máquina foram adicionados, permitindo a execução de modelos neurais mais complexos.
      4. A transição para um compilador MQL5 mais eficiente continua. Ele já é utilizado para algumas funções. A transição permitirá o uso de novas otimizações e aumentará a velocidade de execução dos programas.
      5. Novos tipos de dados foram adicionados, necessários para o suporte à biblioteca OpenBLAS.

        • complexf — número complexo com dados float
        • vectorcf — vetor contendo elementos do tipo complexf
        • matrixcf — matriz contendo elementos do tipo complexf

      6. Melhorado o funcionamento de WebRequest ao lidar com sites que violam as regras de formação de URL, possuem erros em redirecionamentos ou longas listas de nomes DNS alternativos.
      7. Corrigida a atribuição simultânea para várias variáveis do tipo matrix ou vector.

      MetaEditor

      1. Modelos disponíveis para AI Assistant foram atualizados. Agora, em vez do GPT-3.5 Turbo, utiliza-se o mais moderno GPT-4o mini. Também foi adicionada a versão da modelo 01-mini.
      2. Corrigido um erro no depurador, onde, em alguns casos, os valores das variáveis não eram atualizados na janela de observação.
      3. Atualizadas as traduções da interface do usuário.

      MetaTester

      1. Corrigida a gravação dos coeficientes de margem nas configurações personalizadas de símbolo.
      2. Corrigidos vazamentos de memória que ocorriam em alguns casos entre os ciclos de teste.

      Web Terminal

      1. Adicionado o modo "Cruz" para exibir valores precisos e medir distâncias no gráfico.

        Clique no botão correspondente na barra lateral esquerda. Posicione a cruz em qualquer ponto do gráfico — a data e o preço serão exibidos nas escalas apropriadas. Para medir distâncias, clique em qualquer ponto do gráfico e arraste o cursor até outro ponto, sem soltar o botão do mouse.




        Você também pode usar atalhos de teclado: o botão do meio do mouse para ativar o cruzamento, Esc ou o botão direito do mouse para desativá-lo.

      2. Adicionada a visualização de gráfico em linha simples, construída com base nos preços de fechamento das barras:




      3. Adicionada a capacidade de exibir colunas adicionais na "Observação de mercado" na visualização móvel. Para configurar, vá para o modo de tabela e clique em "…":




      4. Novos atalhos de teclado adicionados:

        • Home — rola até o início do gráfico (data mais antiga)
        • End — rola até o final do gráfico (data mais recente)
        • Page Up — rola o gráfico uma tela para trás
        • Page Down — rola o gráfico uma tela para frente

      5. Segurança aprimorada no armazenamento de dados de conexão à conta.
      6. Melhorias na rolagem, movimentação e zoom dos gráficos.
      7. Acelerado o carregamento inicial da web-plataforma na página.
      8. Otimizado carregamento de barras.
      9. Corrigido o cálculo do lucro flutuante para posições de instrumentos do tipo Títulos de Bolsa e Títulos MOEX.
      10. Corrigida a entrada de volume no painel de negociação rápida no gráfico.
      11. Corrigido o erro de atualização de volumes de pedidos no livro de ofertas. Em alguns casos, os valores poderiam ser atualizados com atraso.
      12. Corrigida a verificação do volume mínimo permitido para operações de trading ao colocar ordens.
      13. corrigido o cálculo da margem para posições com cobertura. O erro poderia ocorrer em alguns casos ao usar margem flutuante na conta (dependente do volume/valor das posições na conta).
      14. Corrigido o erro em que os botões Buy e Sell no painel de negociação rápida poderiam ficar inativos até a alteração do volume.

      21 junho 2024
      MetaTrader 5 build 4410: melhorias no desempenho
      MetaTrader 5 build 4410: melhorias no desempenho

      Terminal

      1. Corrigida a falha do terminal que ocorria em alguns casos durante a inicialização dos testes.

      MQL5

      1. Corrigido o funcionamento da propriedade MQL_PROGRAM_NAME para programas de serviço. Anteriormente, ela podia retornar um nome incorreto da instância do serviço.

      Terminal Web

      1. Corrigida a verificação de compatibilidade do navegador com o web terminal. Em alguns casos, os usuários podiam receber uma mensagem de erro informando que seu navegador não era suportado.
      2. Corrigida a abertura de contas demo.
      3. Pequenas correções e melhorias.

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

      MetaTrader 5 Android

      1. Interface totalmente renovada para a versão do aplicativo para tablets. Agora, utiliza um design moderno, já testado nas versões para iOS e web da plataforma. As seções principais agora estão localizadas na parte inferior da tela, e os comandos para trabalhar com gráficos, na parte esquerda.




      2. Adicionado menu contextual na seção de histórico de posições, permitindo acesso rápido ao diálogo de negociação ou ao gráfico do símbolo correspondente.
      3. Ocultado o comando de acesso ao diálogo de negociação para símbolos não negociáveis.
      4. Corrigido o funcionamento com o servidor MetaQuotes-Demo.

      Atualize seus aplicativos móveis para o build 4360 através do Google Play, Huawei AppGallery ou baixe o arquivo APK.



      7 junho 2024
      MetaTrader 5 build 4380: melhorias no desempenho

      Terminal

      1. Correção de bugs que, em alguns casos, causavam mau funcionamento do sistema Live Update.
      2. Adicionada a tecla de atalho Alt+X para chamar a lista de experts.
      3. Correções de crash logs.

      MetaTester

      1. Correção de erros na definição de algumas propriedades do objeto gráfico "Imagem".
      2. É proibido conectar agentes de teste à MQL5 Cloud Network quando estiver trabalhando em ambientes virtuais e quando o processador não for compatível com o conjunto de instruções AVX.

      Terminal Web

      1. Foi corrigido um erro no painel Quick Trade no gráfico.
      2. Corrigida a caixa de diálogo de aviso que se abre quando o painel Quick Trade é ativado em um gráfico.
      31 maio 2024
      MetaTrader 5 build 4350: mais objetos analíticos na plataforma web e página inicial no MetaEditor

      MetaEditor

      1. Adicionada uma página inicial, que ajudará você a começar sua jornada no trading algorítmico e no desenvolvimento de aplicativos de trading.



        Materiais para iniciantes
        A seção "Introdução" fornece detalhes sobre os materiais de aprendizado disponíveis no MQL5.com: documentação completa da linguagem, livros, artigos, fórum de desenvolvedores, além de uma biblioteca de códigos prontos. Aqui você também conhecerá os serviços onde pode aplicar e monetizar seus conhecimentos: mercado de aplicativos, plataforma de freelancers e sinais de trading.

        Nas seções de documentação e livros, você encontrará uma descrição mais detalhada dos materiais de aprendizado disponíveis.

        Recursos úteis para quem já desenvolve
        Na seção "Novidades", reunimos o máximo de informações necessárias para o desenvolvedor se manter atualizado:


        Aqui também há uma lista dos últimos arquivos abertos para acesso rápido.



        Se você já está ativamente vendendo seus aplicativos no Market, o relatório "Minhas vendas" ajuda a avaliar seu desempenho. Estão disponíveis para você:

        • Estatísticas gerais de vendas e downloads ao longo do tempo.
        • Geografia das vendas, para entender onde suas criações são mais populares. Isso pode sugerir ideias para o desenvolvimento futuro do projeto, como localização para determinados idiomas ou lançamento de campanhas publicitárias em regiões específicas.
        • Dados sobre os produtos mais populares em termos de quantidade de vendas e receita total. O gráfico pode ser filtrado pelo tipo de licença: completa ou aluguel por um período específico. Também há um gráfico mostrando a variação de preço do produto. Tudo isso ajuda a entender melhor seus clientes.
        • Estatísticas detalhadas de downloads e vendas para cada produto.


      2. Melhoramos a busca integrada. Agora, a barra de pesquisa superior é usada apenas para procurar texto no documento atual ou em arquivos locais. Para pesquisa global em materiais de aprendizagem e códigos, use a seção separada em "Ferramentas".


      3. Para o AI Assistant, adicionamos suporte ao GPT-4 — o mais recente modelo do ChatGPT. Agora você pode usá-lo para autocompletar código e obter sugestões. Escolha o novo modelo nas configurações do MetaEditor.


      4. Atualizamos as traduções da interface do usuário.

      Terminal

      1. Aumentamos a precisão da exibição do preço calculado na especificação do instrumento de negociação.
      2. Corrigimos o cálculo dos indicadores MFE e MAE no relatório de negociação.
      3. Corrigimos a salvaguarda e restauração das configurações de filtragem do calendário econômico por país e moeda.
      4. Corrigimos a aplicação de templates aos gráficos. Agora, se a exibição do histórico de negociação estiver ativada no gráfico, os objetos correspondentes não desaparecerão após a aplicação do template.
      5. Corrigimos um erro na tabela de opções. Em alguns casos, ao adicionar símbolos, a plataforma poderia travar.
      6. Corrigimos um erro no diálogo de edição de posições. Em alguns casos, valores incorretos de Stop Loss e Take Profit poderiam ser inseridos nos campos correspondentes.
      7. Atualizamos as traduções da interface do usuário.

      MQL5

      1. Otimizamos e aceleramos significativamente a função ArrayResize. Em alguns casos, o desempenho pode ser até 40% mais rápido.
      2. Atualizamos o suporte para ONNX.
      3. Corrigimos a chamada da função MessageBox em programas-serviços. Independentemente do botão que o usuário clicava no diálogo, a função retornava um valor nulo.
      4. Corrigimos um erro que, em alguns casos, levava à inicialização incompleta dos programas MQL5.
      5. Corrigimos um erro de análise de alguns macros. O erro ocorria ao usar um grande número de constantes.


      MetaTrader 5 Web Terminal

      1. Ampliamos o conjunto de objetos analíticos disponíveis. Agora você pode usar a "régua" para medir tempo e preços, figuras (retângulo, elipse, triângulo, círculo), além de adicionar qualquer anotação ao gráfico. Todos os objetos estão disponíveis no painel esquerdo:


      2. Adicionada a possibilidade de renomear objetos.
      3. Melhoramos a integração com o calendário econômico. Otimizamos e aceleramos a solicitação de dados.
      4. Aceleramos a performance dos gráficos.
      5. Acelerados o início do aplicativo e a conexão à conta de negociação.
      6. Corrigida a configuração que controla a exibição de operações de negociação no gráfico.
      7. Corrigimos a exibição dos requisitos de margem na especificação do contrato.
      8. Corrigimos a exibição do estado da conta na seção de histórico. O problema ocorria em dispositivos com tela estreita.
      9. Corrigimos a exibição do livro de ofertas.
      22 março 2024
      MetaTrader 5 build 4260: melhorias gerais

      Terminal

      1. Corrigido um erro de assinatura de produtos gratuitos no serviço "Assinaturas". Em alguns casos, o botão correspondente pode estar ausente na caixa de diálogo.
      2. Atualizações nas traduções da interface do usuário.

      MQL5

      1. Expandido o suporte para eventos de teclado:

        • Adicionado o evento CHARTEVENT_KEYUP para o manipulador OnChartEvent. Ele permite monitorar quando um usuário solta uma tecla no teclado.
        • Adicionado o tratamento de teclas "Mortas" (Dead keys), que são teclas que permitem alterar a aparência do próximo caractere a ser inserido. Por exemplo, no layout grego, para colocar acentos em vogais ά, έ, ύ, etc., é necessário pressionar a tecla ";", e então digitar a letra. Agora, o pressionamento dessas teclas pode ser monitorado usando a função TranslateKey.
        • As funções TranslateKey e TerminalInfoInteger foram melhoradas. Agora, ao receber eventos CHARTEVENT_KEYUP ou CHARTEVENT_KEYDOWN no OnChartEvent, você pode obter o estado completo do teclado no momento do evento. Por exemplo, se um usuário pressionou a tecla Z, você poderá saber se a tecla Ctrl ou Shift foi pressionada naquele momento. Para outros eventos, as funções funcionarão como antes, retornando o estado do teclado no momento atual.

      2. Atualizada biblioteca Alglib. Devido à atualização, os seguintes métodos nas classes CMatrixDouble e CMatrixComplex foram alterados:
        vector<double/complex> operator[](const int i) const;
        vector<double/complex> operator[](const ulong i) const;
        Agora, em vez deles, é usado um método com um valor de retorno constante:
        const vector<double/complex> operator[](const ulong i) const;
        A correção permitirá capturar o uso incorreto do resultado no na nova versão do Alglib, o código mat[row][col]=x funciona de forma diferente do antigo. Antes, era uma escrita na matriz, e agora - escrita em um objeto vector<double/complex> temporário, que é destruído imediatamente após a escrita.

        Adicionar const ao valor de retorno torna impossível usar a gravação mat[row][col]=x. Como mat[row] agora retorna um vetor constante, tentar reescrever seu elemento através de mat[row][col] levará a um erro de compilação.

      3. Corrigido um erro que, em alguns casos, poderia levar a um funcionamento incorreto das funções ChartGet*.

      MetaEditor

      1. Adicionada pesquisa pelo livro "Redes Neurais e Algotrading no MQL5". Agora, ele está unificado em uma seção com o livro anteriormente lançado "Programação em MQL5 para Traders".



      Tester

      1. Corrigida a otimização em um grande número de agentes remotos. Em alguns casos, o erro poderia levar a uma carga excessiva no CPU.


      MetaTrader 5 Web Terminal

      1. Corrigida a emissão de ordens limitadas para instrumentos com execução a mercado. Agora, ao alterar o preço de uma ordem limitada em relação ao atual (mais alto ou mais baixo), o tipo de ordem proposto não mudará de Buy Limit para Sell Limit e vice-versa, como acontece para instrumentos de outros tipos. Assim, o usuário poderá, se necessário, emitir ordens Buy Limit acima do mercado e Sell Limit abaixo do mercado, para garantir limitação de preço na transação.
      2. Corrigida a exibição de contadores de símbolos selecionados na "Observação do Mercado".
      7 março 2024
      MetaTrader 5 build 4230: mais aplicativos embutidos e expansão do suporte ONNX

      Terminal

      1. Adicionados 28 novos EAs e 12 novos indicadores ao pacote padrão da plataforma. Os aplicativos estão disponíveis nas seções "Advisors\Free Robots" e "Indicators\Free Indicators" no Navegador. Para cada um deles, o código fonte está disponível com comentários detalhados, o que ajudará você a estudar a linguagem MQL5.

        Nos robôs, foram implementadas estratégias de negociação baseadas em indicadores técnicos e padrões de velas, como 3 Black Crows – 3 White Soldiers, Bullish Engulfing – Bearish Engulfing, Bullish Harami – Bearish Harami e outros. Os novos indicadores são a implementação de canais populares: Camarilla, DeMark, Donchian, Fibonacci, Keltner e outros.



      2. Estão em andamento preparativos para lançar assinaturas de dados de mercado Nasdaq. Diretamente da plataforma, os traders poderão acessar cotações em tempo real e um histórico de preços profundo de centenas de instrumentos financeiros de uma das maiores bolsas. Para isso, é necessário apenas uma conta demo no servidor MetaQuotes-Demo e uma conta MQL5.community.



        Ao assinar, basta adicionar os instrumentos relevantes à "Observação do Mercado" e começar a trabalhar. Você poderá abrir gráficos, analisá-los com qualquer objeto e indicador, bem como usar os dados para testar estratégias de negociação no testador. O acesso a todas as informações é feito de maneira padrão, como para os instrumentos financeiros comuns com os quais você trabalha com a corretora.

      3. A seção de margem na especificação do instrumento foi aprimorada. Agora ela mostra tanto os coeficientes de margem para cada tipo de instrumento quanto os valores finais de margem calculados.



        Também foram corrigidos erros na exibição da margem para alguns tipos de instrumentos.

      4. Adicionado um link para o canal do Telegram MQL5 no menu "Ajuda". No canal, são publicados regularmente materiais interessantes para desenvolvedores: revisões de novos artigos sobre programação e robôs e indicadores gratuitos da biblioteca de códigos CodeBase. Inscreva-se no canal para não perder informações importantes.



      5. Adicionado suporte para o parâmetro ShutdownTerminal na seção [StartUp] dos arquivos de configuração personalizados. Use este parâmetro para iniciar a plataforma e executar tarefas únicas por meio de scripts. Por exemplo, você tem um script que tira um screenshot do gráfico. Você cria um arquivo de configuração que inicia este script junto com a plataforma. Se adicionar a ele ShutdownTerminal com o valor "Yes", a plataforma será automaticamente desligada logo após a conclusão do script.
      6. Reforçada a segurança dos protocolos de rede e produtos no Mercado.
      7. o suporte ao serviço de "Sinais" foi desativado para contas demo. Para obter estatísticas avançadas sobre suas contas de treinamento, use o novo relatório de negociação. Ele fornece uma série de indicadores sobre a rentabilidade e o risco da sua estratégia, contém gráficos de crescimento, balanço e patrimônio líquido, diagramas de distribuição de operações por direção e instrumentos, e muito mais.
      8. Corrigida a exibição de links para contratos de corretagem no menu "Ajuda".
      9. Melhorada a seleção do melhor servidor ao alugar um VPS.
      10. Corrigida a atualização da página de assinaturas ao alternar entre seções no Navegador.
      11. Corrigida a atualização da lista de contratos ao abrir uma conta preliminar.
      12. Atualizadas as traduções da interface do usuário.

      MQL5

      1. Adicionada a propriedade MQL_STARTED_FROM_CONFIG à enumeração ENUM_MQL_INFO_INTEGER. Retorna verdadeiro se o script/expert foi iniciado na seção StartUp do arquivo de configuração. Isso significa que este script/expert foi escrito no arquivo de configuração com o qual o terminal foi iniciado.
      2. Continua o trabalho de expansão do suporte para modelos ONNX.

        As tarefas de aprendizado de máquina nem sempre exigem maior precisão computacional. Para acelerar os cálculos, alguns modelos usam tipos de dados com menor precisão, como Float16 e até mesmo Float8. Para que os usuários possam fornecer esses dados como entrada para os modelos, as seguintes funções foram adicionadas ao MQL5:
        bool ArrayToFP16(ushort &dst_array[],const float &src_array[],ENUM_FLOAT16_FORMAT fmt);
        bool ArrayToFP16(ushort &dst_array[],const double &src_array[],ENUM_FLOAT16_FORMAT fmt);
        bool ArrayToFP8(uchar &dst_array[],const float &src_array[],ENUM_FLOAT8_FORMAT fmt);
        bool ArrayToFP8(uchar &dst_array[],const double &src_array[],ENUM_FLOAT8_FORMAT fmt);
        
        bool ArrayFromFP16(float &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
        bool ArrayFromFP16(double &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
        bool ArrayFromFP8(float &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
        bool ArrayFromFP8(double &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
        Como os formatos de números reais para 16 e 8 bits podem variar, no parâmetro fmt nas funções de conversão é necessário especificar qual formato de número precisa ser processado. Para versões de 16 bits, é utilizada a nova enumeração NUM_FLOAT16_FORMAT, que atualmente possui os seguintes valores:

        • FLOAT_FP16 — formato padrão de 16 bits, também conhecido como half.
        • FLOAT_BFP16 — formato especial brain float point.

        Para versões de 8 bits, é utilizada a nova enumeração ENUM_FLOAT8_FORMAT, que atualmente possui os seguintes valores:

        • FLOAT_FP8_E4M3FN — número de ponto flutuante de 8 bits, 4 bits para o expoente e 3 bits para a mantissa. Geralmente usado como coeficientes.
        • FLOAT_FP8_E4M3FNUZ — número de ponto flutuante de 8 bits, 4 bits de expoente e 3 bits de mantissa. Suporta NaN, não suporta zero negativo e Inf. Geralmente usado como coeficientes.
        • FLOAT_FP8_E5M2FN — número de ponto flutuante de 8 bits, 5 bits de expoente e 2 bits de mantissa. Suporta NaN e Inf. Geralmente usado para gradientes.
        • FLOAT_FP8_E5M2FNUZ — número de ponto flutuante de 8 bits, 5 bits de expoente e 2 bits de mantissa. Suporta NaN e Inf, não suporta zero negativo. Também usado para gradientes.


      3. Adicionados novos métodos de matrizes e vetores usados em aprendizado de máquina:

        • PrecisionRecall — calcula valores para a construção da curva precision-recall. Este método, assim como o método ClassificationScore, é aplicado a um vetor de valores verdadeiros
        • ReceiverOperatingCharacteristic — calcula valores para a construção da curva Receiver Operating Characteristic (ROC). Este método, assim como o método ClassificationScore, é aplicado a um vetor de valores verdadeiros.

      4. ONNX Runtime atualizado para a versão 1.17. Detalhes do lançamento estão disponíveis no GitHub.
      5. pacote de integração com Python atualizado para a versão 5.0.4200, adicionado suporte para Python 3.12. Atualize seu pacote com o comando "pip install --upgrade MetaTrader5" para obter as últimas mudanças.
      6. Corrigido o funcionamento da função OrderCalcMargin para alguns casos.
      7. Adicionado o valor DEAL_REASON_CORPORATE_ACTION à enumeração ENUM_DEAL_REASON - operação realizada como resultado de uma ação corporativa: fusão ou renomeação de um título, transferência de um cliente para outra conta, etc.
      8. Adicionado suporte para comparação de vetores e matrizes complexos para o método Compare. A comparação envolve estimar a distância entre números complexos. A distância é calculada usando a seguinte fórmula sqrt(pow(r1-r2, 2) + pow(i1-i2, 2)) e é um número real que já pode ser comparado com épsilon.
      9. Corrigida a conversão de variáveis ​​de tipo de cor para texto no formato RGB.
      10. Corrigido o retorno do resultado da obtenção de autovetores no método Eig no caso de autovalor complexo. Adicionada sobrecarga de método para soluções complexas.

      MetaEditor

      1. Adicionado um link para o recém-publicado livro "Programação no MQL5 para traders" no menu Ajuda\MQL5.community. O livro também foi adicionado ao sistema de busca, permitindo que você encontre materiais necessários diretamente do MetaEditor:




      2. O recurso de busca embutido foi aprimorado:

        • A seção de resultados de busca na janela "Ferramentas" foi dividida em duas abas: "Busca" — para resultados de busca online (documentação, artigos, livro, etc.), "Busca em arquivos" — para resultados locais.
        • Na seção de resultados, foi adicionada uma linha de busca separada. Você pode usá-la em vez da linha de busca na barra de ferramentas principal do MetaEditor.

      3. Adicionado suporte aos modos AVX, AVX2 e AVX512 na compilação de programas a partir da linha de comando. Para isso, adicione um dos seguintes parâmetros ao comando: /avx, /avx2 ou /avx512.
      4. O motor SQLite para trabalhar com bancos de dados foi atualizado para a versão 3.45.
      5. Suporte ao Internet Explorer foi descontinuado. Agora, para a exibição de páginas HTML, é utilizado apenas Microsoft Edge WebView2. Comparado com o obsoleto MSHTML, o novo componente expande significativamente as capacidades de exibição de conteúdo web, fornecendo acesso a tecnologias modernas. A transição para o WebView2 permitirá melhorar a aparência de algumas seções do MetaEditor, aumentar sua performance, criar interfaces mais responsivas.
      6. Corrigido um travamento que ocorria em casos raros durante o preenchimento automático de funções.
      7. Corrigido um travamento que ocorria em casos raros durante o preenchimento automático de funções.

      Testador

      1. Corrigido o cálculo do swap triplo caso o dia de início do teste caia no dia do swap triplo.

      Correções de acordo com os logs de erro.

      MetaTrader 5 Web Terminal

      A exibição dos requisitos de margem na especificação do contrato foi melhorada. Agora, além dos coeficientes e parâmetros iniciais para cálculo, é exibido o valor da margem final. Se o valor da margem depender do volume da posição, os níveis correspondentes serão mostrados na caixa de diálogo.



      A margem é calculada considerando o preço do instrumento no momento da abertura da janela de especificação e não muda em tempo real. Por isso, os valores devem ser considerados como aproximados. Para recalcular os valores com base nos preços atuais, reabra a especificação do instrumento.
      18 janeiro 2024
      MetaTrader 5 build 4150: exportação de relatórios de negociação e novos métodos de aprendizado de máquina em MQL5

      Terminal

      1. Adicionada exportação de relatório de negociação para arquivo HTML e PDF. Agora você pode compartilhar facilmente seu performance de negociação com colegas ou investidores. Para exportar, use o menu no próprio relatório ou o menu Arquivo.




      2. Adicionada a capacidade de salvar o estado atual da janela Observação do Mercado em um arquivo CSV. Para fazer isso, clique em “Exportar” no menu de contexto. O arquivo armazenará os valores dos indicadores selecionados no momento da exportação. Para carregue mais dados, ative colunas adicionais por meio do menu de contexto.




      3. Aprimorada exibição dos requisitos de margem nas especificações do contrato. Agora, em vez de coeficientes e parâmetros iniciais para cálculo, é exibido o valor da margem final. Se o valor da margem depender do volume da posição, a caixa de diálogo mostrará os níveis correspondentes.



        A margem é calculada levando em consideração o preço do instrumento no momento da abertura da janela de especificação e não muda em tempo real. Dessa forma, os valores devem ser tomados apenas como indicativos. Para recalcular os valores a preços atuais, reabra a especificação do instrumento.

      4. Desativado o suporte ao serviço "Sinais" para contas demo. Para obter estatísticas avançadas sobre suas contas de demonstração, use o novo relatório de negociação. Ele apresenta uma série de indicadores sobre a lucratividade e o risco de sua estratégia, além de conter gráficos de crescimento, saldo e patrimônio líquido, gráficos de distribuição de negociações por direção e instrumentos e muito mais.
      5. Corrigida a exibição de lucro/perda potencial ao editar Take Profit e Stop Loss para ordens Stop Limit.
      6. Inúmeras correções e melhorias no sistema de pagamentos.
      7. Corrigida a verificação de duplicatas ao carregar o conjunto de ferramentas na Observação do Mercado a partir de um arquivo *.set.
      8. Corrigido o instalador web do Paralles. Agora, a plataforma será instalada corretamente ao usar esse sistema de virtualização no macOS com processadores M1/M2/M3.
      9. Atualizadas traduções da interface do usuário.
      10. Correções de log de falhas.

      MQL5

      1. Adicionados novos métodos para trabalhar com matrizes e vetores. Eles são usados ​​​​em aprendizado de máquina.

        • ConfusionMatrix — calcula a matriz de erros. O método é aplicado a um vetor de valores previstos.
        • ConfusionMatrixMultilabel — calcula a matriz de erros para cada etiqueta. O método é aplicado a um vetor de valores previstos.
        • ClassificationMetric — calcula uma métrica de classificação para avaliar a qualidade dos dados previstos em relação aos dados reais. O método é aplicado ao vetor de valores previstos.
        • ClassificationScore — calcula uma métrica de classificação para avaliar a qualidade dos dados previstos em relação aos dados reais. O método é aplicado a um vetor de valores verdadeiros.
         
      2. Corrigido o salvamento de dados em um arquivo de texto UTF-8 usando a função FileWrite.
      3. Desativadas e feitas obsoletas as funções Signal*. Agora, elas retornarão conjuntos de sinais vazios.

      MetaEditor

      1. Aumentada a frequência de amostragem durante a criação de perfis. Agora, o estado do aplicativo é amostrado 10.000 vezes por segundo, o que permite medir a velocidade de execução da função com muito mais precisão.
      2. Atualizados os modelos disponíveis na ferramenta de auto-preenchimento de código AI Assistant. Adicionado modelo ChatGPT-4 Turbo, removidas implementações desatualizadas.
      3. Corrigidos erros ao substituir palavras no fragmento de texto selecionado.

      Tester

      1. Corrigido o travamento do teste avançado. O problema podia ocorrer no modo de otimização genética.
      2. Otimizado e significativamente acelerado o trabalho com o histórico de negociação dos programas MQL5.
      3. Corrigido o cálculo do lucro em transações de fechamento com oposta. O erro podia ocorrer para instrumentos de negociação que não são a principal ferramenta de teste.

      Terminal Web

      1. Corrigida atualização das propriedades dos instrumentos de negociação quando elas são alteradas por parte da corretora.
      2. Corrigida a exibição do corpo da vela no gráfico. O corpo podia não ser visível se fosse pequeno.
      3. Corrigido o funcionamento do campo “País” no formulário de abertura de conta.
      20 outubro 2023
      MetaTrader 5 build 4040: Melhorias e correções

      Terminal

      1. Melhorado o novo relatório de negociação. Corrigida a exibição do primeiro valor no gráfico de crescimento, bem como o cálculo da rebaixamento.



      2. Ao abrir uma conta, cada trader recebe várias mensagens por e-mail interno. Além dos dados de conexão, é possível encontrar muitas informações úteis sobre os recursos da plataforma e serviços integrados. Atualizamos e complementamos esses emails, traduzimos para 50 idiomas e renovamos completamente o design.
      3. Otimizadas as páginas de depósito e retirada de fundos da conta.
      4. Corrigido o erro de alteração de volume ao emitir uma nova ordem. Em algumas combinações de configurações do instrumento de negociação, o campo estava indisponível para edição.
      5. Corrigida a exibição de links para acordos com corretores no diálogo de abertura de uma conta demo.
      6. Atualizadas as traduções da interface do usuário.

      MQL5

      1. Corrigido um erro que, em alguns casos, levava à falha do programa MQL5 ao iniciar a plataforma.

      Terminal da Web MetaTrader 5

      1. Corrigida a exibição de Stop Loss e Take Profit no histórico de negociações.
      2. Expandida a saída no log. Agora, ele exibirá mensagens sobre conexões bem-sucedidas e malsucedidas.
      3. Corrigido o funcionamento do menu de contexto em "Observação do mercado".
      4. Corrigida a exibição de notificações sobre os resultados das operações ao negociar a partir do livro de ofertas.
      5. Corrigido um erro pelo qual a janela do indicador poderia ser removida do gráfico ao chamar o diálogo de negociação.
      6. Corrigido o arrasto de níveis de negociação no gráfico no caso de eles serem exibidos sobre objetos analíticos.
      29 setembro 2023
      MetaTrader 5 build 4000: Melhorias no relatório de negociação e no terminal da Web

      Terminal

      1. Agora, você pode visualizar o crescimento mensal em dinheiro no novo relatório de negociação. Para acessar essas informações, vá para o relatório "Summary" e selecione o modo "Balance".



      2. Aprimoramos e corrigimos a exibição do novo relatório de negociação.
      3. Atualizamos o ONNX Runtime para a versão 1.16. Os detalhes da versão estão disponíveis no GitHub.
      4. Também atualizamos as traduções da interface do usuário.

      MetaTrader 5 Web Terminal

      1. Corrigimos a exibição dos diálogos de alteração de senha e abertura de conta.
      2. Corrigimos um erro na exibição de Stop Loss e Take Profit no histórico, que ocorria após modificações.
      3. Adicionamos a capacidade de rolar na caixa de diálogo de alerta de riscos.
      4. também atualizamos as traduções da interface do usuário.
      5. Realizamos várias melhorias e correções.
      21 setembro 2023
      MetaTrader 5 build 3980: Melhorias e correções

      Terminal

      1. Aprimorado o novo relatório de negociação. Corrigida a exibição dos valores totais dos swaps, bem como o gráfico de lucros para os símbolos.
      2. Otimizadas as páginas de depósito e saque. Saiba mais sobre a nova integração da plataforma com sistemas de pagamento lendo nossa anterior notícia sobre o build 3950.
      3. Otimizado o recálculo de operações financeiras em toda a plataforma, incluindo o testador de estratégias. Os lucros, as margens e muitos outros parâmetros agora são calculados mais rapidamente.
      4. Atualizadas as traduções da interface do usuário.

      MQL5

      1. adicionados os métodos Conjugate para os tipos complex, vetor<complex> e matrix<complex>. Eles realizam a conjugação para números complexos.
        //+------------------------------------------------------------------+
        //| Script program start function                                    |
        //+------------------------------------------------------------------+
        void OnStart()
          {
           complex a=1+1i;
           complex b=a.Conjugate();
           Print(a, "  ", b);
           /*
           (1,1)  (1,-1)
           */
        
           vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
           vectorc vb=va.Conjugate();
           Print(va, "  ", vb);
           /*
           [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
           */
        
           matrixc ma(2, 3);
           ma.Row(va, 0);
           ma.Row(vb, 1);
           matrixc mb=ma.Conjugate();
           Print(ma);
           Print(mb);
           /*
           [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
            [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
        
           [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
            [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
           */
           
           ma=mb.Transpose().Conjugate();
           Print(ma);
           /*
           [[(0.1,0.1),(0.1,-0.1)]
            [(0.2,0.2),(0.2,-0.2)]
            [(0.3,0.3),(0.3,-0.3)]]
           */
          }
      2. Adicionado o processamento da saída do modelo ONNX do tipo Sequence of maps.

        Para modelos ONNX que fornecem sequências Map (ONNX_TYPE_SEQUENCE of ONNX_TYPE_MAP) na camada de saída, um array dinâmico ou fixo de estruturas deve ser passado como parâmetro de saída. Os dois primeiros campos dessa estrutura devem corresponder aos tipos de chave e valor de ONNX_TYPE_MAP e devem ser arrays fixos ou dinâmicos.

        Veja o modelo iris.onnx criado pelo seguinte script Python:
        from sys import argv
        data_path=argv[0]
        last_index=data_path.rfind("\\")+1
        data_path=data_path[0:last_index]
        
        from sklearn.datasets import load_iris
        iris_dataset = load_iris()
        from sklearn.model_selection import train_test_split
        X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
        from sklearn.neighbors import KNeighborsClassifier
        knn = KNeighborsClassifier(n_neighbors=1)
        knn.fit(X_train, y_train)
        
        #  Convert into ONNX format
        from skl2onnx import convert_sklearn
        from skl2onnx.common.data_types import FloatTensorType
        initial_type = [('float_input', FloatTensorType([None, 4]))]
        onx = convert_sklearn(knn, initial_types=initial_type)
        path = data_path+"iris.onnx"
        with open(path, "wb") as f:
            f.write(onx.SerializeToString())
        Abra o arquivo onnx criado no MetaEditor:

        Visualização do modelo ONNX no MetaEditor


        A saída "output_probability" é uma sequência Map, cuja chave tem o tipo INT64 (que corresponde ao tipo long da linguagem MQL5) e o valor do tipo float. Para obter dados dessa saída, declaramos a seguinte estrutura:
        struct MyMap
          {
           long              key[];
           float             value[];
          };
        Aqui usamos arrays dinâmicos com tipos apropriados. Nesse caso, é possível usar arrays fixos, já que para esse modelo o Map sempre contém 3 pares de chave+valor.

        Como uma sequência é retornada do Map, como parâmetro para aceitar os dados com a saída output_probability deve ser passada um array de tais estruturas - dinâmico ou fixo, com base nas propriedades do modelo específico. Por exemplo:
        //--- declaramos um array para receber dados da camada de saída output_probability
        MyMap output_probability[];
        
        ...
        
        //--- execução do modelo
        OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

      MetaEditor

      1. Corrigida a exibição do tipo de parâmetro de saída no visualizador de modelos ONNX.

      MetaTrader 5 Web Terminal build 3980

      1. Adicionada a seção de contato da corretora ao menu principal.
      2. Adicionado o tratamento de erro de autorização com certificado SSL. Esse tipo de autorização não é compatível com o terminal da Web e, em vez disso, a autorização por senha de uso único pode ser ativada.
      3. Corrigido o link para download da versão desktop da plataforma no menu principal.
      4. Alterado o diálogo de gerenciamento de contas. Se a corretora não tiver contas de demonstração ou reais disponíveis, o item de menu correspondente ficará oculto.
      anterior12345678910111213141516