MetaTrader 5 build 3540:2FA/TOTP身份验证和改善网页端的市场报价

2FA/TOTP身份验证可以保护交易账户即使在泄露登录名和密码的情况下也可以免受未经授权的访问。可以使用多种移动应用程序来实现使用基于时间的动态密码算法(TOTP) 的身份验证

9 十二月 2022

网页端

  1. 添加对使用Google Authenticator和类似应用程序进行2FA/TOTP身份验证的支持。

    2FA/TOTP身份验证可以保护交易账户即使在泄露登录名和密码的情况下也可以免受未经授权的访问。可以使用多种移动应用程序来实现使用基于时间的动态密码算法(TOTP) 的身份验证。其中最受欢迎的是Google Authenticator、Microsoft Authenticator、LastPass Authenticator和Authy。现在您可以通过这种Authenticator应用程序生成的动态密码在MetaTrader 5客户端连接您的账户。

    要启用双重身份验证选项,请通过MetaTrader 5网页端连接到您的账户。然后在菜单中点击您的账户,并在新打开的对话框中选择“启用2FA/TOTP”。在您的移动设备上安装并运行Authenticator应用程序,点击"+"添加您的交易账户,并用客户端扫描二维码。在“动态密码”字段中输入生成的代码,并点击“启用2FA”。然后,在交易商的交易服务器上,将为您的账户注册一个密钥。


    添加对使用Google Authenticator和类似应用程序进行2FA/TOTP身份验证的支持


    保存的密钥将用于Authenticator应用程序中,以便生成您每次连接账户时所需的OTP代码(动态密码)。每个动态密码在30秒内有效。失效后会再生成一个新动态密码。


    连接到账户时,需要从Authenticator应用程序中获得的附加动态密码


    在二维码对话框中还会显示一个备份代码,用于链接到生成器。将其保存在一个安全的地方。如果您失去对链接设备的访问,该代码将允许您再次将账户添加到Authenticator应用程序中。

    如果您决定从Authenticator应用程序中删除存储的密钥,您应首先通过对应账户的菜单命令禁用2FA/TOTP身份验证。如果您的账户没有新2FA/TOTP身份验证方法,请联系您的交易商。

  2. 扩大市场报价中显示的数据量。现在,除了当前的卖价/买价以及价格变化百分比外,您还可以看到:

    • 当前交易时段的最高和最低卖价/买价
    • 当前交易时段的开盘价和上一交易时段的收盘价

    使用快捷菜单来自定义显示的信息:


    其他市场报价数据


  3. 添加当交易商启用相应的设置时显示风险通知。一些监管机构要求交易者在交易前阅读并接受通知。
  4. 修正在屏幕顶部有缺口的iPhone机型上,显示顶部工具条的问题。之前,顶部工具条有时可以覆盖面板上的按键。
  5. 修正在谷歌浏览器中显示账户的最终财务参数(利润、净值等)。有时,这些数据没有被更新。

客户端

  1. 程序端:优化并大幅度加快模拟账户开户对话框。
  2. 程序端:更新用户界面的翻译。
  3. 基于崩溃日志进行修复。

MQL5

  1. 将新方法添加到标准程序库的COpenCL类:

    • BufferFromMatrix — 用矩阵中的数据填充设备缓冲区
    • BufferToMatrix — 将数据从设备缓冲区读入到矩阵中
    • ContextCreate — 创建设备上下文(Initialize方法的第一部分)
    • ProgramCreate — 基于OpenCL源代码创建一个程序(Initialize方法的第二部分)
    • ContextClean — 释放属于设备上下文的所有数据(类似于Shutdown方法,但不删除上下文)
    • GetDeviceInfoInteger — 接收一个整数设备属性
    • GetKernelInfoInteger — 接收一个整数内核属性
    • GetDeviceInfo — 接收任何ENUM_OPENCL_PROPERTY_INTEGER枚举中不存在的单一整数设备属性

    GetDeviceInfo使用实例:
    long preferred_workgroup_size_multiple=OpenCL.GetDeviceInfo(0x1067);
  2. 添加TERMINAL_CPU_NAME和TERMINAL_OS_VERSION值到ENUM_TERMINAL_INFO_STRING枚举中。它们允许接收用户的CPU和操作系统名称。
    void OnStart()
      {
       string cpu,os;
    //---
       cpu=TerminalInfoString(TERMINAL_CPU_NAME);
       os=TerminalInfoString(TERMINAL_OS_VERSION);
       PrintFormat("CPU: %s, OS: %s",cpu,os);
      }
    
    Result:
    CPU:Intel Xeon  E5-2630 v4 @ 2.20GHz, OS:Windows 10 build 19045
  3. 修正DatabasePrintDatabaseExport函数中"table_or_sql"参数的操作。现在除了SQL查询外,还能传递一个表格名称。

MetaEditor

  1. 修正对数据库中可显示最大列数的检查。现在最多可以显示64列。
  2. 修正短结构中断点的操作,如IF[ if(cond) break; ]。