新しいMetaTrader 5ビルド5570:ONNXとチャート描画の改善

このバージョンでは、MQL5におけるONNXサポートを改善しました。これにより、CUDA対応GPU上でモデルの実行速度が大幅に向上しています。

29 1月 2026

ターミナル

  1. macOSおよびLinux(Wine使用)環境でのチャート上のテキスト描画を修正しました。
  2. 可変色の線として表示されるインジケーターの描画を修正しました。
  3. テキストラベルおよびボタンオブジェクトの描画を修正しました。
  4. 取引レポート内の一部統計情報のフォーマットを修正しました。以前は誤って丸められることがありました。
  5. 取引レポートにおける「総利益」と「総損失」の計算を改訂しました。これらの値には、手数料とスワップが含まれるようになりました。
  6. チャートのツールバーの状態を保存するように修正しました。プラットフォームを再起動すると、非表示のツールバーが再び表示されることがありました。
  7. JSONファイルからのカスタム取引商品設定の読み込みを修正しました。特に、スワップ設定、取引セッション、ティック値が正しくインポートされないことがありました。
  8. チャート上でスクリプトを実行する際、ウィンドウタイトルに銘柄と時間軸を表示するようにしました。



    チャート上でスクリプトを実行する際、ウィンドウタイトルに銘柄と時間軸を表示するようにしました


  9. 気配値表示で銘柄を検索する際に表示されるツールチップにおける銘柄の重複を修正しました。
  10. チャート上のWingdingsフォントの描画を修正しました。
  11. 色付きローソク足(DRAW_COLOR_CANDLES)および色付きライン(DRAW_COLOR_LINE)として表示されるインジケーターの描画を修正しました。
  12. ブローカーのサーバーが古いバージョンを実行していることを示すログメッセージの出力を追加しました。サーバーのバージョンが6か月前にリリースされた5200未満の場合、以下の警告が表示されます。
    outdated server build - must be at least 5200, contact your broker please
    このメッセージは情報提供のみを目的として表示されるもので、サーバーへの接続に影響を与えるものではありません。
  13. ユーザーインターフェースの翻訳を更新しました。

