MetaTrader 5 build 3520: añadida la autenticación 2FA/TOTP con Google Authenticator

El uso de la autenticación de dos factores le permitirá proteger aún más su cuenta comercial contra el acceso no autorizado, incluso si su nombre de usuario y su contraseña permanente se filtran

25 noviembre 2022

Terminal

  1. Añadido soporte para la autenticación 2FA/TOTP usando Google Authenticator y aplicaciones similares.

    El uso de la autenticación de dos factores le permitirá proteger aún más su cuenta comercial contra el acceso no autorizado, incluso si su nombre de usuario y su contraseña permanente se filtran. Existen muchas aplicaciones móviles que permiten la autenticación en dos pasos utilizando el algoritmo Time-based One-time Password Algorithm (TOTP). Entre los más populares, están Google Authenticator, Microsoft Authenticator, LastPass Authenticator y Authy. En el terminal de cliente de MetaTrader 5, ahora es posible autenticarse usando contraseñas de un solo uso obtenidas de dichas aplicaciones Authenticator.

    Para activar la autenticación en dos pasos, primero deberá iniciar sesión en el terminal de cliente de MetaTrader 5 de la forma habitual. A continuación, clique con el botón derecho del ratón en la cuenta comercial para que aparezca el menú y seleccione "Permitir 2FA/TOTP". Inicie el Authenticator en su teléfono móvil, pulse el botón "+" en él para añadir su cuenta comercial y escanee el código QR del terminal. Introduzca el código obtenido en el campo "One-time password" y clique en "Enable 2FA": el secreto de su cuenta se añadirá al servidor comercial del bróker.


    Añadido el soporte para la autenticación 2FA/TOTP usando Google Authenticator y aplicaciones similares.

    El secreto guardado se usará ahora en la aplicación Authenticator para generar una contraseña OTP para cada conexión posterior. Cada contraseña será válida durante 30 segundos, luego se generará una nueva.



    Para conectarse a su cuenta comercial, ahora necesitará una contraseña OTP adicional de la aplicación Authenticator

    Si decide eliminar el secreto almacenado de la aplicación Authenticator, primero desactive el uso de la autenticación 2FA/TOTP usando el comando del menú contextual de la cuenta correspondiente. Si la autenticación 2FA/TOTP no está disponible en su cuenta, pida a su bróker que active dicha opción.

MQL5

  1. Corregida la función CopyTicks para los instrumentos comerciales de usuario. En algunos casos, al trabajar con símbolos personalizados, se retornaban los ticks iniciales de la sesión comercial anterior en lugar de los datos solicitados.

  2. Añadidos nuevos valores a la enumeración para obtener información sobre el último error de OpenCL, lo cual permite obtener el código de error y la descripción de texto.
    1. Añadida a la enumeración ENUM_OPENCL_PROPERTY_INTEGER el valor CL_LAST_ERROR (código 4094) 

      Para obtener el último error de OpenCL a través de CLGetInfoInteger, el parámetro handle será ignorado, es decir, no tendrá ningún significado. Descripción del error: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS
      Al darse un código de error desconocido, se retornará la línea "unknown OpenCL error N", donde, en lugar de N, se dará el código de error.

      Ejemplo:
      //--- el primer parámetro handle se ignora al obtener el código del últimoo error
      int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);

    2. Añadida a la enumeración ENUM_OPENCL_PROPERTY_STRING el valor CL_ERROR_DESCRIPTION (4093).
      Podemos obtener una descripción de texto del error de OpenCL usando CLGetInfoString. Descripción del error: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS

      Al usar CL_ERROR_DESCRIPTION como parámetro handle, el código de error deberá transmitirse a CLGetInfoString . Si transmitimos CL_LAST_ERROR en lugar del código de error, la función retornará una descripción del último error.

      Ejemplo:
      //--- obtener código del último error de OpenCL
      int    code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
      string desc; // para obtener la descripción de texto del error
      
      //--- utilizamos el código de error para obtener la descripción de texto del error
      if(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      
      
      //--- para obtener la descripción del último error de OpenCL sin obtención previa del código, deberemos transmitir CL_LAST_ERROR  
      if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      Por ahora, como descripción del error, se ofrece el nombre de la enumeración interna cuyo desciframiento puede verse en la página https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Por ejemplo, si obtenemos CL_INVALID_KERNEL_ARGS, la descripción para ello será "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid".

  3. Corregido el método matrix::MatMul. Al trabajar con matrices grandes, el terminal se bloqueaba con algunos tamaños.

Correcciones de crash logs.