Nova versão da plataforma MetaTrader 5 build 5200: expansão do OpenBLAS e reforço de controle no MQL5

 

Na sexta-feira, 1º de agosto de 2025, será lançada a versão atualizada da plataforma MetaTrader 5.

Nesta versão, ampliamos significativamente o suporte à biblioteca de álgebra linear OpenBLAS no MQL5, adicionando quase trinta novas funções. Elas oferecem mais possibilidades para o desenvolvimento de EAs com uso de aprendizado de máquina.

Além disso, o MQL5 teve o controle de qualidade dos programas desenvolvidos reforçado. Novas verificações e restrições no compilador ajudam a evitar erros potenciais na execução dos aplicativos.

Nova versão da plataforma MetaTrader 5 build 5200: expansão do OpenBLAS e reforço de controle no MQL5

Também foi adicionada à plataforma desktop uma função para troca automática de interface conforme as configurações do sistema operacional. Agora você não precisa mais fazer isso manualmente.


MetaTrader 5 Client Terminal

  1. Terminal: 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. Terminal: corrigida a exibição das barras de ferramentas destacadas da janela principal.
  3. Terminal: 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. Terminal: corrigida a exibição de preços negativos no book de ofertas. Agora eles são classificados corretamente.
  5. Terminal: 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. MQL5: 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.

  7. MQL5: 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.
  8. MQL5: 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)   // метод скрывает A::func
         {
          return(__FUNCSIG__);
         }
      };
      
    void OnStart(void)
      {
       B b;
       b.func(M_PI);          // по новым правилам это вызов B::func
       b.A::func(M_PI);       // вызов скрытого метода 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)'
  9. MQL5: 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);
      }
  10. MQL5: 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)   // ошибка, несоответствие типа параметра по умолчанию, несмотря на их одинаковые значения
      {
       return(42);
      }
  11. MQL5: 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  // ошибка, имя Value уже используется в перечислении A
      };
      
    void OnStart(void)
      {
       enum C
         {
          Value // ошибки нет, в области видимости OnStart имя Value не используется
         };
      }
    Em escopos diferentes, nomes iguais ainda podem ser usados.

  12. MQL5: 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);          // ошибка, функция Initializer должна быть типизирована явно
    matrix<double> A(10,10,Initializer<double>);     // ошибка, отсуствует параметр 'method' для вызова функции Initializer (значения по умолчанию больше не поддерживаются)
    matrix<double> A(10,10,Initializer<double>,42);  // ошибки нет
  13. MQL5: 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 );
  14. MQL5: corrigida a exibição de tipos nos avisos sobre conversão implícita de strings.
  15. MQL5: atualizado o pacote de integração com Python. Para instalar a atualização, execute o comando:
    pip install --upgrade MetaTrader5
  16. MetaEditor: 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.
  17. Tester: corrigido o funcionamento da função OrderCalcMargin para contas com modelo de compensação de bolsa.
  18. Tester: corrigida a alternância entre gráficos durante o teste visual de EAs multimoeda.
  19. Traduções da interface do usuário foram atualizadas.

MetaTrader 5 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.


A atualização estará disponível via sistema Live Update.

 
Essa atualização deixou o MT5 todo travado, uso 8 instâncias numa VPS e nas versões anteriores todas rodavam liso, sem nenhum travamento. Nessa versão a GUI dos gráficos fica travada, tive que fazer downgrade pra v anterior.
 
Estou tedo problemas com a otimização. Após alguns passes (5-10%), a otimização fica lenta, quase parada. O tempo restante para concluir a otimização fica aumentando.
Utilizo mais 4 agentes locais e mais 20 agentes na rede local. Uma otimização que vinha sendo feita em 45 minutos antes da atualização, levou 9 horas para ser concluida.
Sem registro de erro na guia Diário do testador de estratégias e nas guias Experts e Diário da caixa de ferramentas.
 
Quando irão disponibilizar os demais tempos gráficos na versão WEB? Deveria ter todos os timeframes que tem na versão desktop.
 

8 Threads do meu processador sumiram com essa atualização. Perdi muito desempenho em otimizações.

Olá, estou usando a última versão do MT5, build 5200. Após atualizar o MetaTrader parou de usar os núcleos de eficiência do meu processador e está usando apenas os de performance. Alguém sabe se isso é um bug ou será assim a partir de agora?
Sabem como posso voltar para a versão anterior?

Hello, I’m using the latest version of MT5, build 5200. After the update, MetaTrader stopped using the efficiency cores of my processor and is now only using the performance cores. Does anyone know if this is a bug or if it will be like this from now on?

Does anyone know how I can revert to the previous version?

 
Karian Frajade Izidoro Silva #:
Essa atualização deixou o MT5 todo travado, uso 8 instâncias numa VPS e nas versões anteriores todas rodavam liso, sem nenhum travamento. Nessa versão a GUI dos gráficos fica travada, tive que fazer downgrade pra v anterior.
Como fez o downgrade?
 
@Paulo César #:

8 Threads do meu processador sumiram com essa atualização. Perdi muito desempenho em otimizações.

Olá, estou usando a última versão do MT5, build 5200. Após atualizar o MetaTrader parou de usar os núcleos de eficiência do meu processador e está usando apenas os de performance. Alguém sabe se isso é um bug ou será assim a partir de agora?
Sabem como posso voltar para a versão anterior?

Hello, I’m using the latest version of MT5, build 5200. After the update, MetaTrader stopped using the efficiency cores of my processor and is now only using the performance cores. Does anyone know if this is a bug or if it will be like this from now on?

Does anyone know how I can revert to the previous version?

Leia por inteiro os seguintes tópicos no fórum Inglês que fornecerá mais informação sobre a questão:

 
Paulo César #:
Como fez o downgrade?

Sempre salvo a última versão confiável, pra quando acontecer esses B.O's eu conseguir voltar a versão.