新しいMetaTrader 5プラットフォームビルド5100:Gitへの移行とMQL5 Algo Forge開発者ハブ、ダークテーマ対応およびUI改善

本バージョンでは、MetaEditorのソースコードエディタが大幅に刷新されました。組み込みのバージョン管理システム「MQL5 Storage」は、Subversionから開発者の世界標準であるGitに移行され、コード管理の信頼性と柔軟性が向上しました。また、Gitへの移行に伴い、プロジェクト管理のための新しいオンラインポータル「MQL5 Algo Forge」が導入されました。

5 6月 2025

MetaEditor

  • MQL5 Storageを完全に改訂し、バージョン管理システムとしてSubversionをGitに置き換えました。Gitは開発者のグローバルスタンダードであり、コード管理において信頼性と柔軟性が大幅に向上します。

    • 柔軟なブランチとマージ:新機能や実験用に個別のブランチを作成し、それをメインプロジェクトに簡単に統合できます。
    • 高速なリポジトリ操作:Subversionと異なり、Gitはすべてのデータをローカルに保存するため、コミットやバージョン切り替え、差分の確認が大幅に高速化されます。
    • オフライン作業機能:サーバーへの常時接続は不要で、ローカルで変更をコミットし、都合のよいタイミングでオンラインリポジトリにプッシュできます。
    • 高度な変更履歴の追跡:バージョン履歴を簡単に確認でき、変更のタイムスタンプや作成者の追跡、過去のバージョンへのロールバックも容易です。
    • 高性能なマージ機能:高度な比較・マージツールにより、競合を最小限に抑え、共同開発を円滑に進められます。

    共同開発の新たなレベル
    Gitへの移行に伴い、プロジェクト管理用の新しいオンラインポータルである「MQL5 Algo Forge」を導入します。これは単なるプロジェクト一覧ではなく、開発者のための本格的なソーシャルネットワークであり、アルゴリズムトレーダー向けのGitHubとも言える存在です。他の開発者のフォロー、チームの作成、プロジェクト単位でのコラボレーションを容易におこなうことが可能です。




    プロジェクトの詳細を閲覧:構造、ファイル、コミット、ブランチなどを確認可能です。個々の貢献を追跡し、ドキュメントを作成し、プロジェクトをオンラインで共有できます。




    すべてのコード変更を監視:新規、変更、削除された行を検出できます。問題が発生した場合は、プロジェクト内で直接開発者にタスクを割り当てることができます。




    Gitの使いやすさを向上させるために、ナビゲータとアクティブコード編集ウィンドウを再設計しました。また、MetaEditorのツールバーに専用のGitメニューを導入しました。




    包括的なGitドキュメントは近日公開予定です。