MQL5

  1. ONNXライブラリが、ONNXを使用するMQL5プログラムの初回実行時に読み込まれるように変更しました。これまでのようにプラットフォーム起動時に読み込まれることはありません。ライブラリの更新は自動的に行われます。
  2. ONNXにCUDAサポートを追加しました。お使いのグラフィックスカードがCUDAに対応している場合、モデルの推論性能が大幅に向上します。安定性と性能向上のため、NVIDIAドライバーの更新を強く推奨します。
    CUDAの使用許可はプラットフォーム設定で管理できます。 


    プラットフォーム設定でCUDAを管理する


  3. ENUM_ONNX_FLAGS列挙体のフラグを更新しました。これらのフラグは、ONNXモデルの作成および実行時に使用されます。

    ロギング
    廃止予定のONNX_DEBUG_LOGSの代わりに、以下のログフラグを使用するようになりました。

    • ONNX_LOGLEVEL_VERBOSE:すべてのメッセージを記録します。
    • ONNX_LOGLEVEL_INFO:情報メッセージ、警告、エラーを記録します。 非推奨のONNX_DEBUG_LOGSを置き換えます。
    • ONNX_LOGLEVEL_WARNING:警告とエラーを記録します。デフォルトで使用され、
    • ONNX_LOGLEVEL_ERROR:エラーのみを記録します。

    CUDAおよびGPU管理
    ONNX_CUDA_DISABLEフラグが削除されました。代わりにONNX_USE_CPU_ONLYフラグを使用してください。このフラグが有効の場合、モデル実行はCPUのみでおこなわれます。

    モデルを実行するGPUデバイスを選択するフラグを追加しました。

    • ONNX_GPU_DEVICE_0
    • ONNX_GPU_DEVICE_1
    • ONNX_GPU_DEVICE_2
    • ONNX_GPU_DEVICE_3
    • ONNX_GPU_DEVICE_4
    • ONNX_GPU_DEVICE_5
    • ONNX_GPU_DEVICE_6
    • ONNX_GPU_DEVICE_7

    システムに複数のCUDA対応デバイスがある場合に使用します。複数のフラグが指定された場合は、インデックスが最も小さいデバイスが選択されます。

    モデルプロファイリング
    ONNX_ENABLE_PROFILINGフラグを追加しました。これによりONNXモデルのプロファイリングが可能になります。

    このフラグを有効にしてモデルを実行すると、/MQL5/Files/OnnxProfileReports/フォルダに「[EX5ファイル名]_[日付]_[時間].json」プロファイリングレポートが作成されます。

  4. リソースとしてプログラムに含めることができるファイルの上限を増やしました。新しい制限は1GBで、プロジェクトに大きなONNXモデルを含めることができます。 
  5. OpenCL操作の安定性を向上させました。
  6. ReplaceToZeroメソッドを追加しました。行列/ベクトル内の小さな値をゼロ値に置き換え、置き換えられた要素の数を返します。
  7. 以下のOpenBLASメソッドを追加しました。

    • FactorizationLDLComplexSyRaw:Bunch-Kaufman対角ピボット法を使用して複素行列の因数分解を計算します。
    • LDLComplexSyLinearEquationsSolution:FactorizationLDLComplexSyRawによって計算された複素対称不定行列Aの因数分解A = U**T * D * UまたはA = L * D * L**Tを用いて、線形方程式A * X = Bを解きます。複数の右辺も対応可能です。
    • LDLComplexSyInverse:FactorizationLDLComplexSyRawによって計算された因数分解A = U**T * D * UまたはA = L * D * L**Tを用いて、複素対称不定行列の逆行列を計算します。
    • LDLComplexSyCondNumReciprocal:FactorizationLDLRawによって計算されたLDLT分解を用いて、実対称または複素エルミート不定行列Aの条件数の逆数を推定します。

  8. ColorToPRGB関数を追加しました。PRGB色表現を得るために、color型をuintに変換します。このフォーマットは、グラフィックリソースを作成するとき、テキストを描画するとき、そして標準ライブラリCCanvasクラスでCOLOR_FORMAT_ARGB_RAWカラーフォーマットを扱うときに使われます。
    uint  ColorToPRGB(
       color  clr,          // the color to be converted, in 'color' format
       uchar  alpha=255     // the alpha channel that controls color transparency
    );
    PRGBカラーは以下の式で計算されます。
    R = R * A / 255
    G = G * A / 255
    B = B * A / 255
    A = A
  9. OBJ_LABELOBJ_TEXTOBJ_BUTTON、およびOBJ_EDITオブジェクトのプログラムによるテキスト設定を修正しました。特定の条件下ではテキストが表示されない場合がありました。
  10. ObjectSetIntegerを使用したグラフィカルオブジェクトの色設定を修正しました。以前は値clrNONEは無視されることがありました。
  11. サーバー上に価格履歴がない場合にBars関数がフリーズする問題を修正しました。
  12. スコープ内のグローバル変数検索を修正しました。以前は、名前空間内の変数はグローバルレベルの変数と同じ名前を持つことができませんでした。
  13. final属性の動作を修正しました。finalとしてマークされた関数をオーバーライドしようとすると、コンパイラエラーが発生していました。
  14. インクルードされた*.mqhファイルで#importディレクティブを使用せずに関数の前方宣言を使用した場合に発生していた、誤ったコンパイラ警告を修正しました。コンパイラはこのような宣言を正しく処理し、関数がDLLからインポートされていない場合は#importを要求しないようになりました。



    File utils.mqh: 
    // Function forward declaration
    double CalcLot(double risk, double stop);
    File expert.mq5:
    #include "utils.mqh"
    
    double CalcLot(double risk, double stop)
      {   
       return risk / stop;
      }
    以前は、utils.mqhのCalcLot関数がユーザー定義でプロジェクトコードに実装されているにもかかわらず、#importディレクティブが欠落しているという警告がコンパイラから発せられることがありました。このようなコードは警告なしでコンパイルされるようになりました。#importディレクティブは、外部DLLから実際にインポートされる関数にのみ必要です。 

MetaEditor

  1. 大きな(メガバイト単位)ソースファイルを操作するときに発生するメモリ不足エラーを修正しました。
  2. デバッグ中のWatchウィンドウでの列挙値と名前の表示を修正しました。

テスター

  1. ループするエキスパートアドバイザーのテストの終了を修正しました。無限ループの場合でも、[Stop]を押すとすぐに実行が停止するようになりました。
  2. ビジュアルテスト中のEventChartCustomの呼び出しを修正しました。以前は、イベントが誤って2回送信される可能性がありました。
  3. 新しく出された指値・逆指値注文を削除する際の凍結レベルチェック(SYMBOL_TRADE_FREEZE_LEVEL)を修正しました。
  4. フォワードテストデータのエクスポートを修正しました。フォワードモードを使用していないテストをエクスポートする際、以前のフォワードテストのデータが保存されることがありました。

Webターミナル

  1. チャート上でストップロスまたはテイクプロフィットを設定する際、損益の概算を金額で表示するようになりました。


    損益の概算を金額で表示するようになりました


  2. 特殊文字を含む銘柄のシンボル仕様の表示を修正しました。
  3. 取引ダイアログにおけるマイナス価格の表示を修正しました。
  4. 預金通貨の精度が小数点以下2桁を超える場合の口座財務指標の表示を修正しました。