MetaTrader 5の何が新しくなったのか

ウェブプラットフォーム、デスクトップ版、モバイル版の更新履歴

7 3月 2024
MetaTrader 5 build 4230:ビルトインアプリケーションの増加とONNXサポートの拡張

ターミナル

  1. 28個の新しいエキスパートアドバイザーと12個の新しい指標が標準プラットフォームパッケージに追加されました。アプリケーションは、ナビゲーターのExpert Advisors\Free RobotsセクションとIndicators\Free Indicatorsセクションで入手できます。各プログラムは、MQL5言語の学習に役立つ詳細なコメント付きのソースコードとして入手できます。

    ロボットは、3 Black Crows – 3 White Soldiers、Bullish Engulfing – Bearish Engulfing、Bullish Harami – Bearish Haramiなどのテクニカル指標とローソク足パターンに基づいて取引戦略を実行します。新しい指標は、カマリラ、デマーク、ドンチャン、フィボナッチ、ケルトナーなど、人気のあるチャネルを実装したものです。



  2. ナスダック市場データのサブスクリプションの開始に向けて準備が進められています。トレーダーはプラットフォームから直接、最大規模の取引所の1つから数百もの金融商品のリアルタイムの相場や詳細な価格履歴にアクセスできるようになります。サブスクリプションは、MetaQuotes-Demoサーバー上のデモ口座とMQL5.communityアカウントを持つユーザーであれば誰でも利用できます。



    開始するには、サブスクリプションを購入し、関連する銘柄を気配値表示に追加するだけです。これらの銘柄は通常の商品として使用できます。チャートを開いて、オブジェクトや指標を使用して分析し、ストラテジーテスターでエキスパートアドバイザーを実行します。すべての情報へのアクセスは、ブローカーと取引する通常の金融商品と同様に実装されます。

  3. 商品仕様の証拠金セクションを改善しました。このセクションには、各商品の証拠金率と計算値が掲載されています。



    特定の種類の銘柄の証拠金表示のエラーを修正しました。

  4. [ヘルプ]メニューにMQL5 Telegramチャネルへのリンクを追加しました。チャネルでは、新しいプログラミング記事のレビューや、コードベースからの無料のロボットや指標など、開発者にとって興味深いコンテンツが定期的に共有されます。重要な情報を見逃さないように、チャネルに登録して最新情報を入手してください。



  5. カスタム構成ファイルの[StartUp]セクションにShutdownterminalパラメーターのサポートが追加されました。このパラメータを使用してプラットフォームを起動し、スクリプトを使用して1回限りのタスクを実行します。たとえば、チャートのスクリーンショットを取得するスクリプトがあるとします。プラットフォームとともにこのスクリプトを起動する構成ファイルを作成できます。このファイルでShutdownTerminalを「Yes」に設定すると、スクリプトの完了直後にプラットフォームが自動的にシャットダウンされます。
  6. ネットワークプロトコルとマーケット製品の保護が強化されています。
  7. デモ口座のシグナルサービスのサポートを無効にしました。デモ口座の拡張統計にアクセスするには、新しい取引レポートを使用します。成長、バランス、資本のグラフ、方向性や商品別の取引分布図など、戦略の収益性とリスクを特徴付ける多数の指標が含まれます。
  8. [ヘルプ]メニューの証券会社契約リンクの表示を修正しました。
  9. VPSレンタルにおける最適なサーバーの選択が改善されました。
  10. ターミナル:ナビゲーターのセクション間を切り替えるときのサブスクリプションページの更新が修正されました。
  11. ターミナル:予備口座を開設する際の契約リストの更新を修正しました。
  12. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  1. ENUM_MQL_INFO_INTEGER列挙にMQL_STARTED_FROM_CONFIGプロパティを追加しました。スクリプト/エキスパートアドバイザーが構成ファイルのStartUpセクションから起動された場合はtrueを返します。これは、スクリプト/エキスパートアドバイザーがターミナルの起動に使用した構成ファイルで指定されていることを意味します。
  2. ONNXモデルのサポートを拡大し続けます。

    機械学習タスクでは、必ずしも高い計算精度が必要なわけではありません。計算を高速化するために、一部のモデルではFloat16やFloat8などの低精度のデータ型を使用します。ユーザーが関連データをモデルに入力できるようにするために、次の関数がMQL5に追加されました。
    bool ArrayToFP16(ushort &dst_array[],const float &src_array[],ENUM_FLOAT16_FORMAT fmt);
    boolArrayToFP16(ushort&dst_array[],constdouble&src_array[],ENUM_FLOAT16_FORMATfmt);
    bool ArrayToFP8(uchar &dst_array[],const float &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayToFP8(uchar &dst_array[],const double &src_array[],ENUM_FLOAT8_FORMAT fmt);
    
    bool ArrayFromFP16(float &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
    boolArrayFromFP16(double&dst_array[],constushort&src_array[],ENUM_FLOAT16_FORMATfmt);
    bool ArrayFromFP8(float &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayFromFP8(double &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    16ビットと8ビットの実数形式は異なる場合があるため、変換関数の「fmt」パラメータは、どの数値形式を処理する必要があるかを示す必要があります。16ビットバージョンの場合、新しい列挙体NUM_FLOAT16_FORMATが使用されます。現在、その値は次のとおりです。


    8ビットバージョンの場合、新しいENUM_FLOAT8_FORMAT列挙が使用されます。現在、この列挙には次の値があります。

    • FLOAT_FP8_E4M3FN:8ビット浮動小数点数(4ビット-指数、3ビット-仮数)。通常は係数として使用されます。
    • FLOAT_FP8_E4M3FNUZ:8ビット浮動小数点数(4ビット-指数、3ビット-仮数)。NaNをサポートしますが、負のゼロとInfはサポートしません。通常は係数として使用されます。
    • FLOAT_FP8_E5M2FN:8ビット浮動小数点数(5ビット-指数、2ビット-仮数)。NaNとInfをサポートします。通常、勾配に使用されます。
    • FLOAT_FP8_E5M2FNUZ:8ビット浮動小数点数(5ビット-指数、2ビット-仮数)。NaNをサポートしますが、負のゼロとInfはサポートしません。勾配にも使用されます。

  3. 機械学習で使用される新しい行列およびベクトル手法を追加しました。

    • PrecisionRecallは値を計算して適合率-再現率曲線を構築します。ClassificationScoreと同様に、このメソッドは真の値のベクトルに適用されます。
    • ReceiverOperatingCharacteristic:受信者動作特性(ROC)曲線を構築するための値を計算します。ClassificationScoreと同様に、このメソッドは真の値のベクトルに適用されます。

  4. ONNXランタイムがバージョン1.16に更新されました。リリースの詳細については、GitHubを参照してください。
  5. Python統合パッケージがバージョン5.0.4200に更新され、Python3.12のサポートが追加されました。コマンド「pip install --upgrade MetaTrader5」を使用してパッケージを更新し、最新の変更を取得します。
  6. 場合によってはOrderCalcMargin関数の動作を修正しました。
  7. ENUM_DEAL_REASON列挙に DEAL_REASON_CORPORATE_ACTIONプロパティを追加しました。これは、証券の合併または名前変更、顧客の別の口座への移管など、コーポレートアクションの結果として実行された取引を示します。
  8. Compareメソッドで複素数のベクトルと行列を比較するためのサポートが追加されました。比較には、複素数間の距離の推定が含まれます。距離はsqrt(pow(r1-r2, 2) + pow(i1-i2, 2)として計算され、すでにイプシロンと比較できる実数です。
  9. カラータイプ変数のRGB形式のテキストへの変換が修正されました。
  10. 複素固有値の場合にEigメソッドで固有ベクトルを取得した結果が返される問題を修正しました。複素数の評価のためのメソッドオーバーロードを追加しました。

MetaEditor

  1. 最近リリースされた書籍「トレーダーのためのMQL5プログラミング」へのリンクをHelp\MQL5.communityメニューに追加しました。この書籍は検索システムにも追加されているため、MetaEditorから必要な情報を直接見つけることができます。




  2. ビルトイン検索の改善:

    • [ツールボックス]ウィンドウの検索結果セクションは、オンライン検索結果(ドキュメント、記事、書籍など)の「検​​索」と、ローカル結果の「ファイル内検索」の2つのタブに分割されています。
    • 別の検索文字列が結果セクションに追加されました。これは、MetaEditorのメインツールバーの検索バーの代わりに使用できます。

  3. コマンドラインからコマンドをコンパイルする際のAVX、AVX2、AVX512モードのサポートが追加されました。コンパイルするには、/avx、/avx2、/avx512のいずれかのキーをコマンドに追加します。
  4. データベース操作用のSQLiteエンジンがバージョン3.45に更新されました。
  5. Internet Explorerのサポートを無効にしました。現在、HTMLページの表示にはMicrosoft Edge WebView2のみが使用されています。時代遅れのMSHTMLと比較して、新しいコンポーネントは最新のテクノロジへのアクセスを提供することにより、コンテンツ表示機能を大幅に拡張します。WebView2を使用すると、一部のMetaEditorセクションの外観が改善され、パフォーマンスが向上し、より応答性の高いインターフェイスが作成されます。
  6. 関数のオートコンプリート時にまれに発生するフリーズを修正しました。
  7. クラッシュログに報告されるエラーを修正しました。
  8. 関数のオートコンプリート時にまれに発生するフリーズを修正しました。

テスター

  1. テスト開始日がトリプルスワップ日にあたる場合のトリプルスワップの計算を修正しました。

MetaTrader5Webターミナル

契約仕様における証拠金要件の表示が改善されました。計算の比率と初期パラメータに加えて、仕様には最終証拠金値が表示されるようになりました。証拠金の値がポジションのボリュームに依存する場合、対応するレベルがダイアログに表示されます。



証拠金は仕様ウィンドウが開いた時点の商品価格に基づいて計算され、リアルタイムでは更新されません。したがって、値は参考値として考慮する必要があります。現在の価格に基づいて値を再計算するには、商品仕様を再度開きます。
18 1月 2024
MetaTrader 5 build 4150:MQL5の取引レポートのエクスポートと新しい機械学習メソッド

ターミナル

  1. 取引レポートのHTMLおよびPDFファイルへのエクスポートを追加しました。このオプションを使えば、取引実績を同僚や投資家と簡単に共有できます。ファイルメニューとレポートメニューに新しいエクスポートコマンドが追加されました。




  2. 気配値表示ウィンドウの現在の状態をCSVファイルに保存する機能を追加しました。これをおこなうには、コンテキストメニューのエクスポートを選択します。ファイルには、エクスポート時に選択したメトリクスが保存されます。より多くのデータを保存するには、コンテキストメニューから追加の列を有効にします。




  3. 契約仕様における証拠金要件の表示が改善されました。計算の比率や初期パラメータの代わりに、仕様に最終証拠金値が表示されます。証拠金の値がポジションのボリュームに依存する場合、対応するレベルがダイアログに表示されます。



    証拠金は仕様ウィンドウが開いた時点の商品価格に基づいて計算され、リアルタイムでは更新されません。したがって、値は参考値として考慮する必要があります。現在の価格に基づいて値を再計算するには、商品仕様を再度開きます。

  4. デモ口座のシグナルサービスのサポートを無効にしました。デモ口座の拡張統計にアクセスするには、新しい取引レポートを使用します。成長、バランス、資本のグラフ、方向性や商品別の取引分布図など、戦略の収益性とリスクを特徴付ける多数の指標が含まれます。
  5. 逆指値注文のテイクプロフィットおよびストップロスを編集する際の潜在的な利益/損失の値の表示を修正しました。
  6. 決済システムの運用に関する修正と改善。
  7. *.set ファイルから気配値表示に銘柄のセット を読み込むするときの重複チェックを修正しました。
  8. ParallelsのWebインストーラーを修正しました。M1/M2/M3を備えたmacOS上でこの仮想化システムを使用すると、プラットフォームが正しくインストールされるようになりました。
  9. ユーザーインターフェイスの翻訳を更新しました。
  10. クラッシュログに報告されるエラーを修正しました。

MQL5

  1. 機械学習で利用される行列やベクトルを操作する新しいメソッドを追加しました。

    • ConfusionMatrix:誤差行列を計算します。このメソッドは、予測値のベクトルに適用されます。
    • ConfusionMatrixMultilabel:各ラベルの誤差行列を計算します。このメソッドは、予測値のベクトルに適用されます。
    • ClassificationMetric:分類行列を計算して、実際のデータと比較して予測データの品質を評価します。このメソッドは、予測値のベクトルに適用されます。
    • ClassificationScore:分類行列を計算して、実際のデータと比較して予測データの品質を評価します。このメソッドは真の値のベクトルに適用されます。
     
  2. FileWrite関数によるUTF-8形式のテキストファイルへのデータ保存を修正しました。
  3. Signal*関数が無効化・非推奨にされ、空のシグナルセットを返すようになりました。

MetaEditor

  1. プロファイリングのためのサンプリングレートを向上しました。プロファイラーがアプリケーションの状態を1秒間に10,000回キャプチャするようになり、関数の実行速度をより正確に測定できるようになりました。
  2. 自動コーディングアシスタントCopilotの使用可能モデルを更新しました。ChatGPT-4 Turboモデルを追加し、古い実装を削除しました。
  3. 選択されたテキスト断片内の単語を置換する際のエラーを修正しました。

テスター

  1. 汎用最適化モードで発生する可能性のあるフォワードテストのフリーズを修正しました。
  2. MQL5プログラムの取引履歴を利用した操作を最適化・高速化しました。
  3. クローズ・バイ・オペレーションの利益計算を修正しました。メインテスト銘柄と一致しない取引商品でエラーが発生することがありました。

Webターミナル

  1. ブローカー側で関連プロパティが変更された場合、取引銘柄のプロパティが更新されるように修正しました。
  2. チャート上のローソク足実体の表示を修正しました。チャートに小さな実体が表示されないことがありました。
  3. 口座開設フォームの「国」フィールドの動作を修正しました。
20 10月 2023
MetaTrader 5 build 4040:改善と修正

ターミナル

  1. 新しい取引報告書の改善。成長グラフとドローダウン計算の最初の値の表示を修正しました。



  2. 口座を開設する際、トレーダーは社内のメールシステムを通じていくつかのメッセージを受け取ります。これらは、プラットフォームの機能およびビルトインサービスに関する資格情報および有用な情報を提供します。これらのメールを更新・改善し、50ヶ国語に翻訳し、デザインも一新しました。
  3. 口座入出金ページを最適化しました。
  4. ターミナル:新規注文時の出来高変更エラーを修正しました。取引商品の設定の組み合わせによっては、このフィールドを編集することができませんでした。
  5. デモ口座開設ダイアログのブローカー契約リンクの表示を修正しました。
  6. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  1. 特定の条件下で、MQL5プログラムが起動時にクラッシュする可能性のあるエラーを修正しました。

MetaTrader 5 Webターミナル

  1. 取引履歴のストップロスとテイクプロフィットの表示を修正しました。
  2. ロギングを改善しました。新しいログメッセージは、接続の成功と失敗に関する情報を表示します。
  3. 気配値表示のコンテキストメニュー操作を修正しました。
  4. いた情報から取引する際の操作結果通知の表示を修正しました。
  5. 取引ダイアログを呼び出した際に、指標サブウィンドウがチャートから削除されてしまうエラーを修正しました。
  6. 分析オブジェクトの上に表示される取引レベルのチャート上でのドラッグを修正しました。
29 9月 2023
MetaTrader 5 build 4000 : 取引レポートとWebターミナルの改善

ターミナル

  1. 新しい取引レポートに、月次の資金増加額の表示を追加しました。メトリックスを表示するには、サマリーレポートを開き、バランスモードを選択します。



  2. 新しい取引レポートの表示を修正・改善しました。
  3. ONNXランタイムがバージョン1.16に更新されました。リリースの詳細についてはGitHubを参照してください。
  4. ユーザーインターフェイスの翻訳を更新しました。

MetaTrader 5 Webターミナル

  1. パスワード変更ダイアログと口座開設ダイアログの表示を修正しました。
  2. 履歴でのストップロスとテイクプロフィットの値を修正しました。関連するレベルの修正後にエラーが発生することがありました。
  3. リスク警告ダイアログにスクロールを追加しました。
  4. ユーザーインターフェイスの翻訳を更新しました。
  5. その他の改善と修正。
21 9月 2023
MetaTrader 5 build 3980:改善と修正

ターミナル

  1. 新しい取引レポートの改善。スワップ総額と銘柄別利益チャートの表示を修正しました。
  2. 入出金ページの最適化。決済システムとの新しいプラットフォーム統合の詳細については、ビルド3950のリリースノートをご覧ください。
  3. ストラテジーテスターを含むプラットフォーム全体の金融操作の再計算を最適化。利益、証拠金、その他多くのパラメータがより速く計算されるようになりました。
  4. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  1. 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)]]
       */
      }
  2. 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);