ターミナル

  1. 取引ターミナル、MetaEditor、ビジュアルテスターを含むすべてのコンポーネントでダークカラースキームのサポートを追加しました。ダークテーマは夜間の開発環境をより快適にします。切り替えは表示メニューからおこなうことができます。




    テーマ対応に伴い、ダイアログ、メニュー、パネル、ボタンの表示を大幅に改善し、より快適なユーザー体験を実現しました。MetaEditorでは、カーソル位置情報とテキスト入力モード(INS/OVR)インジケーターが右上に表示されるようになりました。作業スペースを確保するため、下部のステータスバーは廃止されました。

  2. 12か月間のVPSレンタルオプションを追加しました。長期ホスティングを前払いで購入することで、総費用の3分の1を節約できます。




  3. メモリ使用量を最適化しました。これによりシステムリソースの消費が減り、パフォーマンスが向上しました。
  4. 口座取引履歴の表示を最適化しました。プラットフォームは数百万件の記録を正しく表示できるようになりました。
  5. ウィンドウメニューに[デフォルトにリセット]コマンドを追加しました。このコマンドは、チャート、ナビゲータ、ストラテジーテスターなどを含むすべてのインターフェイス要素を元の位置にリセットします。
  6. 特定の条件下でポジション変更ダイアログがフリーズするエラーを修正しました。
  7. マイナス価格のポジションの値計算を修正しました。
  8. マイナス価格の取引銘柄指定における証拠金率の計算を修正しました。
  9. 現在のMFE値とMAE値の計算と取引レポートでのグラフの表示を修正しました。
  10. チャートサブウィンドウでのオシレーターのスケーリングを修正しました。オシレーターの縦軸スケールが正しく表示されるようになりました。
  11. 全画面モード切替時の注文板およびオプションボードの表示問題を修正しました。
  12. 口座の取引履歴にポジションチケットの表示を追加しました。関連する列はコンテキストメニューから有効化できます。
  13. 先物およびオプションのエクスポージャータブにおける清算価値の計算を修正しました。
  14. 新しく作成されたアカウントデータをクリップボードにコピーする際の問題を修正しました。デモまたは仮口座登録の最終ステップで、ログインIDやパスワードなどのアカウント情報をクリップボードにコピーし、別ファイルに保存できる機能が正しく動作するようになりました。macOSにも対応しています。
  15. VPSログセクションの表示を修正しました。特定の条件下でエラーが表示される問題を解消しました。
  16. LinuxでのHiDPIモニターのサポートを修正しました。
  17. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  1. 行列乗算演算子「@」を追加しました。線形代数のルールに従い、行列とベクトルの乗算や、ベクトルのスカラー(ドット)積をおこなうことができます。

    行列の乗算(行列×行列)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Result: Matrix C of size [2,2]
    行列の乗算(行列×ベクトル)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Result: Vector R of 2 elements
    行列の乗算(ベクトル×行列)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Result: Vector R of 3 elements
    スカラー乗算(ベクトル×ベクトル)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Result: Scalar
  2. StdVarCovメソッドに「ddof」パラメータを追加しました。このパラメータは標準偏差を計算する際に、分母から差し引く自由度の数を定義します。StdとVarのデフォルト値は0、Covのデフォルト値は1です。

    ddofが計算に与える影響:

    • デフォルトのddof=0は母集団標準偏差を計算します。
    • ddof=1の場合、標本標準偏差を計算し、有限サンプルサイズに対して調整をおこないます。これは統計学でデータの一部を分析する際によく用いられます。

  3. 以下の、新しいOpenBLASメソッドを追加しました。

    固有値と固有ベクトル

    • EigenTridiagonalDC:分割統治アルゴリズムを用いて、対称三重対角行列の固有値と固有ベクトルを計算します(LAPACK関数STEVD)。
    • EigenTridiagonalQR:QRアルゴリズムを用いて、対称三重対角行列の固有値と固有ベクトルを計算します(LAPACK関数STEV)。
    • EigenTridiagonalRobust:MRRR (Multiple Relatively Robust Representations)アルゴリズムを用いて、対称三重対角行列の固有値と固有ベクトルを計算します(LAPACK関数STEVR)。
    • EigenTridiagonalBisect:二分法アルゴリズムを用いて、対称三重対角行列の固有値と固有ベクトルを計算します(LAPACK関数STEVX)。
    • ReduceToBidiagonal:一般のm×n実または複素行列Aを直交変換により上/下二重対角行列Bに還元します:Q**T * A * P = B。m≥nの場合、Bは上二重対角行列です。それ以外の場合、Bは下二重対角行列です(LAPACK関数GEBRD)。
    • ReflectBidiagonalToQP:実または複素行列Aを二重対角形式に変換するReduceToBidiagonalメソッドによって定まる直行行列(複素型の場合はユニタリ行列)QおよびP**T(複素型の場合は P**H)を生成します:A = Q * B * P**T。 QとP**Tは、それぞれ初等反射行列H(i)またはG(i)の積として定義されます(LAPACK関数ORGBR、UNGBR)。
    • ReduceSymmetricToTridiagonal:実対称または複素エルミート行列Aを直交相似変換により三重対角行列Bに還元します:Q**T * A * Q = B(LAPACK関数SYTRD、HETRD)。
    • ReflectTridiagonalToQ:ReduceSymmetricToTridiagonalによって得られる、次数nの初等反射行列n−1個の積として定義される直交行列Qを生成します。

    • LinearEquationsSolution:正方係数行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionTriangular:正方三角係数行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionSy:対称行列またはエルミート共役行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionComplexSy:複素対称行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionGeTrid:対称またはエルミート共役正定値行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionSyPD:一般(非対称)三重対角係数行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • LinearEquationsSolutionSyTridPD:対称三重対角正定値係数行列Aと複数の右辺ベクトルを持つ線形方程式系の解を計算します。
    • FactorizationQR:一般m×n行列のQR分解を計算します:A = Q * R(LAPACK関数GEQRF)。
    • FactorizationQRNonNeg:一般m×n行列のQR分解を計算します。ここで、Rは対角成分が非負の上三角行列です:A = Q * R(LAPACK関数GEQRFP)。
    • FactorizationQRPivot:一般m×n行列の列ピボット付きQR分解を計算します:A * P = Q * R(LAPACK関数GEQP3)。
    • FactorizationLQ:一般m×n行列のLQ分解を計算します:A = L * Q(LAPACK関数GELQF)。
    • FactorizationQL:一般m×n行列のQL分解を計算します:A = Q * L(LAPACK関数GEQLF)。
    • FactorizationRQ:一般m×n行列のRQ分解を計算します:A = R * Q(LAPACK関数GERQF)。
    • FactorizationPLU:部分ピボット選択と行の入れ替えを用いて、一般mxn行列AのLU分解を計算します(LAPACK関数GETRF)。
    • FactorizationPLUGeTrid:部分ピボット選択と行の入れ替えによる消去法を用いて、一般(非対称)三重対角n×n行列AのLU分解を計算します(LAPACK関数GTTRF)。
    • FactorizationLDL:Bunch-Kaufmanの対角ピボット選択法を用いて、実対称または複素エルミート行列Aの分解を計算します(LAPACK関数SYTRFおよびHETRF)。
    • FactorizationLDLSyTridPD:対称正定値または(複素データの場合)エルミート正定値の三重対角行列Aの分解を計算します(LAPACK関数PTTRF)。
    • FactorizationCholesky:実対称または複素エルミート正定値行列Aの分解を計算します(LAPACK関数POTRF)。
    • FactorizationCholeskySyPS:完全ピボット選択を伴う実対称(複素エルミート)半正定値n×n行列Aのコレスキー分解を計算します(LAPACK関数PSTRF)。

  4. ランダム関数およびベクトルや行列をランダムな値で埋めるためのRandomメソッドを追加しました。ランダム値は指定された範囲内で一様に生成されます。
    static vector vector::Random(
      const ulong   size,       // vector length
      const double  min=0.0,    // min value
      const double  max=1.0     // max value
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // number of rows
      const ulong   cols        // number of columns
      const float   min=0.0,    // min value
      const float   max=1.0     // max value
       );
  5. 整数型に対する追加のエイリアスサポートを追加しました。これにより、CやC++など他の言語からのコード移植が容易になります。

    これらのエイリアスは新しい型を導入するものではなく、MQL5の既存の型に対する代替名称を提供します。基本型が使用可能なすべての文脈で利用可能です。

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  6. 端末のカラースキームを検出するための新しい関数を追加しました。

    • 新しいプロパティ「TERMINAL_COLORTHEME_NAME」がENUM_TERMINAL_INFO_STRING列挙体に追加されました。このプロパティをTerminalInfoString関数と共に使用して、端末の配色を照会します。可能な値は、LightとDarkです。
    • 新しいプロパティ「THEME_COLOR_*」がENUM_TERMINAL_INFO_INTEGER列挙体に追加されました。これらをTerminalInfoInteger関数と組み合わせて使用し、特定のUI要素の色を取得します。

    配色の変更を検出するには、OnChartEventハンドラを使用します。テーマが変更されると、CHARTEVENT_CHART_CHANGEイベントが2回トリガーされます。

  7. Array::Reserveメソッドを含むコードをコンパイルするときにMetaEditorがクラッシュするバグを修正しました。Reserveメソッドは配列のサイズを変更せず、新しい要素追加時のメモリ再割り当てを防ぐために指定した要素数分の領域を確保します。
  8. 配列の末尾に新しい要素を追加するArray::Pushメソッドの動作を修正しました。問題は事前にバッファ領域を確保している配列で発生していました。
  9. OpenCL関連関数の問題を解決しました。

MetaTester

  1. 取引戦略の最適化を加速しました。
  2. MQL5クラウドネットワークからのタスク実行時に、特定の場合にテスターエージェントが過剰なメモリを使用するバグを修正しました。

Webターミナル

  1. アカウント接続ダイアログにおけるパスワード保存オプションの動作を修正しました。
  2. チャート移動ボタンを修正しました。一部のケースで、ボタン使用時にチャートが消える不具合がありました。
  3. リアル口座開設フォームにおける[ミドルネーム]フィールドの検証処理を修正しました。このフィールドはオプションになりました。
  4. デモ口座の開設処理を修正しました。一部のケースで、ユーザーが誤ってブローカーのWebサイトにリダイレクトされる不具合がありました。
  5. デモ口座・リアル口座の開設ボタンの表示制御を修正しました。ブローカー側で機能が無効化されている場合、ボタンが非表示になります。
  6. デモ口座開設フォーム内[入金額]フィールドの動作を修正しました。
  7. 契約仕様内[取引]フィールドの表示を修正しました。
  8. 気配値表示ウィンドウ内の[銘柄検索]フィールドを修正しました。検索モード終了用の[×]ボタンが正しく表示されるようになりました。
  9. 口座開設フォームのメール確認コードフィールドのツールチップの表示を修正しました。