MetaTrader 5 build 3520: adicionada autenticação 2FA/TOTP com o Google Authenticator

A utilização de autenticação de dois fatores lhe permite proteger ainda mais a sua conta de negociação contra o acesso não autorizado, mesmo que o seu nome de utilizador e palavra-passe permanente sejam divulgados

25 novembro 2022

Terminal

  1. Adicionado suporte para autenticação 2FA/TOTP usando o Google Authenticator e aplicações similares.

    A utilização de autenticação de dois fatores lhe permite proteger ainda mais a sua conta de negociação contra o acesso não autorizado, mesmo que o seu nome de utilizador e palavra-passe permanente sejam divulgados. Existem muitos aplicativos móveis que permitem a autenticação em duas etapas usando o algoritmo time-based one-time password. Entre os mais conhecidos estão Google Authenticator, Microsoft Authenticator, LastPass Authenticator e Authy. Agora, o terminal cliente MetaTrader 5 permite logar usando senhas únicas obtidas desse tipo de aplicativos Authenticator.

    Para ativar a autenticação em duas etapas, primeiro faça login no terminal cliente MetaTrader 5 da forma habitual. Em seguida, clique com o botão direito do mouse na conta de negociação para abrir o menu e selecione "Permitir 2FA/TOTP". Inicie o Authenticator em seu telefone celular, pressione o botão "+" nele para adicionar sua conta de negociação e escanear o código QR a partir do terminal. Digite o código recebido no campo "One-time password" e clique em "Enable 2FA" - o sigilo de sua conta será adicionado ao servidor de negociação da corretora.


    Adicionado suporte para autenticação 2FA/TOTP usando o Google Authenticator e aplicativos similares.

    O código salvo agora será usado no aplicativo Authenticator para gerar uma senha OTP para cada conexão posterior. Cada senha é válida durante 30 segundos, depois é gerada uma nova.



    Uma senha OTP adicional proveniente do aplicativo Authenticator é agora necessária para entrar na sua conta de negociação

    Se você decidir remover o código guardado do aplicativo Authenticator, primeiro desabilite o uso da autenticação 2FA/TOTP usando o devido comando do menu de contexto de conta. Se a autenticação 2FA/TOTP não estiver disponível na sua conta, peça à sua corretora para ativar esta opção.

MQL5

  1. Corrigido o funcionamento da função CopyTicks para instrumentos de negociação personalizados. Em alguns casos, ao trabalhar com símbolos personalizados, os ticks iniciais do pregão anterior eram devolvidos em vez dos dados solicitados.

  2. Adicionados novos valores à enumeração para obter informações sobre o último erro OpenCL, tais valores permitem obter o código de erro e a respectiva descrição.
    1. adicionado CL_LAST_ERROR (código 4094) à enumeração ENUM_OPENCL_PROPERTY_INTEGER 

      Para obter o último erro OpenCL através de CLGetInfoInteger, o parâmetro handle é ignorado, ou seja, não tem valor. Descrição de erros: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
      No caso de um código de erro desconhecido, a string "unknown OpenCL error N" será retornada, sendo N o código de erro.

      Por exemplo:
      //--- primeiro parâmetro handle é ignorado quando o último código de erro é recebido
      int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);

    2. adicionado o valor CL_ERROR_DESCRIPTION (4093) à enumeração ENUM_OPENCL_PROPERTY_STRING.
      Uma descrição do erro OpenCL pode ser obtida usando CLGetInfoString. Descrição de erros: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.

      Ao utilizar CL_ERROR_DESCRIPTION como parâmetro handle, o código de erro deve ser passado para CLGetInfoString. Se CL_LAST_ERROR for passado em vez do código de erro, a função devolverá uma descrição do último erro.

      Por exemplo:
      //--- obter o código para o último erro OpenCL
      int    code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
      string desc; // для получения текстового описания ошибки
      
      //--- usamos o código de erro para obter uma descrição textual do erro
      if(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      
      
      //--- para obter uma descrição do último erro OpenCL sem primeiro obter o código, passamos CL_LAST_ERROR  
      if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      Por enquanto, o nome da enumeração interna é dado como a descrição do erro, cuja decifração pode ser encontrada na página https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Por exemplo, se CL_INVALID_KERNEL_ARGS for recebido, a descrição para ele será "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid."

  3. Corrigido o funcionamento do método matrix::MatMul. Quando se trabalha com matrizes grandes, o terminal colidiria dependendo de determinados tamanhos.

Correções de crash-logs.