MetaEditor

  1. ONNXモデルビューアの出力タイプの表示を修正しました。

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

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

ターミナル

  1. クライアントターミナルで取引口座から直接資金を入出金するための残高操作をサポートしました。

    ブローカーがトレーダーに新しいレベルのサービスを提供できるように、最も人気のある支払いシステムの統合をMetaTrader 5プラットフォームに直接追加しました。入金やチャージの際は、好みの方法を選択してトランザクションを完了できます。さらに便利なことに、トレーダーは選択したカードを保存できるので、毎回カード情報を入力する必要がありません。ブローカーは支払いの詳細やカード番号を保存しません。ユーザーによって入力された決済データは、安全なチャネルを介してユーザーが選択した決済システムに送信されます。

    この新機能により、トレーダーはクライアントターミナルを離れることなく、ワンクリックで資金を管理することができるようになります。



  2. 取引履歴レポートを全面的に刷新しました。より見やすくなりました。情報提示のアプローチを見直し、味気ない統計レポートをインタラクティブなグラフやダイアグラムに変換しました。作業はまだ進行中ですが、変化はすぐに評価することができます。

    取引統計を表示するには、表示メニューの[レポート]をクリックします。






    レポートは4つのタブに分かれており、それぞれに集約された情報が掲載されています。

    1. 概要:取引概要:口座データ、全体の損益、入出金、残高、成長率、配当金のグラフなど
    2. 利益/損失:利益のあった取引と損失のあった取引のデータ。パラメータは、取引の種類(手動、アルゴリズム、コピー取引)によって分けられています。その結果は、月単位、年単位で取引額や金額を分析することができます。
    3. ロング/ショート:指定期間における購入と売却のダイナミックな比率、および購入と売却の収益性
    4. 銘柄:金融商品別の取引分析。ここでは、どの銘柄で利益を得たり損失を被ったりしているのか、どれくらいの頻度で取引しているのかや、取引のグラフや金額ボリュームを見ることができます。

    新しいレポートでは、タブをクリックするだけで、取引結果を様々な角度から視覚的に評価することができます。ヒストグラム、グラフ、ダイアグラムはインタラクティブで、マウスカーソルを置くと追加情報が表示されます。当社設計者は、できるだけシンプルでわかりやすいレポートを作ることに力を注いできました。ぜひお試しください。


  3. CPUがサポートしている場合、AVX2命令(英語)を使用できるようにした。これにより、ターミナルが起動するCPU能力をより効率的に使用することができます。インストールやアップデートの際、ターミナルがCPUアーキテクチャを独自に判断し、最適なバージョンをインストールするようになっています。起動中、ターミナルは、ターミナルが構築された命令セットを表示するメッセージ(AVX/AVX2)をログに送信します。
    Terminal	MetaTrader 5 x64 build 3914 started for MetaQuotes Software Corp.
    Terminal	Windows 10 build 19045, 20 x Intel Xeon  E5-2630 v4 @ 2.20GHz, AVX, 41 / 63 Gb memory, 58 / 280 Gb disk, UAC, GMT+2
    

    Advanced Vector Extensions (AVX)は、2008年に提唱されたインテルおよびAMDマイクロプロセッサ向けのx86命令セットの拡張です。さらに開発が進み、AVX2とAVX-512が登場しました(2013年)。

  4. X64とAVX上のMetaTrader 5ターミナルの2つのバージョンに加えて、AVX2コマンドを直接サポートするようにコンパイルされたデスクトップターミナルの3番目のバージョンをリリースしました。同時に、ONNXモデルはAVX2コマンドもサポートするようになりました。
  5. ブローカーの必要な規制文書へのリンクの表示を追加しました。ブローカーから必要な法的情報を、クライアントターミナルの[ヘルプ]>[取引条件]で直接入手できるようになりました。





  6. 証明書を使用した拡張認証を追加使用した場合の二要素認証を修正しました。
  7. MacOSで作業しているときの内部メールメッセージの表示を修正しました。
  8. Wineで作業しているときのシグナルウインドウの表示を修正しました。
  9. Linux用の新しいMetaTrader 4と5のインストーラーをリリースしました。
  10. ヘルプにLinuxとMacのターミナル版のダウンロードページを閲覧するためのコマンドを追加しました。トレーダーの便宜を図るため、ブラウザでの取引だけでなく、全プラットフォーム用のターミナルバージョンをWebサイトの特別セクションに設けました。





  11. 社内メールへの画像埋め込みを修正
  12. M1/M2プロセッサをサポートした新しいMac用MetaTrader 5ターミナルインストーラーをリリース。Wine 8.0.1への移行に伴い、古いバージョンを削除し、新しいものをインストールすることを強くお勧めします。8.0.0より古いバージョンのWineを使用している場合、アップデートの必要性に関するメッセージがターミナルログに表示されます。
  13. ネットワークスキャンメニューに取引サーバーへのpingを示す「VPSホスティングスピードアップ」を追加しました。これにより、内蔵VPSをレンタルした場合にネットワークの遅延がどのように減少するかを明確に確認することができます。




  14. パスワードの最低複雑性に関する要件を強化しました。

    • パスワードの長さは8文字以上
    • 少なくとも1文字の大文字と小文字、少なくとも1桁の数字、少なくとも1文字の特殊文字を含める必要がある

  15. ターミナルのログで使用可能なリンク。httpsリンクのある行をダブルクリックすると、ブラウザに移動されリンクが開かれるようになりました。
  16. [気配値表示]の取引商品の検索を修正しました。銘柄はまず名前で検索されからその他のフィールド(説明、ISINなど)で検索されるようになりました。
  17. 口座取引履歴レポートの残高を計算する際に、取引で得た利益の会計処理を修正しました。場合によっては、商品の種類が計算に考慮されていないことがありました。

VPSホスティング

  1. x64/AVX/AVX2コマンドセットでコンパイルされたEX5プログラムの送信および実行機能を追加しました。AVX512用のプログラムは、内蔵VPSではサポートされていません。
  2. 内臓VPSのレンタル拠点を27拠点まで拡大しました。最も近いサーバーの選択肢がさらに広がりました。

MQL5

  1. 拡張プロセッサ命令セット(AVX、AVX2、AVX512、FMA3)の選択を含むコンパイル設定の制御を追加しました。

    現代のCPUは、数学的計算を大幅に高速化する高度な命令セットを備えているが、現代のプログラムの大半はこれらの機能を使用していません。MQL5言語コンパイラにこれらの命令のサポートを追加し、より効率的で高速なコード生成を可能にしました。

    また、MQL5プログラムをコンパイルする命令の種類を選択する機能も追加しました。MetaEditorのオプションでは、単一のプログラムに対して一般的な設定を指定し、プロジェクト設定では個人的な設定を適用することができます。



  2. 行列およびベクトルメソッドにENUM_AVRAGE_MODEおよびENUM_CLASSIFICATION_METRIC列挙を追加しました。
  3. ベクトルにSetメソッドを追加しました。
  4. OpenCLの初期化を改訂し、OpenCL関数を含むMQL5プログラムは読み込むのではなく、最初に実際に使用することで初期化されるようになりました。
  5. SocketIsConnected関数呼び出し時のエラーを修正しました。
  6. カスタム指標のアンロード時にOnDeinitメソッドを呼び出す際の遅延を修正しました。
  7. indicator_labelプロパティの文字列の長さが正しく計算されず、グラフィカルオブジェクトのツールチップが正しく表示されないというコンパイラー・エラーを修正しました。
  8. マクロ本体で複数行のコメントを使用するのを修正しました。エラーが発生したマクロの例:
    #define MACRO1 /*
    #define MACRO2 */
    void OnStart()
    {
    #ifdef MACRO2
        Print( 2 );
    #else
        Print( 1 );
    #endif
    }
  9. MathAtan2関数のパラメータの順序を修正しました。順序がC++の同様の関数と一致するようになりました。
  10. ENUM_TERMINAL_INFO_STRING列挙に新しいTERMINAL_CPU_ARCHITECTURE値を追加しました。また、__CPU_ARCHITECTURE__マクロを追加し、ターミナルが動作しているコンピュータのCPUアーキテクチャを取得できるようにした。使用例
    void OnStart()
      {
       Print("CPU name:         ",TerminalInfoString(TERMINAL_CPU_NAME));
       Print("CPU cores:        ",TerminalInfoInteger(TERMINAL_CPU_CORES));
       Print("CPU architecture: ",TerminalInfoString(TERMINAL_CPU_ARCHITECTURE));  
       Print("");
       Print("EX5 architecture: ",__CPU_ARCHITECTURE__);                            
      }
    
    CPU name:         12th Gen Intel Core i9-12900K
    CPU cores:        24
    CPU architecture: AVX2 + FMA3
    
    EX5 architecture: AVX

  11. extern修飾子の動作を変更しました。extern修飾子を使った変数の宣言は、変数の事前宣言となります。

    新たな制限:
    1. 変数の事前宣言に初期化を含んではなりません。例えば、以下のコードをコンパイルすると、「X - extern variable initialization is not allowed」というエラーが出ます。
      extern int X=0;
      
      void OnStart()
        {
        }

    2. extern変数は、externキーワードなしでプログラム中で宣言されなければなりません。例えば、以下のコードをコンパイルすると、「unresolved extern variable X」というエラーが発生します。
      extern int X;
      
      void OnStart()
        {
        }

    3. externを使用する場合、初期化の順番に注意することが重要です。なぜなら、初期化されていない変数がアクセスされる場合があるからです。例えば、以下のコードでは、変数Yの初期化が変数Xの初期化より前におこなわれるため、ログに「Y=0 X=5」と記録されます。
      extern int X;
      int        Y=X;
      
      void OnStart(void)
        {
         Print("Y=",Y," X=",X);
        }
        
      int X=_Digits;

  12. ALGLIBライブラリを3.19に更新しました。ALGLIBは、数値計算手法やデータ解析アルゴリズムを扱うために設計された高性能数値解析ライブラリです。

    行列とベクトルを使用するように既存のライブラリクラスを修正し、ALGLIB 3.19からの新機能も追加しました。すべてのソースコードが改訂され、単一のデザインスタイルになりました。ALGLIBライブラリのソースコードは<ターミナルデータディレクトリ>\MQL5\Include\Math\Alglibにあります。テストスクリプトはMQL5\Scripts\UnitTests\Alglibにあります。

    残念なことに、MQL5用のALGLIBライブラリバージョン3.19の変更は非常に大きく、後方互換性がありません。MQL5バージョン3.5用のALGLIBライブラリを使用している場合は、明示的にプログラムをチェックし、必要な変更をおこなう必要があります。

    ライブラリ自体に加え、テストスクリプトも更新されました。テストの数は、クラスが62から91に、インターフェイスが143から152に増加しました。このように、MetaTrader 5プラットフォームの開発者は、トレーダーに最も効率的なソリューションを提供しています。

    • MQL5言語は、スピードの点ではC++に匹敵する
    • SQLiteデータベースの組み込み処理、OpenCL計算、DirectXサポート、Pythonとの統合
    • ファジー論理統計ALGLIBの更新を含む数学ライブラリ

MetaEditor

  1. CPUがサポートしている場合、AVX2命令(英語)を使用できるようにした。
  2. コンパイル中にフリーズすることがあったエラーを修正。
  3. デバッグ時のローカル変数の表示を改善しました。

テスター

  1. AVX2命令がCPUでサポートされている場合に使用できるようにしました。
ユーザーインターフェイスの翻訳を更新しました。

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


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

  1. チャート設定に売り呼び値の表示を追加しました。




  2. 加速された初期ターミナル負荷。
  3. パスワード変更機能を追加しました。
  4. パスワードの削除と保存機能を追加しました。
  5. 取引履歴を表示するカスタム期間を追加しました。
  6. パスワードの強制変更を修正しました。
  7. Diff(建値とTP/SLレベル間の距離)の計算を修正しました。





  8. すべての注文/取引を決済する際のティックストップエラーを修正しました。
  9. 経済カレンダーイベントの表示を修正しました。オプションが有効になっているにもかかわらず、チャートに表示されないことがありました。
  10. チャートの銘柄を変更すると指標がリセットされる問題を修正しました。
  11. 電話・メール確認時のリアル口座開設フォームのエラーを修正しました。
  12. 新しい翻訳を追加し、既存の翻訳を修正しました。

8 6月 2023
MetaTrader 5 build 3800:BOC注文、AIコーディングアシスタント、ONNXのサポート強化など

ターミナル

  1. 新しい注文処理ポリシーであるパッシブ/BOC (Book or Cancel)のサポートを追加しました。



    BOCのポリシーでは、注文は[板情報](オーダーブック)にしか出せないことになっています。注文後すぐに約定できる場合、この注文はキャンセルされます。このポリシーは、発注された注文の価格が現在の市場よりも悪くなることを保証します。BOCはパッシブ取引を実装するために使用されます。注文が出されたときにすぐに実行できないことが保証されているため、現在の流動性には影響しません。この処理ポリシーは、取引所執行モードの指値注文および逆指値注文にのみ対応しています。

    新しい処理ポリシーの有無は、証券会社によって異なります。

  2. HTMLコンテンツの表示にMicrosoft Edge WebView2が使用されるようになりました。

    旧来のMSHTMLに比べ、現代技術へのアクセスを提供することで、コンテンツ表示機能が大幅に拡張されます。WebView2を使用することで、一部のプラットフォームセクションの外観を改善し、パフォーマンスを向上させ、より応答性の高いインターフェイスを実現します。特に、新コンポーネントは、マーケット、シグナル、VPSの各セクションに影響します。
    WebView2のフルサポートはWindows 10で導入されました。すべてのユーザーが最新のOSバージョンにアップグレードすることを強くお勧めします。プラットフォームは、Windows 7とWineではMSHTMLを使い続けますが、新機能は利用できません。また、利用可能なすべてのオペレーティングシステムのアップデートをインストールすることを強くお勧めします。推奨最低バージョンはWindows 10 21H2(ビルド19044、2021年11月)です。

  3. マーケットセキュリティシステムを改善しました。ここで、製品を実行するためには、製品を購入したのと同じMQL5アカウントで、ユーザーがプラットフォームで認証されている必要があります。アカウントは[ツール]>[オプション]>[コミュニティ]で指定する必要があります。



    アカウントが指定されていない場合、または無効なアカウントが指定されている場合、製品は起動せず、プラットフォームジャーナルに以下のメッセージが表示されます。
    'ProductName' requires active MQL5 account in Tools->Options->Community
  4. 履歴セクションのコンテキストメニューに[Overview]を追加しました。その口座の取引レポートが開かれます。



  5. 二要素認証ダイアログの表示不具合を修正しました。ターミナルに同じ番号で異なる証券会社で開設された複数の口座がある場合、口座接続フォームでワンタイムパスワード欄を表示できないことがありました。
  6. DRAW_COLOR_CANDLESの表示スタイルを持つ指標の高速描画を実装しました。
  7. 取引レポート作成時のエラーを修正しました。特定の条件下で、チャート上の利益と資本の値が正しく表示されないことがありました。
  8. 取引報告書にコストの表示を追加しました。この値は、銘柄の現在の中点価格に対して取引をおこなう際に発生するコストの合計(中点スプレッドコスト)を示しています。スプレッドによりトレーダーが取引で失う金額です。この値の有無は、証券会社によって異なります。
  9. UI翻訳を更新しました。
  10. 特にmacOSシステムでのWineでの安定性を向上させました。古いターミナルを完全に削除して、再インストールすることをお勧めします。


  11. パッケージのインストールやアップデートのダウンロード手順を高速化しました。ディストリビューションパッケージを選択する際に、ユーザーのコンピューターでAVXが利用可能かどうかを分析する機能を改善しました。
  12. WebプロトコルでTLS 1.3への対応を可能にしました。TLS 1.0は非推奨で安全でないとされているため、無効化されています。
  13. 取引履歴レポートにおける代理店手数料の会計処理を修正しました。最終的な利益を計算する際に、該当する取引を無視することもできます。
  14. アカウント接続ダイアログで、サーバーを変更できないように修正しました。ターミナル内に異なる証券会社から同じ番号の口座が複数ある場合に問題が発生していました。
このビルド以降、インストーラーは64ビットプラットフォーム版でのみ動作するようになります。32ビット版のサポートは終了します。以前インストールした32ビットプラットフォーム版は、2024年1月1日まで動作します。

MQL5

  1. ENUM_STATISTICS列挙に新しいSTAT_COMPLEX_CRITERION値を追加しました。最適化の結果として算出された複素数基準値を取得するプロパティとして使用します。
  2. 渡された行列またはベクトルに基づいて回帰指標を計算するために使用されるRegressionMetricメソッドを改善しました。予測データの品質を評価する真の値を渡すためのパラメータvector_trueとmatrix_trueを追加しました。
    double vector::RegressionMetric(
       const vector& vector_true,            // true values
       const ENUM_REGRESSION_METRIC  metric  // metric
       );
     
    double matrix::RegressionMetric(
       const matrix& matrix_true,            // true values
       const ENUM_REGRESSION_METRIC metric   // metric
       );
     
    vector matrix::RegressionMetric(
       const matrix& matrix_true,            // true values
       const ENUM_REGRESSION_METRIC metric,  // metric
       const int                      axis   // axis
       );
  3. LinearRegressionメソッドを追加しました。渡されたベクトル/行列の線形回帰値を計算したベクトル/行列を返します。
    vector vector::LinearRegression();
     
    matrix matrix::LinearRegression(
       ENUM_MATRIX_AXIS axis=AXIS_NONE       // 回帰が計算される軸
       );
    例:
    vector vector_a;
    //--- ベクトルを価格で埋める
    vector_a.CopyRates(_Symbol,_Period,COPY_RATES_CLOSE,1,100);
    //--- 線形回帰を得る
    vector vector_r=vector_a.LinearRegression();
    その結果をグラフで可視化しました。


    LinearRegressionメソッドが返す結果を可視化


  4. 行列/ベクトル中のNaN値の数を返すHasNanメソッドを追加しました。
    ulong vector::HasNan();
    ulong matrix::HasNan();
    NaN値を持つ要素の適切なペアを比較する場合、CompareおよびCompareByDigitsメソッドはこれらの要素を等しいとみなしますが、通常の浮動小数点数の比較の場合はNaN != NaNです。

  5. ONNXモデルの操作に使用するOnnxTypeInfo構造体を変更しました。

    struct OnnxTypeInfo
      {
       ENUM_ONNX_TYPE       type;            // parameter type
       OnnxTensorTypeInfo   tensor;          // tensor description
       OnnxMapTypeInfo      map;             // map description
       OnnxSequenceTypeInfo sequence;        // sequence description
      };

    データ型は、新しいサブ構造を用いて構造体内で指定されます。

    • OnnxTensorTypeInfo:テンソル
    • OnnxMapTypeInfo:マップ
    • OnnxSequenceTypeInfo: シーケンス

    struct OnnxTensorTypeInfo
      {
       ENUM_ONNX_DATATYPE   data_type;       // data type in the tensor
       long                 dimensions[];    // number of elements
      };
    
    struct OnnxMapTypeInfo
      {
       ENUM_ONNX_DATA_TYPE  key_type;        // key type
       OnnxTypeInfo         type_info;       // value type
      };
    
    struct OnnxSequenceTypeInfo
      {
       OnnxTypeInfo         type_info;       // data type in the sequence
      };
    OnnxTypeInfo::type (ONNX_TYPE_TENSOR, ONNX_TYPE_MAP or ONNX_TYPE_SEQUENCE)に応じて、関連する部分構造体が満たされます。

  6. ONNX(Open Neural Network Exchange)モデルへの対応を強化しました。
  7. 指標バッファのデータをベクトルに取得できるCopyIndicatorBufferメソッドを追加しました。
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,ulong start_pos,ulong count);
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,datetime start_time,ulong count);
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,datetime start_time,datetime stop_time);
  8. FrameAddメソッドとFrameNextメソッドにおいて、2次元以上の配列を持つ操作を修正しました。
  9. CRedBlackTree::Remove標準ライブラリメソッドを修正しました。
  10. Fuzzy Logicライブラリの修正を実装しました。

MetaEditor

  1. 先進の自動コーディングアシスタントCopilotとの連携を追加しました。その運用は、OpenAIのモデルに基づいています。コメントや機能の一部を入力し、プロンプトを送信します。ニューラルネットワークは、プロンプトを分析し、アイデアを実装するためのコーディングオプションを提供します。




    ファイルの種類に応じて、各プロンプトの先頭に「MQL5 language」、「Python language」、「C++ language」という文字列が自動的に挿入されます。こうすると、ニューラルネットワークは必要な言語で結果を出します。

    Copilotは現在無料で、エディターですでに有効になっています。[ツール]>[オプション]>[Copilot]には、いくつかのオプションが用意されています。




    決済設定:

    • MQL5アカウントを使用する:このオプションは現在無料で利用できます。後日、MQL5のアカウント残高から直接サブスクリプションの支払いをおこなうことができるようになります。
    • サブスクリプションを購入して関連するキーがあれば、OpenAIのキーを使用します。

    以下はプロンプトの設定です。

    • モデル:リクエストを処理するニューラルネットワーク。現在、text-davinci-003とgpt-3.5-turboが利用可能です。gpt-4のサポートは近日中に追加される予定です。
    • 最大トークン:プロンプトに応答してモデルが返すことができるテキストユニットの数です。
    • 可変性:ニューラルネットワークがプロンプトにどれだけ厳密に従うかに影響します。値が大さいほど、結果のランダム性が高くなります。このオプションは、OpenAIのモデルにおけるemperatureパラメータに対応します。

  2. ONNXモデルのプロパティを表示する機能を追加しました。

    *.onnxファイルの内容をエディターで直接確認することができます。例を見るには、[ツールボックス]の[公開プロジェクト]タブで ONNX.Price.Predictionプロジェクトを探し、コンテキストメニューから[参加]を選択します。プロジェクトはコンピューターにダウンロードされ、ナビゲータに表示されます。



  3. Netronを使った機械学習モデルやニューラルネットワークの可視化機能を追加しました。このビューアは、ONNX、TensorFlow Lite、Caffe、Keras、ncnnなど、一般的なモデルをサポートしています。

    モデルを表示するには、ナビゲータでそのファイルを選択し、[Open in Netron]をクリックします。このユーティリティがインストールされていない場合は、GitHubのページが開くので、そこからお使いのOSに合ったインストーラーをダウンロードしてください。例えば、Windowsの場合は、Netron-Setup-X.X.X.exeを使用します。プログラムがインストールされていれば、すぐにモデルが開き、ナビゲータから見ることができます。


    以下が対応形式です。

    • armnn、caffemodel、circle、ckpt、cmf、dlc、dnn、h5、har、hd5、hdf5、hn、keras、kmodel、
    • lite、mar、meta、mge、mlmodel、mlnet、mlpackage、mnn、model、nb、ngf、nn、nnp、
    • om、onnx、ort、paddle、param、pb、pbtxt、pdiparams、pdmodel、pdopt、pdparams、prototxt、pt、pth、ptl、
    • rknn、t7、tfl、tflite、tmfile、tm、tnnproto、torchscript、uff、xmodel

  4. UI翻訳を更新しました。

