新しいMetaTrader 5プラットフォームビルド3980:改善と修正

MetaQuotes  

2023年9月21日(木)に、MetaTrader 5プラットフォームのアップデートバージョンがリリースされる予定です。これには、多数のプラットフォームの修正と改善が含まれています。

新しいMetaTrader 5プラットフォームビルド3980:改善と修正


MetaTrader 5クライアントターミナルビルド3980

  1. ターミナル:新しい取引レポートの改善。スワップ総額と銘柄別利益チャートの表示を修正しました。
  2. ターミナル:入出金ページの最適化。決済システムとの新しいプラットフォーム統合の詳細については、ビルド3950のリリースノートをご覧ください。
  3. ターミナル:ストラテジーテスターを含むプラットフォーム全体の金融操作の再計算を最適化。利益、証拠金、その他多くのパラメータがより速く計算されるようになりました。
  4. ターミナル:ユーザーインターフェイスの翻訳を更新しました。
  5. MQL5:complex、vector<complex>、matrix<complex>型にConjugateメソッドを追加しました。これらは複素数の共役演算を実装しています。。
    //+------------------------------------------------------------------+
    //| スクリプトプログラム開始関数                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       complex a=1+1i;
       complex b=a.Conjugate();
       Print(a, "  ", b);
       /*
       (1,1)  (1,-1)
       */
    
       vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
       vectorc vb=va.Conjugate();
       Print(va, "  ", vb);
       /*
       [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
       */
    
       matrixc ma(2, 3);
       ma.Row(va, 0);
       ma.Row(vb, 1);
       matrixc mb=ma.Conjugate();
       Print(ma);
       Print(mb);
       /*
       [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
        [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
    
       [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
        [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
       */
       
       ma=mb.Transpose().Conjugate();
       Print(ma);
       /*
       [[(0.1,0.1),(0.1,-0.1)]
        [(0.2,0.2),(0.2,-0.2)]
        [(0.3,0.3),(0.3,-0.3)]]
       */
      }
  6. MQL5:ONNXモデル出力で「Sequence of maps」型を取り扱うようになりました。

    出力レイヤーにMapシーケンスを提供するONNXモデル(ONNX_TYPE_MAPのONNX_TYPE_SEQUENCE)の場合、構造体の動的配列または固定配列を出力パラメータとして渡さなければなりません。この構造体の最初の2つのフィールドは、ONNX_TYPE_MAPのキーと値の型に一致し、固定配列または動的配列でなければなりません。

    以下のPythonスクリプトで作成されたiris.onnxモデルをみてみましょう。
    from sys import argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
    from sklearn.datasets import load_iris
    iris_dataset = load_iris()
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    # ONNXフォーマットに変換
    from skl2onnx import convert_sklearn
    from skl2onnx.common.data_types import FloatTensorType
    initial_type = [('float_input', FloatTensorType([None, 4]))]
    onx = convert_sklearn(knn, initial_types=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    作成したonnxファイルをMetaEditorで開きます。


    MetaEditorでONNXモデルを見る


    Mapシーケンスはoutput_probabilityとして渡されます。これは、INT64型(MQL5ではlongに相当)のキーとfloat型の値を持ちます。この出力からデータを受け取るには、以下の構造体を宣言します。
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    ここでは、適切な型の動的配列を使用しました。この場合、このモデルのMapは常に3つのキーと値のペアを含むので、固定配列を使用することができます。

    Mapシーケンスが返されるので、output_probability出力からデータを受け取るためのパラメータとして、そのような構造体の配列を渡す必要があります。この配列は、特定のモデルの特性に応じて、動的または静的にすることができます。例:
    //--- 出力層output_probabilityからデータを受け取る配列を宣言する 
    MyMap output_probability[];
    
    ...
    
    //--- 実行中のモデル
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
  7. MetaEditor:ONNXモデルビューアの出力タイプの表示を修正しました。

MetaTrader 5 Webターミナル ビルド3980

  1. Webターミナルのメインメニューに「Contact Broker」セクションを追加しました。
  2. SSL認証のエラー処理を追加。この認証タイプはWebターミナルではサポートされていません。代わりにワンタイムパスワードを使うことができます。
  3. メインメニューのデスクトッププラットフォームダウンロードリンクを修正しました。
  4. 口座管理ダイアログを修正。ブローカーがデモまたはリアル口座開設オプションを提供していない場合、関連するメニュー項目は非表示になります。


このアップデートは、Live Updateシステムを通じて提供される予定です。

理由: