//--- 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);
2022年11月25日(金)にMetaTrader 5プラットフォームのアップデートがリリースされます。
今回のアップデートでは、MetaTrader 5の取引ターミナルにGoogle Authenticatorを使用した2FA/TOTP認証を実装し、OpenCLのエラーレポートを追加しました。
その他の修正と更新された機能でプラットフォーム全体の運用の安定性が向上します。以下はすべての新機能の詳細です。
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を有効にする]をクリックします。証券会社の取引サーバーに、お客様の口座の秘密が登録されます。
保存された秘密は、Authenticatorアプリで、口座に接続するたびにOTPコードを生成するために使用されます。各パスワードの有効期限は30秒です。その後、新しいものが生成されます。
Authenticatorアプリから保存された秘密を削除する場合、まず適切な口座のコンテキストメニューコマンドを使用して2FA/TOTP認証を無効にする必要があります。新しい2FA/TOTP認証方式が口座で利用できない場合は、お取引のある証券会社にお問い合わせください。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);
CLGetInfoStringを使用すると、エラーのテキスト説明を得ることができます。エラーの説明:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS。
CL_ERROR_DESCRIPTIONを使用する場合、CLGetInfoStringのhandleパラメータにエラーコードを渡す必要があります。エラーコードの代わりに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の値は、「いくつかのカーネル引数が設定されていないか、無効である場合にカーネルをエンキューする際に返される」ことを意味します。このアップデートは、LiveUpdateシステムを通じて提供される予定です。