MetaTrader 5 build 3520:Google Authenticatorによる2FA/TOTP認証

2FA/TOTP認証は、万が一取引口座のログイン名やパスワードが流出した場合でも、不正なアクセスから取引口座を保護することができます

25 11月 2022

ターミナル

  1. Google Authenticatorや類似アプリを利用した2FA/TOTP認証を追加しました。

    2FA/TOTP認証は、万が一取引口座のログイン名やパスワードが流出した場合でも、不正なアクセスから取引口座を保護することができます。Time-based One-time Password Algorithm (TOTP)を用いた認証は、様々なモバイルアプリを利用して実装することが可能です。その代表的なものが、Google Authenticator、Microsoft Authenticator、LastPass Authenticator、Authyです。このようなAuthenticatorアプリで生成されたワンタイムパスワードを使用して、MetaTrader 5クライアントターミナルで口座に接続することができるようになりました。

    2要素認証オプションを有効にするには、口座に接続し、口座のコンテキストメニューから[2FA/TOPTを有効にする]コマンドを実行します。モバイルターミナルでAuthenticatorアプリを起動し、[+]をクリックして取引口座を追加し、ターミナルからQRコードを読み取ってください。生成されたコードを[ワンタイムパスワード]欄に入力し、[2FAを有効にする]をクリックします。証券会社の取引サーバーに、お客様の口座の秘密が登録されます。


    Google Authenticatorや類似のアプリを使った2FA/TOTP認証に対応

    保存された秘密は、Authenticatorアプリで、口座に接続するたびにOTPコードを生成するために使用されます。各パスワードの有効期限は30秒です。その後、新しいものが生成されます。



    口座への接続には、Authenticatorアプリからの追加OTPが必要

    Authenticatorアプリから保存された秘密を削除する場合、まず適切な口座のコンテキストメニューコマンドを使用して2FA/TOTP認証を無効にする必要があります。新しい2FA/TOTP認証方式が口座で利用できない場合は、お取引のある証券会社にお問い合わせください。

MQL5

  1. カスタム取引商品のCopyTicks関数の動作を修正しました。カスタム銘柄を使用する場合、特定の条件下では、要求されたデータの代わりに前セッションの初期ティックが返されることがありました。

  2. 最後のOpenCLエラーコードとテキスト説明を取得するための新しい列挙値を追加しました。
    1. CL_LAST_ERROR(コード4094)がENUM_OPENCL_PROPERTY_INTEGER列挙に追加されました。

      CLGetInfoIntegerで最後のOpenCLエラーを取得する場合、handleパラメータは無視されます。エラーの説明:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS
      不明なエラーコードの場合「unknown OpenCL error N」という文字列が返されます(Nはエラーコード)。

      例:
      //--- the first handle parameter is ignored when obtaining the last error code
      int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);

    2. ENUM_OPENCL_PROPERTY_STRING列挙に値CL_ERROR_DESCRIPTION (4093)が追加されました。
      CLGetInfoStringを使用すると、エラーのテキスト説明を得ることができます。エラーの説明:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS

      CL_ERROR_DESCRIPTIONを使用する場合、CLGetInfoStringhandleパラメータにエラーコードを渡す必要があります。エラーコードの代わりにCL_LAST_ERRORが渡された場合、この関数は最後のエラーの説明を返します。

      例:
      //--- get the code of the last OpenCL error
      int    code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
      string desc; // to get the text description of the error
      
      //--- use the error code to get the text description of the error
      if(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      
      
      //--- to get the description of the last OpenCL error without receiving the code, pass CL_LAST_ERROR  
      if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      エラーの説明として、内部列挙名が渡されます。説明はhttps://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESSにあります。例えば、CL_INVALID_KERNEL_ARGSの値は、「いくつかのカーネル引数が設定されていないか、無効である場合にカーネルをエンキューする際に返される」ことを意味します。

  3. matrix::MatMulメソッドの動作を修正しました。大きな行列を扱う場合、特定のサイズでターミナルがクラッシュすることがありました。

クラッシュログに報告されるエラーを修正しました。