テスター

  1. テストレポートにおける「平均負けトレード」指標の計算を修正しました。従来は、エントリ取引で手数料が発生した場合、誤ってエントリ取引を含めて計算することがありました。
  2. ストラテジーテスターのカスタム手数料オプションを改善しました。銘柄を設定する場合は、パス全体ではなく、その名前を指定します。
  3. ストラテジーテスターのアイコンを更新しました。新しいメタファーがあれば、より理解しやすくなります。

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

Webターミナル ビルド

  1. 取引履歴を改善しました。

    • 取引履歴で入出金、手数料、調整などの残高操作を表示するようにしました。
    • 取引履歴で残高、利益、手数料、入出金、注文数などの合計を表示するようにしました。
    • モバイル版で操作のソートと深さによる履歴のフィルタリング機能を追加しました。




  2. 銘柄契約仕様の強化:出来高制限、ティックサイズと値、初期証拠金とヘッジ証拠金の情報が追加されました。
  3. 配色を改善しました。

    • 未決注文は、チャート上ではグレーで表示されます。ポジションの色は方向によって異なり、赤は「売り」、青は「買い」を表します。新しい色は、チャート上に複数操作が表示されている場合に、より簡単にナビゲートすることができます。
    • ポジションを表示/編集する場合、このポジションとそのレベルのみが強調表示され、他のすべてのポジションと注文はグレーになり、そのレベルは価格スケールから非表示になります。従って、別々の業務を管理することが容易になります。
    • ストップロスの色が赤からオレンジに変更され、売りポジションとの混同を避けることができます。
    • ポジション決済時間を示すチャート上のアイコンを改善しました。テイクプロフィットで決済されたポジションには緑色のアイコンが、ストップロスで決済されたポジションには赤色のアイコンが使用されます。

  4. アラビア語、ブルガリア語、ベトナム語、ギリシャ語、インドネシア語、マレー語、オランダ語、ペルシャ語、ポーランド語、タイ語、ウクライナ語、ヒンディー語のインターフェース翻訳を追加しました。Webターミナルは2424の言語で利用できるようになりました。
  5. トルコ語のUI翻訳を修正しました。
  6. Webターミナルモバイル版で、未決注文の修正・削除を修正しました。
  7. チャート上の「クローズドマーケット」ツールチップを修正しました。
  8. 取引ダイアログのポジション決済ボタンで、利益の表示を修正しました。部分決済中にエラーが発生していました。
  9. チャート上の取引通知の表示を修正しました。
  10. 板情報で矢印を使ったボリューム変更を修正しました。
  11. 特定の条件下で、動作中の指標の設定がリセットされる可能性のあるエラーを修正しました。
  12. 新規口座開設時のユーザー名チェックを修正しました。従来は、名前にアポストロフィーがあるとエラーとされていました。
  13. リクオートの処理を修正しました。特定の条件下で、リクォート価格のダイアログが表示されない場合がありました。
  14. 一目均衡表指標の表示を修正しました。遅行スパン、上の雲、下の雲の各ラインが正しいオフセットで表示されます。
  15. 新規注文時の当初証拠金の確認を修正しました。ヘッジポジション会計システムでエラーが発生していました。
  16. 契約書仕様書ウィンドウのスクロールを修正しました。

MQL5.community

  1. MQL5クラウドネットワークのWebサイト(https://cloud.mql5.com)が全面リニューアルされました。

    世界中の何千台ものコンピュータの処理能力を利用して、取引戦略を最適化する方法をご紹介します。MQL5クラウドネットワークを使えば、多量の計算も数分で完了します。ネットワークへの参加方法、コンピュータリソースの提供による収入については、Webサイトをご覧ください。




  2. マーケット商品のスクリーンショットセクションを改善しました。最大1920*1800ピクセルの画像をアップロードして、アプリケーションの動作を説明することができます。また、スクリーンショットギャラリーも更新しました。カルーセルには画像のサムネイルが表示され、クリックするとフルサイズの画像が表示されます。



  3. フリーランスのセクション改善:初回注文時に、より多くのヒントをユーザーに提供するようになりました。

    • 要求仕様書の例と追加を促すリマインダー
    • 注文作成手順
    • テンプレート活用のヒント

    これらのヒントをもとに、注文を作成し、望ましい結果を得るためのお手伝いをします。




24 3月 2023
MetaTrader 5 build 3640:改善と修正

ターミナル

  1. 時折誤ったプラットフォームログが作成される問題を修正しました。
  2. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  • グローバル変数のチェックを修正しました。異なる名前空間で同一の変数を宣言すると、コンパイラは、変数が既に宣言されているという誤った警告を出しました。

Webターミナル ビルド

  1. ポルトガル語へのユーザー インターフェイスの翻訳を追加しました。Webターミナルは12の言語で利用できるようになりました。
  2. 標準偏差インジケータを追加するためのダイアログを修正しました。
  3. マイナーな修正と改善。
17 3月 2023
MetaTrader 5 build 3640:11言語のWebターミナル

Webターミナル

  1. 10の広く話されている言語へのUI翻訳を追加しました。簡体字および繁体字中国語、フランス語、ドイツ語、イタリア語、日本語、韓国語、スペイン語、トルコ語、ロシア語です。このリストは、将来のバージョンでさらに拡張される予定です。言語を切り替えるには、関連するメニューを使用します。


    11言語対応のWeb端末インターフェイス


  2. 取引サーバーへの接続メカニズムを最適化しました。

MQL5

  1. MQL5:CopyTicksCopyTicksRangeCopyRates各メソッドにCOPY_TICKS_VERTICALフラグとCOPY_RATES_VERTICALフラグを追加しました。

    デフォルトでは、ティックと系列は横軸に沿って行列にコピーされます。つまり、データは行末の右側に追加されます。トレーニング済みのONNXモデル実行タスクでは、入力データを供給するために、このような行列を転置する必要があります。

    const long   ExtOutputShape[] = {1,1};    // model's output shape
    const long   ExtInputShape [] = {1,10,4}; // model's input shape
    #resource "Python/model.onnx" as uchar ExtModel[]// model as a resource
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    int OnStart(void)
      {
       matrix rates;
    //--- get 10 bars
       if(!rates.CopyRates("EURUSD",PERIOD_H1,COPY_RATES_OHLC,2,10))
          return(-1);
    //--- input a set of OHLC vectors
       matrix x_norm=rates.Transpose();
       vector m=x_norm.Mean(0);               
       vector s=x_norm.Std(0);
       matrix mm(10,4);
       matrix ms(10,4);

    メソッドを呼び出すときに追加のCOPY_RATES_VERTICALフラグ(ティックの場合はCOPY_TICKS_VERTICAL) を指定することで、余分なデータ転置操作を避けることができます。

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    int OnStart(void)
      {
       matrix rates;
    //--- get 10 bars
       if(!rates.CopyRates("EURUSD",PERIOD_H1,COPY_RATES_OHLC|COPY_RATES_VERTICAL,2,10))
          return(-1);
    //--- input a set of OHLC vectors
  2. ENUM_CHART_PROPERTY_INTEGER列挙に新しいCHART_SHOW_TRADE_HISTORY値を追加しました。このプロパティは、チャート上の取引履歴からの取引の表示を制御します。ChartGetIntegerおよびChartSetInteger関数を使用して、プロパティを取得および設定します。チャート上の取引表示の詳細については、プラットフォームのドキュメントをお読みください。

MetaEditor

  • 特定の条件下でファイルのコンパイル中に発生する可能性があったインターフェイスのフリーズを修正しました。

ターミナル

  • クラッシュログに報告されるエラーを修正しました。
10 3月 2023
MetaTrader 5ビルド3620:Webターミナルの改善、ONNXサポート、MQL5の高速行列乗算

ターミナル

  1. 取引レポートの合計利益計算を修正しました。
  2. 気配値表示ウィンドウから利用できる取引商品のファンダメンタルズデータを更新しました。
  3. LinuxシステムのWine7.0.1での取引プラットフォームの起動を修正しました。
  4. 検索バーから板情報に銘柄を追加できるように修正しました。説明で見つけた銘柄を、その行をクリックしてリストに追加することができませんでした。

MQL5

  1. ONNX(Open Neural Network Exchange)モデルを用いた操作に対応しました。

    ONNXは、機械学習モデルのためのオープンソースフォーマットです。このフォーマットは、ChainerCaffee2PyTorchを含む多くのプラットフォームでサポートされています。専用ツールを使ってONNXモデルを作成し、MQL5アプリケーションに統合して、取引の意思決定に利用することができます。

    サポートされるすべての関数は、ドキュメントに記載されています。テスト用ONNXモデルの例は、MetaEditorの公開プロジェクトで確認できます。ツールボックスで[公開プロジェクト]からONNX.Price.Predictionプロジェクトを探し、コンテキストメニューから[参加]を選択します。プロジェクトがコンピューターにダウンロードされ、ナビゲーターに表示されます。


    公開プロジェクトにおけるONNXモデルとの連携例


    プロジェクトをコンパイルし、EURUSDH1で実行し、結果を確認することができます。

    モデルとそれを実行するMQL5コードに加え、プロジェクトにはPricePredictionTraining.pyというPythonスクリプトも含まれています。これは、ONNXモデルを自分で作成する方法を紹介するものです。スクリプトを実行するには、Pythonをコンピュータにインストールして、次のようにコマンドプロンプトから必要なモジュールをインストールしてください。

    python.exe -m pip install --upgrade pip
    python -m pip install --upgrade tensorflow
    python -m pip install --upgrade pandas
    python -m pip install --upgrade scikit-learn
    python -m pip install --upgrade matplotlib
    python -m pip install --upgrade tqdm
    python -m pip install --upgrade metatrader5
    python -m pip install --upgrade onnx==1.12
    python -m pip install --upgrade tf2onnx
    ONNXの使用方法は、ドキュメントに記載されています。

  2. 一般行列乗算(GeMM)のサポートを追加しました。このアルゴリズムは、タスクの並列化とL1/L2/L3キャッシュの最適化された利用により、一部のプロセッサタイプでの計算を高速化します。計算速度は、KernelLibrary(MKL)(英語)やOpenBLASなどの一般的なパッケージと同程度です。詳細な比較テストはまもなく公開されます。

    新しいアルゴリズムは現在、matrix::GeMMメソッドでサポートされています。お使いのプロセッサがAVXおよびFMA(英語)命令をサポートしている場合(2013年以降にリリースされたほとんどのプロセッサがこれらの命令をサポートしています)、アルゴリズムは自動的に有効化されます。

  3. 行列とベクトルをDLLに転送する機能が追加されました。これにより、外部変数から、該当する型を利用する関数をインポートすることができます。

    行列とベクトルは、バッファへのポインタとしてDLLに渡されます。たとえば、float型の行列を渡すには、DLLからエクスポートされた関数の対応するパラメータが、float型のバッファポインタを受け取る必要があります。次は例です。

    MQL5
    #import "mmlib.dll"
    bool sgemm(uint flags,matrix<float> &C,const matrix<float> &A,const matrix<float> &B,ulong M,ulong N,ulong K,float alpha,float beta);
    #import
    C++
    extern "C" __declspec(dllexport) bool sgemm(UINT flags,float *C,const float *A,const float *B,UINT64 M,UINT64 N,UINT64 K,float alpha,float beta)
    バッファに加えて、正しく処理されるために行列とベクトルのサイズを渡す必要があります。

  4. 同期された時系列をMqlRatesから別の配列にコピーするための新しいCopySeries関数を追加しました。

    CopySeries関数を使用すると、1回の呼び出しで必要な時系列のみを別の指定された配列に取得できますが、時系列データはすべて同期されます。これは、特定のインデックスNで結果として得られる配列のすべての値が、指定された銘柄/時間枠のペアの同じバーに属することを意味します。したがって、プログラマーはバーの開始時間までに受信したすべての時系列の同期を確保する必要はありません。

    時系列の完全なセットをMqlRates配列として返すCopyRatesとは異なり、CopySeries関数を使用すると、特定の必要な時系列を個別の配列に取得できます。これは、時系列の種類を選択するためのフラグの組み合わせを指定することで実現できます。関数に渡される配列の順序は、MqlRates構造体のフィールドの順序と一致する必要があります。

    struct MqlRates
      {
       datetime time;         // period beginning time
       double   open;         // open price
       double   high;         // high price for the period
       double   low;          // low price for the period
       double   close;        // close price
       long     tick_volume;  // tick volume
       int      spread;       // spread
       long     real_volume;  // exchange volume
      }

    したがって、現在の銘柄/時間枠の最後の100バーの「time」、「close」、「real_volume」時系列の値を取得する必要がある場合は、次の呼び出しを使用します。

    datetime  time[];
    double    close[];
    long      volume[];
    CopySeries(NULL,0,0,100,COPY_RATES_TIME|COPY_RATES_CLOSE|COPY_RATES_VOLUME_REAL,time,close,volume);
    

    time、close、volume配列の順序は、MqlRates構造体内のフィールドの順序と一致する必要があります。rates_maskの値の順序は無視されます。マスクは次のようになります。

    COPY_RATES_VOLUME_REAL|COPY_RATES_TIME|COPY_RATES_CLOSE


    //--- input parameters
    input datetime InpDateFrom=D'2022.01.01 00:00:00';
    input datetime InpDateTo  =D'2023.01.01 00:00:00';
    input uint     InpCount   =20;
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart(void)
      {
    //--- arrays to get timeseries from the Rates structure
       double   open[];
       double   close[];
       float    closef[];
       datetime time1[], time2[];
    //---request close prices to a double array
       ResetLastError();
       int res1=CopySeries(NULL, PERIOD_CURRENT, 0, InpCount,
                           COPY_RATES_TIME|COPY_RATES_CLOSE, time1, close);
       PrintFormat("1. CopySeries  returns %d values. Error code=%d", res1, GetLastError());
       ArrayPrint(close);
       
    
    //--- now also request open prices; use float array for close prices
       ResetLastError();
       int res2=CopySeries(NULL, PERIOD_CURRENT, 0, InpCount,
                           COPY_RATES_TIME|COPY_RATES_CLOSE|COPY_RATES_OPEN, time2, open, closef);
       PrintFormat("2. CopySeries  returns %d values. Error code=%d", res2, GetLastError());
       ArrayPrint(closef);
    //--- compare the received data
       if((res1==res2) && (time1[0]==time2[0]))
         {
          Print("  | Time             |    Open      | Close double | Close float |");
          for(int i=0; i<10; i++)
            {
             PrintFormat("%d | %s |   %.5f    |   %.5f    |   %.5f   |",
                         i, TimeToString(time1[i]), open[i], close[i], closef[i]);
            }
         }
    /*  Result
            1. CopySeries  returns 0 values. Error code=0
            [ 0] 1.06722 1.06733 1.06653 1.06520 1.06573 1.06649 1.06694 1.06675 1.06684 1.06604
            [10] 1.06514 1.06557 1.06456 1.06481 1.06414 1.06394 1.06364 1.06386 1.06239 1.06247
            2. CopySeries  returns 0 values. Error code=0
            [ 0] 1.06722 1.06733 1.06653 1.06520 1.06573 1.06649 1.06694 1.06675 1.06684 1.06604
            [10] 1.06514 1.06557 1.06456 1.06481 1.06414 1.06394 1.06364 1.06386 1.06239 1.06247
              | Time             |    Open      | Close double | Close float |
            0 | 2023.03.01 17:00 |   1.06660    |   1.06722    |   1.06722   |
            1 | 2023.03.01 18:00 |   1.06722    |   1.06733    |   1.06733   |
            2 | 2023.03.01 19:00 |   1.06734    |   1.06653    |   1.06653   |
            3 | 2023.03.01 20:00 |   1.06654    |   1.06520    |   1.06520   |
            4 | 2023.03.01 21:00 |   1.06520    |   1.06573    |   1.06573   |
            5 | 2023.03.01 22:00 |   1.06572    |   1.06649    |   1.06649   |
            6 | 2023.03.01 23:00 |   1.06649    |   1.06694    |   1.06694   |
            7 | 2023.03.02 00:00 |   1.06683    |   1.06675    |   1.06675   |
            8 | 2023.03.02 01:00 |   1.06675    |   1.06684    |   1.06684   |
            9 | 2023.03.02 02:00 |   1.06687    |   1.06604    |   1.06604   |
    */
      }
  5. OrderSend関数の動作を修正しました。同じ口座が複数のプラットフォームで同時に使用された場合、関数リクエストは間違った注文チケットを返す可能性がありました。
  6. EX5ライブラリのインポートを修正しました。インポートしたライブラリの名前と、インポート先のファイル名が一致しない場合はエラーとなります。

MetaEditor

  1. 共有プロジェクトメンバーへのプッシュ通知送信を追加しました。新しいオプションでは、プロジェクトの設定とファイルの変更についてユーザーに通知できます。通知を有効にするには、MQL5.communityプロファイルの[設定\セキュリティ]セクションにMetaQuotes IDを入力します。


    プロジェクトの更新をプッシュ通知でお知らせ


  2. ナビゲーターのファイルアイコンを更新しました。新しく、よりシンプルなメタファーで、より理解しやすくなっています。

テスター

  1. |」が含まれている場合に入力文字列パラメータが切り捨てられるエラーを修正しました。

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

  1. Webターミナルインターフェイス用の既製のカラーテンプレートを追加しました。テンプレートは、チャートのバーと線の表示、気配値表示での価格と口座の資産報告に影響します。当社のデザインチームは、お客様の提案と伝統的な色の組み合わせに基づいて、カラーテンプレートプリセットを用意しました。


    新しいWebターミナルのカラーテンプレート


  2. 銘柄指定ウィンドウを再設計しました。取引商品データは、見やすいように論理ブロックに再編成されています。


    取引商品指定画面の更新


  3. Webターミナルを介したリアル口座の開設を修正しました。登録フォームに記入した後、サーバーがエラーを返すことがありました。
  4. 取引ダイアログのエラーを修正しました。ポジション変更ダイアログが開いているときにツールボックスウィンドウでXボタンを押してポジションを閉じた場合、ダイアログの内容がリセットされていませんでした。更新後、ダイアログは新しい発注モードに自動的にリセットされます。
  5. 口座管理ダイアログのサーバーフィールドの表示を修正しました。
  6. ツールバーの現在の時間枠の表示を修正しました。
  7. 取引ダイアログで、原資産単位での出来高の表示を修正しました。
  8. ストップロスとテイクプロフィットレベルの変更を修正しました。値の1つを変更すると、特定の条件下で2つ目の値がリセットされる可能性がありました。
  9. 投資リスク警告の表示を修正しました。
6 3月 2023
iPhone/iPad向けMetaTrader 5:チャート取引と分析の機能改善
  1. チャートからストップ注文とストップリミット注文を出す機能を追加しました。

    以前のバージョンではリミット注文のみが利用可能でした。下部のチャートパネルのボタンを連続して押して、必要なタイプを選択します。


    チャートからストップ注文とストップリミット注文を出す


  2. チャートからポジション決済や指値注文の削除を実行できるようになりました。チャートでポジションまたは注文レベルを選択すると、関連するコマンドが下部の取引パネルに表示されます。


    チャートからポジションと注文を管理する


  3. 価格チャートの右枠をシフトする機能を改善しました。シフトを変更するには、垂直セパレータが表示されるまで、チャートを最後の価格までスクロールしてから、下のチャートスケールにある三角形をドラッグします。


    下の目盛りの三角形をドラッグしてチャートシフトを変更


  4. チャートに分析オブジェクトをコピーする機能を追加しました。これにより、チャートのマークアップが高速になります。長押ししてオブジェクトメニューを開き、[コピー]を選択します。

    分析オブジェクトのコピーの作成


  5. さまざまな時間枠でインジケータの表示を管理する機能を追加しました。インジケータが特定のチャート期間に適していない場合は、非表示にして、画面で他の分析ツールのために場所を空けることができます。


    異なる時間枠でのインジケータの表示を管理する


  6. 銘柄指定ウィンドウに銘柄手数料の表示を追加しました。


    商品仕様で手数料額を調べる


  7. パスワード回復リンクを追加しました。アカウントのパスワードは、関連する証券会社を介してのみ復元できます。リンクには、証券会社の連絡先の詳細が表示されます。


    パスワードの回復に関するヘルプ


  8. MQL5.communityチャンネルへのリンクを共有する機能を追加しました。


    アプリを介してチャンネルへのリンクを共有する


  9. 取引制限のある口座に接続する際のユーザーエクスペリエンスを向上しました。

    取引は、投資家モードで接続している、取引契約が受け入れられていない、証券会社の検証が完了していないなどのさまざまな理由で制限される可能性があります。以前は、取引機能が利用できない理由は説明されていませんでした。

    取引が制限されている場合、取引セクションの注文ボタンがグレー表示されるようになりました。ボタンを押すと、関連する情報と推奨事項が表示されます。


    取引制限時のお役立ち情報


  10. 高度な認証に使用されるSSL証明書によるワークフローを改善しました。

    ユーザーが高度な認証を使用して口座に接続すると、必要なアクションの簡単な説明が表示されるようになりました。


    SSL証明書を使用した操作の改善


    証明書は、PFXファイルからインポートできます。必要なファイルを「ファイル」アプリに保存してから、開始ダイアログのインポート機能を使用します。

    また、証明書をファイルにインポートすることも可能になり、他のデバイスで証明書を使用できるようになりました。これをおこなうには、[設定]\[証明書]に移動し、証明書メニューで[エクスポート]を選択します。

  11. 価格チャートの作成を、Appleデバイスで使用される最新世代のグラフィックスAPIであるMetalに移行しました。これにより、チャート、インジケータ、およびオブジェクトのレンダリングパフォーマンスが大幅に向上します。
  12. 板情報でのストップロスとテイクプロフィットレベルの代替を修正しました。FIFO口座の場合、同じ銘柄の既存のポジションのストップレベルに従って、ストップレベルが自動的に設定されます。このプロセスは、FIFOルールに準拠するために必要です。
  13. リクオートを修正しました。リクオートが返されると、ユーザーは新しい価格を受け入れるか拒否するかを選択するための短い時間が与えられます。必要な時間内にアクションが実行されなかった場合、リクエストは自動的に拒否され、リクオートウィンドウは自動的に閉じられます。
  14. ダークインターフェイステーマを使用している場合のチャートセクションでの時間の表示を修正しました。
16 12月 2022
MetaTrader 5 build 3550:改善と修正

ターミナル

  1. ターミナル:ユーザーインターフェイスの翻訳を更新しました。
  2. クラッシュログに基づく修正。

Webターミナル

9 12月 2022
MetaTrader 5 build 3540:Webターミナルでの2FA/TOTP認証と改善された気配値表示

Webターミナル

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

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

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


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


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


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


    ジェネレーターにリンクするためのバックアップコードもQRコードダイアログに表示されます。安全な場所に保管してください。リンクされたデバイスにアクセスできなくなった場合、コードを使用すると、口座をAuthenticatorアプリに再度追加できます。

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

  2. 気配値表示に表示されるデータ量を拡大しました。現在の売/買呼値と価格変動率に加えて、以下を確認できます。

    • 現在の取引セッションの最大および最小の売/買呼値
    • 現在の取引セッションの始値と前の取引セッションの終値

    表示される情報をカスタマイズするには、コンテキストメニューを使用します。


    追加の気配値データ


  3. 証券会社側で対応する設定が有効になっている場合のリスク通知表示を追加しました。一部の規制当局は、トレーダーが取引前に通知を読んで同意することを要求しています。
  4. 画面の上部にノッチがあるiPhoneモデルのトップツールバーの表示を修正しました。以前は、パネルボタンを覆うことがありました。
  5. Google Chromeブラウザでの口座の最終財務パラメータ(利益、株式など)の表示を修正しました。時々、それらが更新されないことがありました。

ターミナル

  1. デモ口座開設ダイアログを最適化し、大幅に高速化しました。
  2. ユーザーインターフェイスの翻訳を更新しました。
  3. クラッシュログに基づく修正。

MQL5

  1. 標準ライブラリのCOpenCLクラスに新しいメソッドを追加しました:

    • BufferFromMatrix - 行列からのデータでデバイスバッファを満たす
    • BufferToMatrix - デバイスバッファから行列にデータを読み込む
    • ContextCreate - デバイスコンテキストの作成(Initializeメソッドの最初の部分)
    • ProgramCreate - OpenCLソースコードに基づくプログラムの作成(Initializeメソッドの2番目の部分)
    • ContextClean - デバイスコンテキストに属するすべてのデータを解放する(Shutdownメソッドに似ているが、コンテキストを削除しない)
    • GetDeviceInfoInteger - 整数のデバイスプロパティを受け取る
    • GetKernelInfoInteger - 整数のカーネルプロパティを受け取る
    • GetDeviceInfo - ENUM_OPENCL_PROPERTY_INTEGER列挙に存在しない単一の整数デバイスプロパティを受け取る

    GetDeviceInfoの使用例:
    longpreferred_workgroup_size_multiple=OpenCL.GetDeviceInfo(0x1067);
  2. TERMINAL_CPU_NAMEとTERMINAL_OS_VERSIONの値をENUM_TERMINAL_INFO_STRING列挙に追加しました。ユーザーのCPU名とOS名を受け取ることができます。
    voidOnStart()
      {
       文字列cpu、os;
    //---
       cpu=TerminalInfoString(TERMINAL_CPU_NAME);
       os=TerminalInfoString(TERMINAL_OS_VERSION);
       PrintFormat("CPU:%s、OS:%s",cpu,os);
      }
    
    結果
    CPU:IntelXeonE5-2630v4@2.20GHz、OS:Windows10ビルド19045
  3. DatabasePrintおよびDatabaseExport関数の「table_or_sql」パラメータの操作が修正されました。SQLクエリに加えて、テーブル名を渡すことができるようになりました。

MetaEditor

  1. データベースで表示可能な列の最大数のチェックを修正しました。最大64列まで表示できるようになりました。
  2. IF[ if(cond) break; ].のような短い構文でのブレークポイントの操作を修正しました。
25 11月 2022
MetaTrader 5 build 3520:Google Authenticatorによる2FA/TOTP認証

ターミナル

  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メソッドの動作を修正しました。大きな行列を扱う場合、特定のサイズでターミナルがクラッシュすることがありました。

クラッシュログに報告されるエラーを修正しました。
18 11月 2022
MetaTrader 5 build 3510:Webターミナルの改善

MetaTrader 5 WebTerminal

  1. モバイル版では、深度による取引履歴の並び替えとフィルタリングを実装しました。トップパネルのコマンドを使用して、履歴表示をカスタマイズすることができます。


    モバイル版でカスタマイズ可能な取引履歴画面


    操作は、日付、チケット、銘柄、ボリュームなど、主要なパラメータで並び替えることができます。

  2. 取引口座の詳細へのアクセスを改善しました。

    • デスクトップ版では、現在の口座データをクリックできるようになっています。口座をクリックすると、その詳細が表示されます。
    • モバイル版では、現在の口座は設定セクションに表示されます。口座をクリックすると、その詳細が表示されます。


    取引口座データへのアクセス改善

  3. 口座管理画面の口座種別の表示を修正しました。
  4. モバイルブラウザでWebターミナルのページを更新した後に、固定資産と自由証拠金を表示するようにしました。
  5. Firefoxモバイルブラウザのボトムバー表示を修正しました。

ターミナル

  1. レポートの固定資本とバランスグラフの計算。

MQL5

  1. typename(expr)の新しい動作。更新された関数は、修飾子や次元(配列の場合)を含む完全な型を返します。
    class A
      {
      };
    
    void OnStart(void)
      {
       const A *const arr[][2][3]={};
       Print(typename(arr));
      }
    
    結果
    "class A const * const [][2][3]"

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


11 11月 2022
MetaTrader 5 build 3500:改善と修正

ターミナル

  1. 取引と履歴セクションのコンテキストメニューに新しいコマンドが追加され、新しい取引レポートにアクセスできるようになりました。


    取引レポートは、次のパフォーマンスデータを提供します。
    • 月次の成長指標を可視化するグラフと表
    • エクイティチャート
    • 口座の状態を素早く把握できるレーダーチャート
    • 商品別の売買統計
    • 取引分析に必要なその他様々な指標

  2. 取引レポートの初回入金計算を修正しました。
  3. チャートと気配値表示でクイック取引パネルを使用する際のストップロスとテイクプロフィットレベルの設定を修正しました。レベルは、継承が不要な場合でも、以前に開いたポジションから継承できます(関連する機能はFIFOベースの口座に実装されています)。
  4. ユーザーインターフェイスの翻訳を更新しました。

MQL5

  1. フィールド名の値を持つ定数文字列を使用して構造体フィールドへのアクセスを可能にするコンパイラのバグを修正しました。
  2. TerminalInfoInteger(TERMINAL_KEYSTATE_*)関数を使用したキーの状態のチェックを修正しました。

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

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

  1. リクオート時のポジション決済を修正しました。
  2. 長時間非アクティブだったブラウザウィンドウを最大化した後のサーバーへの再接続を修正しました。
  3. クレジット資金の表示を修正しました。
  4. その他の改善と修正。
4 11月 2022
MetaTrader 5 build 3440:モバイルWebターミナルバージョンとMQL5の新しい行列メソッド

Webプラットフォームのモバイル版

新しいWebターミナルは、モバイルデバイスをフル機能でサポートします。インターフェイスは画面サイズに自動的に適応し、iOSおよびAndroidのスマートフォンおよびタブレットからの効率的な操作を可能にします。

新しいWebターミナルにモバイルデバイスのサポートが追加

また、Webターミナルには多くの修正と改良が加えられています。

新しいMetaTrader 5 Webターミナルは、取引機能の完全なセットをサポートします。ユーザーは次のことができるようになります。

  • デモ口座とライブ口座を操作する
  • 金融銘柄のクウォートを受け取る
  • 任意の市場で取引する
  • 30を超える指標と20のグラフィカルオブジェクトを使用して銘柄相場を分析する
  • ファンダメンタル分析に経済カレンダーのデータを使用する


ターミナル

  1. タスクマネージャー機能を拡張しました。新しいバージョンでは、消費されたリソースをより正確に監視できます。

    • スレッドのスタックサイズの表示を追加
    • コンテキストスイッチの数の表示を追加
    • システムおよびサードパーティのDLLスレッドの認識を追加
    • カーネルモードの動作時間の表示を追加。ユーザーモードで費やされた時間と比較してこのメトリックが増加した場合、システムレベルの問題(ドライバーの問題、ハードウェアエラー、または遅いハードウェア)が存在する可能性があります。詳細については、Microsoftドキュメントをお読みください。
    • ユーザーモード動作時間の表示を追加

    利用可能なデバイスを制御するOpenCLマネージャ


  2. 利用可能なデバイスを管理するためのターミナル設定の新しいOpenCLタブ。新しいOpenCLマネージャーを使用すると、計算に使用するデバイスを明示的に指定できます。

    利用可能なデバイスを制御するOpenCLマネージャ

  3. FIFOモードで動作しているアカウントの板情報にストップロスとテイクプロフィットレベルの表示を追加しました(このモードは証券会社側で有効にすることができます)。

    FIFOルールによると、各商品のポジションは、開かれた順序でのみ決済できます。ストップレベルによるポジション決済を確実にFIFOに準拠させるために、次のロジックがクライアントターミナル側に実装されています。

    同じ商品に複数のポジションが存在する場合、いずれかのポジションにストップレベルを配置すると、他のすべてのポジションにも同じレベルが配置されます。したがって、レベルがトリガーされると、すべてのポジションがFIFO準拠の順序で決済されます。

    ユーザーが既にポジションを持っている商品の板情報を開くと、既存のポジションのレベル(存在する場合)がストップロスおよびテイクプロフィットフィールドで自動的に指定されるようになりました。

  4. ツールボックス\取引ウィンドウのXボタンを使用したストップロスとテイクプロフィットレベルの削除を修正しました。クイックトレード機能を無効にした際にエラーが発生していました。ボタンをクリックすると、関連するレベルの値が空の取引ダイアログが開きます。

  5. 取引レポートのグラフキャプションと最終手数料計算を修正しました。このセクションでは、レポート統計に誤った利益が表示され、株式および残高グラフのツールチップに誤った値が表示されることがありました。

MQL5

  1. ベクトルと行列のCopyTicksメソッドとCopyTicksRangeメソッドが追加されました。これにより、ティックデータ配列をベクトルおよび行列に簡単にコピーできます。
    bool matrix::CopyTicks(string symbol,uint flags,ulong from_msc,uint count);
    bool vector::CopyTicks(string symbol,uint flags,ulong from_msc,uint count);
    
    bool matrix::CopyTicksRange(string symbol,uint flags,ulong from_msc,ulong to_msc);
    bool matrix::CopyTicksRange(string symbol,uint flags,ulong from_msc,ulong to_msc);
    コピーされたデータ型は、ENUM_COPY_TICKS列挙を使用して「flags」パラメーターで指定されます。以下の値が使用可能です。
    COPY_TICKS_INFO    = 1,       // ticks resulting from Bid and/or Ask changes
    COPY_TICKS_TRADE   = 2,       // ticks resulting from Last and Volume changes
    COPY_TICKS_ALL     = 3,       // all ticks having changes
    COPY_TICKS_TIME_MS = 1<<8,    // time in milliseconds
    COPY_TICKS_BID     = 1<<9,    // Bid price
    COPY_TICKS_ASK     = 1<<10,   // Ask price
    COPY_TICKS_LAST    = 1<<11,   // Last price
    COPY_TICKS_VOLUME  = 1<<12,   // volume
    COPY_TICKS_FLAGS   = 1<<13,   // tick flags
    複数のデータ型が選択されている場合(行列でのみ使用可能)、行列内の行の順序は、列挙内の値の順序に対応します。

  2. matrix::Assignおよびvector::Assignメソッドの機能を拡張しました。

    行列に1次元の配列またはベクトルを割り当てることができるようになりました。
    bool matrix::Assign(const vector &vec);
    結果は1行の行列になります。

    また、行列をベクトルに割り当てることができるようになりました(行列の平滑化が実行されます)。
    bool vector::Assign(const matrix &mat);
  3. ベクトルと行列のSwapメソッドが追加されました。
    bool vector::Swap(vector &vec);
    bool vector::Swap(matrix &vec);
    bool vector::Swap(double &arr[]);
    bool matrix::Swap(vector &vec);
    bool matrix::Swap(matrix &vec);
    bool matrix::Swap(double &arr[]);
    各配列、ベクトル、または行列は、そのオブジェクトの要素を含むメモリバッファを参照します。Swapメソッドは、要素をメモリに書き込むことなく、これらのバッファへのポインタを実際に交換します。したがって、行列は行列のままであり、ベクトルはベクトルのままになります。行列とベクトルを交換すると、ベクトル要素を持つ1行の行列と、フラット表現の行列要素を持つベクトルになります(Flatメソッドを参照してください)。
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //---
      matrix a= {{1, 2, 3}, {4, 5, 6}};
      Print("a before Swap: \n", a);
      matrix b= {{5, 10, 15, 20}, {25, 30, 35, 40}, {45, 50, 55, 60}};
      Print("b before Swap: \n", b);  
    //--- swap matrix pointers
      a.Swap(b);
      Print("a after Swap: \n", a);
      Print("b after Swap: \n", b);
      /*
      a before Swap:
      [[1,2,3]
      [4,5,6]]
      b before Swap:
      [[5,10,15,20]
      [25,30,35,40]
      [45,50,55,60]]
      
      a after Swap:
      [[5,10,15,20]
      [25,30,35,40]
      [45,50,55,60]]
      b after Swap:
      [[1,2,3]
      [4,5,6]]
      */
      vector v=vector::Full(10, 7);
      Print("v before Swap: \n", v);
      Print("b before Swap: \n", b);
      v.Swap(b);
      Print("v after Swap: \n", v);
      Print("b after Swap: \n", b);
      /*
      v before Swap:
      [7,7,7,7,7,7,7,7,7,7]
      b before Swap:
      [[1,2,3]
      [4,5,6]]
      
      v after Swap:
      [1,2,3,4,5,6]
      b after Swap:
      [[7,7,7,7,7,7,7,7,7,7]]
      */
     }
    Swap()メソッドは、動的配列を使用した操作も可能にします(固定サイズの配列をパラメーターとして渡すことはできません)。配列は任意の次元にすることができますが、サイズは合意されています。つまり、行列またはベクトルの合計サイズは、配列のゼロ次元の倍数でなければなりません。配列のゼロ次元は、最初のインデックスに含まれる要素の数です。たとえば、動的な3次元配列「doublearray[][2][3]」の場合、ゼロ次元は2番目と3番目の次元のサイズの積です(2x3=6)。そのため、このような配列は、合計サイズが6の倍数である行列とベクトルを使用するSwapメソッドでのみ使用できます(6、12、18、24など)。

    次の例を考えてください。
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //--- fill the 1x10 matrix with the value 7.0
      matrix m= matrix::Full(1, 10, 7.0);
      Print("matrix before Swap:\n", m);
    //--- try to swap the matrix and the array
      double array_small[2][5]= {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};
      Print("array_small before Swap:");
      ArrayPrint(array_small);
      if(m.Swap(array_small))
       {
        Print("array_small after Swap:");
        ArrayPrint(array_small);
        Print("matrix after Swap: \n", m);
       }
      else // the matrix size is not a multiple of the first array dimension
       {
        Print("m.Swap(array_small) failed. Error ", GetLastError());
       }
      /*
      matrix before Swap:
      [[7,7,7,7,7,7,7,7,7,7]]
      array_small before Swap:
               [,0]     [,1]     [,2]     [,3]     [,4]
      [0,]  1.00000  2.00000  3.00000  4.00000  5.00000
      [1,]  6.00000  7.00000  8.00000  9.00000 10.00000
      m.Swap(array_small) failed. Error 4006
      */
    //--- use a larger matrix and retry the swap operation
      double array_static[3][10]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
         {2, 4, 6, 8, 10, 12, 14, 16, 18, 20},
         {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
       };
      Print("array_static before Swap:");
      ArrayPrint(array_static);
      if(m.Swap(array_static))
       {
        Print("array_static after Swap:");
        ArrayPrint(array_static);
        Print("matrix after Swap: \n", m);
       }
      else // a static array cannot be used to swap with a matrix
       {
        Print("m.Swap(array_static) failed. Error ", GetLastError());
       }
      /*
      array_static before Swap:
             [,0]     [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     [,8]     [,9]
      [0,]  1.00000  2.00000  3.00000  4.00000  5.00000  6.00000  7.00000  8.00000  9.00000 10.00000
      [1,]  2.00000  4.00000  6.00000  8.00000 10.00000 12.00000 14.00000 16.00000 18.00000 20.00000
      [2,]  3.00000  6.00000  9.00000 12.00000 15.00000 18.00000 21.00000 24.00000 27.00000 30.00000
      m.Swap(array_static) failed. Error 4006
      */
    //--- another attempt to swap an array and a matrix
      double array_dynamic[][10];    // dynamic array
      ArrayResize(array_dynamic, 3); // set the first dimension size
      ArrayCopy(array_dynamic, array_static);
    //--- now use a dynamic array for swap
      if(m.Swap(array_dynamic))
       {
        Print("array_dynamic after Swap:");
        ArrayPrint(array_dynamic);
        Print("matrix after Swap: \n", m);
       }
      else //  no error
       {
        Print("m.Swap(array_dynamic) failed. Error ", GetLastError());
       }
      /*
      array_dynamic after Swap:
            [,0]    [,1]    [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]    [,9]
      [0,] 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000
      matrix after Swap:
      [[1,2,3,4,5,6,7,8,9,10,2,4,6,8,10,12,14,16,18,20,3,6,9,12,15,18,21,24,27,30]]
      */
     }
  4. ベクトルと行列のLossGradientメソッドを追加しました。このメソッドは、予測値の損失関数の偏導関数のベクトルまたは行列を計算します。線形代数では、このようなベクトルは勾配と呼ばれ、機械学習で使用されます。
    vector vector::LossGradient(const vector &expected,ENUM_LOSS_FUNCTION loss) const;
    matrix matrix::LossGradient(const matrix &expected,ENUM_LOSS_FUNCTION loss) const;
  5. SQLiteでのFOREIGNKEYSの使用を有効にして、SQLクエリでテーブル間の関係を強制します。  例:
    CREATE TABLE artist(
      artistid    INTEGER PRIMARY KEY, 
      artistname  TEXT
    );
    
    CREATE TABLE track(
      trackid     INTEGER, 
      trackname   TEXT, 
      trackartist INTEGER,
      FOREIGN KEY(trackartist) REFERENCES artist(artistid)
    );

  6. メソッドとオブジェクトの一貫性に応じて適切なクラスメソッドの選択を修正しました。

MetaEditor

  1. MQL5Storageへのコミットのコメントの許容長を増加しました。 変更をリポジトリにコミットするときの詳細なコメントは、大規模なプロジェクトで作業する場合に適していると考えられていますが、以前はコメントの長さが128文字に制限されていました。許可される長さは、最大260文字になりました。

MetaTester

  1. ビジュアルモードでのテスト速度スイッチの感度が向上しました。

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

17 9月 2022
MetaTrader 5 build 3440:新しい取引口座レポート

ターミナル

  1. 口座取引パフォーマンスレポートを追加しました。統計の有無やデータの表示方法などは、すでにおなじみの「シグナル」レポートに近いものです。プラットフォームでは、以下のパフォーマンスデータが利用可能になります。
    • 月次の成長指標を可視化するグラフと表
    • エクイティチャート
    • 口座の状態を素早く把握できるレーダーチャート
    • 商品別の売買統計
    • 取引分析に必要なその他様々な指標

    レポートは、ファイルに書き出すことなく、プラットフォーム上で直接閲覧することができます。開くには、[表示]メニューの[レポート]を選択します。




  2. 数量または銘柄タイプが一致しないコールおよびプット契約に対するオプションボードの入力を修正しました。
  3. Close by操作時の[取引]ダイアログのポジション選択を修正しました。チケット以外のカラムで並び替えられた逆順リストでエラーが発生していました。
  4. プラットフォームログを高速化しました。
  5. カスタム銘柄チャートのコメント表示を修正しました。

MQL5

  1. CArrayList::LastIndexOf関数の動作を修正しました。以前は、最後に見つかった要素のインデックスではなく、常に-1を返していました。
  2. 行列とベクトルのAssignメソッドを新しく追加しました。行列/ベクトルの要素を,渡された行列/ベクトルまたは配列のデータで置き換えます。
    bool vector<TDst>::Assign(const vector<TSrc> &assign);
    bool matrix<TDst>::Assign(const matrix<TSrc> &assign);
    
    例:
      //--- copying matrices
      matrix b={};
      matrix a=b;
      a.Assign(b);
      
      //--- copying an array to a matrix
      double arr[5][5]={{1,2},{3,4},{5,6}};
      Print("array arr");
      ArrayPrint(arr);
      b.Assign(arr);
      Print("matrix b \n",b);
    /*
    array arr
            [,0]    [,1]    [,2]    [,3]    [,4]
    [0,] 1.00000 2.00000 0.00000 0.00000 0.00000
    [1,] 3.00000 4.00000 0.00000 0.00000 0.00000
    [2,] 5.00000 6.00000 0.00000 0.00000 0.00000
    [3,] 0.00000 0.00000 0.00000 0.00000 0.00000
    [4,] 0.00000 0.00000 0.00000 0.00000 0.00000
    matrix b 
    [[1,2,0,0,0]
     [3,4,0,0,0]
     [5,6,0,0,0]
     [0,0,0,0,0]
     [0,0,0,0,0]]
    
    */
  3. 行列およびベクトルのCopyRatesメソッドを新しく追加しました。価格データの配列をベクトルや行列にコピーします。
    bool matrix::CopyRates(string symbol,ENUM_TIMEFRAMES period,ulong rates_mask,ulong from,ulong count);
    bool vector::CopyRates(string symbol,ENUM_TIMEFRAMES period,ulong rates_mask,ulong from,ulong count);
    コピーされたデータ型は、ENUM_COPY_RATES列挙を使用してrates_maskパラメータで指定されます。以下の値が使用可能です。
    COPY_RATES_OPEN
    COPY_RATES_HIGH
    COPY_RATES_LOW
    COPY_RATES_CLOSE
    COPY_RATES_TIME
    COPY_RATES_VOLUME_TICK
    COPY_RATES_VOLUME_REAL
    COPY_RATES_SPREAD
    COPY_RATES_OHLC
    COPY_RATES_OHLCT
    最後の2つの値では、複数のバーパラメータ(Open、High、Low、Close、Time)を同時に選択することができます。

    複数のデータ型を選択した場合(行列のみ有効)、行列の行の順序は列挙された値の順序に対応します。

  4. Text Labelオブジェクトの表示を修正しました。OBJPROP_XOFFSETとOBJPROP_YOFFSETプロパティを使用すると、誤った画像断片がチャートに表示されることがありました。

  5. オブジェクトポインタの参照として関数に渡された定数パラメータを変更する際のエラーを修正しました。

    const指定子は、プログラム実行中に変数が変更されないように定数として宣言するものです。宣言時に一度だけ変数の初期化をおこなうことができます。次は、OnCalculate関数におけるconst変数の例です。

    int OnCalculate (const int rates_total,      // price[] array size
                     const int prev_calculated,  // bars processed on previous call
                     const int begin,            // meaningful data starts at
                     const double& price[]       // array for calculation
       );
    

    以下の例には、参照パラメータに対する暗黙のポインタキャストを許可するコンパイラエラーが含まれています。

    class A {};
    const A *a = new A;
    
    void foo( const A*& b )
      {
       b = a;
      }
    
    void OnStart()
      {
            A *b; 
            foo(b);  // not allowed
            Print( a,":",b );
      }
    コンパイラはこのような不正な操作を検出し、関連するエラーを返します。

MetaEditor

  1. デバッガでの複素数参照の表示を修正しました。
  2. MQL5 Cloud Protectorを改良しました。従来は、特定の条件下でファイル保護に失敗することがありました。
  3. クラッシュログに報告されるエラーを修正しました。


新しい MetaTrader 5 Webターミナル

インターフェイスの更新とコアの再設計を特徴とする、新しいMetaTrader 5 Webターミナルをリリースしました。新しいインターフェイスは、iPadのターミナルバージョンに似ています。



また、次のように多くの新機能も備えています。

  • 詳細な登録フォームとドキュメント送信オプションを使用してリアル口座をリクエストする機能
  • 価格データ サブスクリプションのサポートと遅れたクォートの受信機能
  • 便利な管理オプションを備えたより多くの分析オブジェクト
  • チャートに表示される市場のエントリーとエグジット
  • チャートに表示される経済指標カレンダーのイベント
  • 毎日の価格変動データに加えて、[気配値表示]ツールの便利な設定
  • 初心者がターミナルを使い始めるのを支援する簡素化されたインターフェイス(チャートのコンテキストメニューとトップメニューが削除されました。すべてのチャートコントロールコマンド、オブジェクト、インジケーターは左側と上部のパネルで利用できますが、その他のコマンドはハンバーガー メニューからアクセスできます)
  • インターフェイスのダークモード
www.mql5.comの新しいWebターミナルを今すぐお試してください。まもなく証券会社が利用できるようになります
4 8月 2022
MetaTrader 5 build 3390:OpenCLと数学関数におけるFloat、機械学習における活性化関数と損失関数

ターミナル

  1. 取引口座への初回接続時に自動的にチュートリアルを開く機能を追加しました。これは、初心者が取引の基本を学び、プラットフォームの機能を探求するのに役立ちます。チュートリアルはいくつかのセクションに分かれており、それぞれのセクションが特定のトピックに関する簡単な情報を提供しています。トレーニングの進捗は青色の線で表示されます。

    取引口座への初回接続時に自動的にチュートリアルを開く機能を追加しました。


  2. 利益で決済」/「損失で決済」一括操作を修正しました。以前は、反対のポジションが存在する場合はそれが使用されていました。たとえば、EURUSDの買いポジションが2つあり、EURUSDの売りポジションが1つある場合、3つのポジションすべてが「損失で決済」一括操作中に決済されます。売買は「Close by」操作によって決済され、残りの買いは通常の操作によって決済されます。コマンドが適切に動作して、選択したポジション(利益または損害) のみを決済するようになりました。

  3. 負の履歴価格の表示を修正しました。このような価格は、すべての時間枠で正しく表示されるようになります。
  4. ターミナルによるシステムリソースの消費を最適化し、大幅に削減しました。
  5. 取引商品のファンダメンタルデータベースを更新しました。取引所商品で利用可能なデータアグリゲーターが15件に拡大されました。ユーザーは、最も人気のある経済アグリゲーターを介して、さらに多くのティッカー情報にアクセスすることができるようになります。

    取引商品のファンダメンタルデータベースを更新しました。

    世界の取引所市場には、約7,000の証券と2,000以上のETFが上場しています。さらに、取引所では、先物などのデリバティブが提供されています。MetaTrader 5プラットフォームでは、為替商品の巨大なデータベースにアクセスできます。ファンダメンタルデータにアクセスするには、[気配値表示]から直接ワンクリックで選択したアグリゲーターのWebサイトに切り替えることができます。各金融商品の情報ソースを選択することができ、利便性に優れています。

  6. 新しい注文ウィンドウのストップロスとテイクプロフィットの表示を修正しました。FIFO口座の場合、同じ銘柄の既存のポジションのストップレベルに従って、ストップレベルが自動的に設定されます。この手順は、FIFOルールに準拠するために必要です。

MQL5

  1. 数学関数で行列とベクトルを扱えるようになりました。

    当社は、MetaTrader 5プラットフォームのアルゴリズム取引と機械学習のための機能拡張を続けています。以前は、新しいデータ型として、行列とベクトルを追加し、データ処理に配列を使用する必要性をなくしました。これらのデータ型を使った操作のために、MQL5には70以上のメソッドが追加されています。これらの新しいメソッドにより、線形代数と統計学の計算を1回の操作でおこなうことができるようになりました。乗算、変換、連立方程式を簡単に実装でき、過剰なコード行数を必要としません。最新のアップデートには数学機能が含まれています。

    数学関数はもともと、スカラー値に対して関連する演算をおこなうために設計されたものです。このビルド以降、ほとんどの関数が行列やベクトルに適用できるようになります。これには、MathAbs、MathArccos、MathArcsin、MathArctan、MathCeil、MathCos、MathExp、MathFloor、MathLog、MathLog10、MathMod、MathPow、MathRound、MathSin、MathSqrt、MathTan、MathExpm1、MathLog1p、MathArccosh、 MathArcsinh、MathArctanh、MathCosh、MathSinh、MathTanhなどが含まれています。このような操作は、行列やベクトルを要素ごとに扱うことを意味します。例:
    //---
      matrix a= {{1, 4}, {9, 16}};
      Print("matrix a=\n",a);
    
      a=MathSqrt(a);
      Print("MatrSqrt(a)=\n",a);
      /*
       matrix a=
       [[1,4]
        [9,16]]
       MatrSqrt(a)=
       [[1,2]
        [3,4]]
      */
    MathModおよびMathPowの場合、2番目の要素には、適切なサイズのスカラーまたは行列/ベクトルを指定することができます。

    次は、ベクトルに数学関数を適用して標準偏差を計算する例です。
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //--- Use the initializing function to populate the vector
      vector r(10, ArrayRandom); // Array of random numbers from 0 to 1
    //--- Calculate the average value
      double avr=r.Mean();       // Array mean value
      vector d=r-avr;            // Calculate an array of deviations from the mean
      Print("avr(r)=", avr);
      Print("r=", r);
      Print("d=", d);
      vector s2=MathPow(d, 2);   // Array of squared deviations
      double sum=s2.Sum();       // Sum of squared deviations
    //--- Calculate standard deviation in two ways
      double std=MathSqrt(sum/r.Size());
      Print(" std(r)=", std);
      Print("r.Std()=", r.Std());    
     }
    /*
      avr(r)=0.5300302133243813
      r=[0.8346201971495713,0.8031556138798182,0.6696676534318063,0.05386516922513505,0.5491195410016175,0.8224433118686484,...
      d=[0.30458998382519,0.2731254005554369,0.1396374401074251,-0.4761650440992462,0.01908932767723626,0.2924130985442671, ...
       std(r)=0.2838269732183663
      r.Std()=0.2838269732183663
    */ 
    //+------------------------------------------------------------------+
    //| Fills the vector with random values                              |
    //+------------------------------------------------------------------+
    void ArrayRandom(vector& v)
     {
      for(ulong i=0; i<v.Size(); i++)
        v[i]=double(MathRand())/32767.;
     }
    

  2. テンプレート関数において、対応する matrix, matrixf, vector, vectorf 型の代わりに、対応するmatrix<double>, matrix<float>, vector<double>, vector<float>という表記をサポートするようにしました。
  3. float型を用いた演算のための数学関数を改善しました。Float型の行列とベクトルに数学関数を適用できるようになったことで、float型のスカラーに適用する数学関数が改善されました。以前は、これらの関数パラメータは無条件にdouble型にキャストされ、その後、対応する数学関数の実装が呼び出されてその結果がfloat型にキャストバックされていました。余分な型キャストをすることなく、演算が実装されるようになりました。

    次の例では、数学的な正弦の計算の違いを示しています。

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //---  Array of random numbers from 0 to 1
      vector d(10, ArrayRandom);
      for(ulong i=0; i<d.Size(); i++)
       {
        double delta=MathSin(d[i])-MathSin((float)d[i]);
        Print(i,". delta=",delta);
       }
     }
    /*
       0. delta=5.198186103783087e-09
       1. delta=8.927621308885136e-09
       2. delta=2.131878673594656e-09
       3. delta=1.0228555918923021e-09
       4. delta=2.0585739779477308e-09
       5. delta=-4.199390279957527e-09
       6. delta=-1.3221741035351897e-08
       7. delta=-1.742922250969059e-09
       8. delta=-8.770715820283215e-10
       9. delta=-1.2543186267421902e-08
    */
    //+------------------------------------------------------------------+
    //| Fills the vector with random values                              |
    //+------------------------------------------------------------------+
    void ArrayRandom(vector& v)
     {
      for(ulong i=0; i<v.Size(); i++)
        v[i]=double(MathRand())/32767.;
     }

  4. 行列とベクトルに対する活性化関数と導関数を追加しました。
    AF_ELU               ELU(指数線形ユニット)
    AF_EXP               指数
    AF_GELU              ガウシアンエラー線形ユニット
    AF_HARD_SIGMOID      ハードシグモイド
    AF_LINEAR            線形
    AF_LRELU             Leaky REctified線形ユニット
    AF_RELU              正規化線形ユニット
    AF_SELU              SELU (Scaled Exponentia線形ユニット)
    AF_SIGMOID           シグモイド
    AF_SOFTMAX           ソフトマックス
    AF_SOFTPLUS          ソフトプラス
    AF_SOFTSIGN          ソフトサイン
    AF_SWISH             スウィッシュ
    AF_TANH              ハイパーボリックタンジェント
    AF_TRELU             しきい値化されたREctified線形ユニット
    ニューラルネットワークの活性化関数は、重み付けされた入力信号の和が、ネットワークレベルでどのようにノード出力信号に変換されるかを決定します。活性化関数の選択は、ニューラルネットワークの性能に大きな影響を与えます。モデルの異なる部分には、異なる活性化関数を使用できます。MQL5では、既知のすべての関数に加え、導関数が用意されています。導関数により、学習時に受けた誤差を基にした調整値を高速に算出することができます。

  5. 行列とベクトルに対する損失関数を追加しました。以下のパラメータがあります。
    LOSS_MSE            平均二乗誤差
    LOSS_MAE            平均絶対誤差
    LOSS_CCE            カテゴリー別 交差エントロピー
    LOSS_BCE            バイナリ交差エントロピー
    LOSS_MAPE           MAPE (平均絶対誤差率)
    LOSS_MSLE           平均二乗対数誤差
    LOSS_KLD            カルバック・ライブラー ダイバージェンス
    LOSS_COSINE         コサイン類似度/近接度
    LOSS_POISSON        ポワッソン
    LOSS_HINGE          ヒンジ
    LOSS_SQ_HINGE       2乗 ヒンジ
    LOSS_CAT_HINGE      カテゴリカル・ヒンジ
    LOSS_LOG_COSH       ハイパーボリックコサインの 対数
    LOSS_HUBER          フーバー

    損失関数は、モデルが実際の値をどの程度予測できるかを評価するものです。モデル構築は、各段階での関数値の最小化を目標とします。アプローチは、特定のデータセットに依存します。また、損失関数は重みとオフセットに依存することができます。損失関数はニューラルネットワークの一般的な評価をおこなうため、ベクトルではなく一次元です。

  6. 行列およびベクトル用のmatrix::CompareByDigitsおよび vector::CompareByDigitsメソッドを追加しました。2つの行列/ベクトルの要素を有効数字まで比較します。

  7. 文字列のMathMinおよびMathMax関数のサポートが追加されました。これらの関数は辞書式比較を使用します。文字はアルファベット順に比較され、大文字と小文字が区別されます。

  8. OpenCLオブジェクトの最大数を256から6,5536に増加しました。OpenCLオブジェクトハンドルは、MQL5プログラム内でCLContextCreateCLBufferCreateCLProgramCreate関数を使用して作成します。従来の256ハンドルという制限は、機械学習の手法を効率的に利用するためには不十分でした。

  9. doubleをサポートしていないグラフィックカードでOpenCLを使用できるようにしました。従来、MQL5のプログラムではdoubleをサポートするGPUのみが使用可能でしたが、多くのタスクではfloatを使用した計算が可能です。Float型は、スペースを取らないため、当初は並列計算のためのネイティブと考えられていました。よって、旧来の要件が解除されました。

    特定のタスクにdoubleをサポートするGPUを強制的に使用するよう設定するには、CLContextCreateの呼び出しにCL_USE_GPU_DOUBLE_ONLYを使用します。
       int cl_ctx;
    //--- Initializing the OpenCL context
       if((cl_ctx=CLContextCreate(CL_USE_GPU_DOUBLE_ONLY))==INVALID_HANDLE)
         {
          Print("OpenCL not found");
          return;
         }

  10. CustomBookAdd関数の動作を修正しました。以前は、MqlBookInfo::volume_realフィールドに 0 以外の値があると、この関数で気配値表示のスナップショットを作成することができませんでした。以下のようにチェックがおこなわれるようになりました。
    送信されたデータについて次が検証されます。各要素で、タイプ、価格、数量データが指定されていること。MqlBookInfo.volumeとMqlBookInfo.volume_realが0または負でないこと。両方のボリュームが負の場合、エラーとみなされます。ボリュームの種類はどちらか一方、または両方を指定することができます。システムは指定されている方または正である方を使用します。

       volume=-1 && volume_real=2:volume_real=2を使用

       volume=3 && volume_real=0:volume=3を使用

    高精度ボリュームMqlBookInfo.volume_realはMqlBookInfo.volumeより優先度が高くなります。したがって、両方の値が指定され、かつ有効である場合は、volume_real が使用されます。

    気配値表示要素のいずれかが誤って記述されている場合、転送された状態は完全に破棄されます。

  11. CalendarValueLast関数の動作を修正しました。通貨フィルタを使用する際、経済指標カレンダーの変更後に連続して関数を呼び出すと(呼び出し後に「change」パラメータに新しい値を設定)、エラーにより一部のeventsがスキップされる可能性がありました。
    CalendarValueLast(change, result, "", "EUR")
  12. ArrayBSearch関数の動作を修正しました。同一の要素が複数見つかった場合は、ランダムなものではなく、最初の結果へのリンクが返されるようになります。
  13. クラス内のテンプレート関数の可視性チェックを修正しました。エラーのため、private/protectedとして宣言されたクラステンプレート関数がpublicに見えることがありました。

MetaEditor

  1. MetaAssistのエラーとあいまいな動作を修正しました。
  2. ターミナルのインストール先ディレクトリのパスを示す%terminal%マクロのサポートを追加しました(例:%terminal%MQL5EExperts)。 

    ターミナルのインストール先ディレクトリのパスを示す%terminal%マクロのサポートを追加しました(例:%terminal%MQL5EExperts)

  3. デバッガでの配列の表示を改善しました。
  4. デバッガから値をコピーするためのバッファを増量しました。
  5. エラーヒントを改善しました。
  6. プロジェクトファイル(*.mproj)に相対パスの表示を追加しました。従来は絶対パスを使用していたため、プロジェクトを移動した場合、コンパイルエラーが発生していました。
  7. BMPをグローバルに利用可能な32ビットビットビットマップ配列として、プロジェクトに自動的に埋め込む機能を追加しました。これにより、グラフィカルリソースを読み込むために、コード内部でを呼び出す必要がなくなります。
    'levels.bmp' as 'uint levels[18990]'
    
  8. 拡張BMPファイル形式の読み込みを改善しました。
  9. UI翻訳を更新しました。
  10. クラッシュログに報告されるエラーを修正しました。
2 6月 2022
MetaTrader 5 build 3320: 改善と修正

ターミナル

  1. チャートに表示されるトレードオブジェクトの拡張ツールチップ:
    • 市場のエグジット取引で利益を表示するようになりました。
    • TakeProfitまたはStopLossのアクティブ化の結果として実行された取引に関連する表示が表示されます。

    同様のツールチップは、初めの取引とエグジットの取引を結合するラインで利用できます。

    取引オブジェクトの拡張ツールチップ


  2. グラフィカルシステムのパフォーマンスが向上しました。
  3. 未決済の注文やポジションを含む一括操作のログを記録するようになりました。このようなコマンドが実行されると、操作ログに「bulk closing of XXX positions started」などのログが追加されます。
  4. 反対側のポジションの一括決済を修正しました。
  5. 取引履歴を表示するチャート上オブジェクトの更新を修正しました。チャート銘柄を変更する際にエラーが発生していました。

MQL5

  1. 行列関数とベクトル関数の作業が進行中で、「float」および「complex」のサポートが実装されています。
  2. 演算子「!」(LNOT)はポインタに対して暗黙的にCheckPointerを呼び出してその有効性をチェックします。演算子「==」は、素早くNULLチェックをおこなうために使用されるべきです(例:ptr==NULLまたはptr!=NULL)。

MetaTester

  1. テストグラフでの取引オブジェクトの表示を修正しました。
  2. グラフィカルシステムのパフォーマンスが向上しました。

MetaEditor

  • UI翻訳を更新しました

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

前へ123456789101112131415