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

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

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翻訳を更新しました

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

20 5月 2022
MetaTrader 5 build 3300: MetaEditorでの高速コンパイルと改善されたコードナビゲーション

ターミナル

  1. Rectangleグラフィカルオブジェクトの四隅のいずれかをドラッグしてサイズを変更する機能が追加されました。


  2. より高速なGUIレンダリング。
  3. IPv6アドレスのサポートが改善されました。
  4. プラットフォームの初回起動時に、低い日付フィールドの高さの計算と右側の価格フィールドの幅の計算を修正しました。

MQL5

  1. 行列とベクトルを操作するためのRegressionMetric関数が追加されました。回帰評価の指標を設定します。
     double vector.RegressionError(const enum lr_error);
     double matrix.RegressionError(const enum lr_error);
     vector matrix.RegressionError(const enum lr_error,const int axis);
    次の変数を指標として使用できます。
    enum REGRESSION_ERROR
      {
       REGRESSION_MAE,     // Mean absolute error
       REGRESSION_MSE,     // Mean square error
       REGRESSION_RMSE,    // Root mean square error
       REGRESSION_R2,      // R squared
       REGRESSION_MAPE,    // Mean absolute percentage error
       REGRESSION_MSPE,    // Mean square percentage error
       REGRESSION_RMSLE    // Root mean square logarithmic error
      };
  2. INT_MAX(構造体の配列)より大きいデータサイズの配列を書き込む機能が追加されました。

MetaEditor

  1. タブバーの改善:
    • 1つのウィンドウだけが開いていても、パネルは非表示になりません。タブのコンテキストメニューコマンドは常にユーザーに表示されます。
    • 「X」閉じるボタンが各タブに追加されました。さらに、タブはマウスの中ボタンまたはコンテキストメニューを使用して閉じることができます。


  2. プログラムをすばやくコンパイルするためのコマンドを追加しました。このモードでは、コードの最適化がスキップされ、EX5実行可能ファイルの作成が大幅に高速化されます。記述されたコードをすばやくチェックする必要があるアクティブな開発段階で、このモードを使用します。プログラムの最終コンパイル中に、パフォーマンスを向上させるために最大最適化モードをオンにします。


    プロジェクト設定の「最大最適化」パラメータは同じ機能を実行します。

    すべてのコンパイル関係操作は、[ビルド]メニューから利用できます。

  3. コード管理の改善:
    • 定義と宣言にジャンプするための個別のコマンドが実装されています。以前は、メニューには選択サブメニューを開くコマンドが1つありました。新しいコマンドを使用すると、必要なコード部分にすばやく切り替えることができます。
    • 「Enter」に加えて、認識されたキーワードの「Tab」キーによる置換が追加されました。




  4. デバッガーのウォッチリストにローカル変数を自動的に表示する機能が追加されました。表示は、[ローカル]コンテキストメニューコマンドで有効にできます。デバッガー操作がコードを進めると、現在のスコープの変数が自動的にリストに表示されます。



  5. ベクトルと行列のデバッガーウォッチリストの改善。
  6. プロジェクトファイルのパスを修正しました。エラーが発生すると、プロジェクトからファイルが消える可能性がありました。

テスター

  1. プラットフォームのシャットダウン時のテスターエージェントの停止が改善されました。
  2. テスター: 5番目のMQL5クラウドネットワークノードが追加されました。香港にあります。新しいノードは、最も近い地域のネットワークを介してロボットの最適化を高速化します。

クラッシュログで報告されたエラーを修正しました。
29 4月 2022
MetaTrader 5プラットフォームアップデートビルド3280: トレーダーのフィードバックに基づく改善と修正

ターミナル

  1. 未決注文とポジションのコンテキストメニューでの標準のトレーリングストップレベルの入力を修正しました。



  2. ターミナル: インターフェイスの翻訳を更新しました。
クラッシュログで報告されたエラーを修正しました。
21 4月 2022
MetaTrader 5 build 3270: 改善と修正

ターミナル

  1. 内蔵チャットの改善
    • デザインを更新しました。表示とスペースの使用率を最適化するために、バブルを囲むことなくメッセージが表示されるようになりました。アバターと日付区切り文字を追加しました。
    • コピーおよび削除コマンドがメッセージメニューに追加されました。
    • バグ修正と安定性の改善。



  2. 一括ポジション決済コマンドを修正しました。ヘッジポジション会計システムのアカウントでエラーが発生しました。
  3.  ポジション履歴生成時の取引タイプの表示が修正されました。

クラッシュログで報告されたエラーを修正しました。
15 4月 2022
MetaTrader 5 build 3260: 一括操作、新しいマトリックスおよびベクトル関数とチャットの機能強化

ターミナル:

  1. ポジション決済および未決注文キャンセルの一括操作のためのコマンドを追加しました。

    [取引]タブのコンテキストメニューに、新しい[一括操作]コマンドが追加されました。使用可能なコマンドのリストは、選択した操作と口座の種類に応じて自動的に作成されます。



    メニューでは、次のコマンドを常に使用できます。
    • すべてのポジションを決済: ヘッジ口座では、システムは反対のポジションでポジションを決済(Close By)しようとし、その後、通常の手順に従って残りのポジションを決済します。
    • すべての利益のあるポジションまたはすべての損失のあるポジションを閉じる
    • すべての未決注文を削除する
    • 特定のタイプの保留中の注文を削除する(リミット、ストップ、ストップリミット)

    ポジションを選択すると、メニューに追加のコマンドが表示されます。
    • 銘柄のすべてのポジションを決済する
    • 同じ方向のすべてのポジションを決済する(ヘッジ口座)
    • 同じ銘柄の反対のポジションを決済する(ヘッジ口座)
    • ポジションの逆転(ネッティング口座)

    未決注文を選択すると、メニューに追加のコマンドが表示されます。
    • 同じ銘柄のすべての未決注文を削除する
    • 同じ銘柄の同じ種類のすべての未決注文を削除する

    これらのコマンドは、プラットフォーム設定([ツール]>[オプション]>[取引])でワンクリック取引が有効になっている場合にのみ使用できます。
  2. 内部チャート機能を拡張しました。
    • メッセージに返信する機能が追加されました。ソースメッセージのテキストは返信で引用されます。
    • テキスト付きの画像や添付ファイル付きのテキストなど、さまざまなコンテンツタイプのメッセージを作成する機能が追加されました。
    • 既読メッセージと未読メッセージの間の区切り文字の表示を修正しました。
    • エラー修正と安定性の向上。



  3. ターミナルのグラフィックシステム操作の最適化および高速化。インターフェイスレンダリングに必要なリソースが少なくなります。
  4. 先物の毎日の価格変動の計算を修正しました。証券会社が清算価格を提供する場合、この価格が計算に使用されます。
    ((Last - Clearing Price)/Clearing Price)*100
    すべての計算タイプの詳細な説明は、ドキュメントにあります。

  5. MQL5サービス購入中に発生するエラーを修正しました。

    • 支払いシステムは、特定の条件下で正常な操作に対してエラーを返す可能性があります。
    • 市場の中間製品レンタルステップで誤った価格が表示される可能性があります。

  6. 購入/ダウンロードしたマーケット製品ページのスタートボタンの操作を修正しました。ボタンは、最初に開いたチャートでアプリケーションを正しく起動します。
  7. ポジション履歴生成時の取引タイプの表示が修正されました。

MQL5

  1. 行列とベクトルを操作するための新しい関数を追加しました。
    • Median — 行列またはベクトル要素の中央値を返します
    • Quantile — 行列/ベクトル要素または指定された軸に沿った要素のq番目の分位数を返します
    • Percentile — 行列/ベクトル要素または指定された軸に沿った要素のq番目のパーセンタイルを返します
    • Std — 行列またはベクトル要素の標準偏差を計算します
    • Var — 行列またはベクトル要素の分散を計算します
    • CorrCoef — 行列/ベクトルの相関係数を計算します
    • Correlate — 2つのベクトルの相互相関を計算します
    • Convolve — 2つのベクトルの離散的な線形畳み込みを返します
    • Cov — 共分散行列を計算します

  2. 数値配列の組み込みメソッドの追加を開始しました。新しいメソッドは、使いやすさを向上させ、コードをよりコンパクトにし、他の言語とのコードの互換性を向上させます。

    次の3つのメソッドがすでに利用可能です。
    • ArgSort — 指定された次元で配列を並び替えます。 最後のものがデフォルトで使用されます(axis=-1)。
    • Range — 指定された配列次元の要素の数を返します。ArrayRangeのアナログ。
    • Size — 配列要素の数を返します。ArraySizeのアナログ。

    例:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
            {10, 36,  2, 12,  5},
            {33, 37, 25, 13,  4},
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- Sort the array
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // Result log:
    // indexes
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. 文字列の組み込みメソッドの追加を開始しました。

    次のメソッドが現在利用可能です。
    • BufferSize — 文字列に割り当てられたバッファサイズを返します。
    • Compare — 2つの文字列を比較し、比較結果を整数として返します。
    • Length — 文字列の文字数を返します。
    • Find — 文字列で部分文字列を検索します。
    • Upper — 文字列を大文字にします。
    • Lower — 文字列を少文字にします。
    • Replace — 部分文字列を置き換えます。
    • Reserve — 文字列用のバッファを予約します。

    すべてのメソッドは文字列関数のアナログです。

    例:
    void OnStart()
      {
       string test="some string";
       PrintFormat("String length is %d",test.Length());
      }
    
    // Result log:
    // String length is 11
  4. 特定の銘柄の相場配信の遅延のENUM_SYMBOL_INFO_INTEGER列挙にSYMBOL_SUBSCRIPTION_DELAY値を追加しました。

    サブスクリプションベースの取引銘柄にのみ使用されます。遅延は通常、試用モードで提供されるデータに適用されます。

    プロパティは、気配値表示で選択された銘柄に対してのみリクエストできます。それ以外の場合は、ERR_MARKET_NOT_SELECTED (4302)エラーが返されます。

  5. ACCOUNT_HEDGE_ALLOWEDプロパティをENUM_ACCOUNT_INFO_INTEGER列挙に追加しました。反対のポジションと指値注文を開くことができるようになります。このプロパティは、規制要件に準拠するために口座をヘッジするためにのみ使用されます。口座は同じ銘柄に対して反対のポジションを持つことはできませんが、同じ方向のポジションは許可されます。

    このオプションが無効になっている場合、口座は同じ金融商品の反対方向のポジションと注文を持つことはできません。たとえば、口座に買いポジションがある場合、売りポジションを開いたり売り指値注文を出すことはできません。そのような操作を実行しようとすると、TRADE_RETCODE_HEDGE_PROHIBITEDエラーが返されます。

  6. ENUM_SYMBOL_INFO_DOUBLE列挙での新しいプロパティ:
    • SYMBOL_SWAP_SUNDAY
    • SYMBOL_SWAP_MONDAY
    • SYMBOL_SWAP_TUESDAY
    • SYMBOL_SWAP_WEDNESDAY
    • SYMBOL_SWAP_THURSDAY
    • SYMBOL_SWAP_FRIDAY
    • SYMBOL_SWAP_SATURDAY

    値を使用して、特定の曜日のスワップ計算レートを取得します。1 - シングルスワップ、3 - トリプルスワップ、0 - スワップなし

  7. CopyTicks関数とCopyTicksRange関数の動作を修正しました。エラーが発生すると、深夜を通過するときに古いデータが返される可能性があります。金融商品にティックが提供されていない場合にエラーが発生しました。
  8. クラッシュログで報告されたエラーを修正しました。
11 2月 2022
MetaTrader 5 build 3210: シャープレシオ計算アルゴリズムの改訂、新しい行列メソッド、指標の最小/最大値の制御

MQL5

  1.  ベクトルと行列の最小、最大、ArgMinArgMaxおよびSum関数を追加しました。これらの関数を使用して、最小値と最大値、関連するインデックス、および合計を見つけます。
  2.  マトリックスのFlatメソッドのサポートが追加されました。これらの方法を使用すると、行列要素を2つではなく1つのインデックスでアドレス指定できます。
    double matrix::Flat(ulong index) const;      // getter
    void matrix::Flat(ulong index,double value); // setter

    行列要素のアドレスを計算するための擬似コード:

    ulong row=index / mat.Cols();
    ulong col=index % mat.Cols();
    
    mat[row,col]

    たとえば「matrix mat(3,3)」の場合、要素へのアクセスは次のように記述できます。

      読み取り値: x=mat.Flat(4) (x=mat[1][1]と同等)
    書き込み: mat.Flat(5, 42) (mat[1][2]=42と同等)

    無効な行列インデックスを使用して関数を呼び出すと、OutOfRange critical execution errorがスローされます。

  3.  MQL5プログラム入力パラメータの浮動小数点数の形式を改善しました。いくつかの実数を読み取る場合、多くのゼロを持つ数値が入力パラメータに代入されました。たとえば、0.4は0.400000000002として表されました。
  4.  Math\Stat\Math.mqh数学ライブラリのエラーを修正しました。このライブラリのMathSample関数は、バックトラッキングを使用してサンプリングする場合の同様の数学ライブラリの従来の動作と一致するように改訂されました。
  5.  CopyTicks/CopyTicksRangeで、金融商品にティックが提供されていない場合に深夜を越えるときに古いデータが返される可能性があるエラーを修正しました。
  6.  新しいINDICATOR_FIXED_MINIMUMおよびINDICATOR_FIXED_MAXIMUM値をENUM_CUSTOMIND_PROPERTY_INTEGER列挙に追加しました。
    これらのプロパティを使用すると、IndicatorSetInteger関数を使用して指標の最小および最大値を固定または固定解除できます。IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true)を呼び出す場合、現在の最小値または最大値が使用されます。




テスター

  1.  シャープレシオの計算アルゴリズムを、値が1年間隔に対応する従来の式に一致するように改訂しました。以前のアルゴリズムは、取得したPnLの変動性に基づいており、ポジションに対するエクイティ変動を無視していました。計算にはエクイティの動きが含まれ、シャープレシオは古典的な方法で解釈されるようになりました。
    • シャープレシオ< 0 ストラテジーは不採算であり、適切ではありません(悪い)
    • 0 < シャープレシオ < 1.0 リスクは報われません。このようなストラテジーは、代替手段がない場合に検討できます(不定)
    • シャープレシオ ≥ 1.0 シャープレシオが1より大きい場合。リスクが報われ、ポートフォリオ/ストラテジーが結果を示すことができる可能性があります(良い)
    • シャープレシオ ≥ 3.0 高い値は、特定の各取引で損失を得る可能性が非常に低いことを示します(とても良い)

ターミナル

  1.  ターミナルによるメモリ消費を最適化しました。
  2.  ネットワークサブシステムによるプラットフォーム操作の改善により、パフォーマンスが向上し、ネットワーク遅延が減少しています。
  3.  グリッドレンダリングが無効になっている場合のインジケーターのゼログリッドレベルの表示を削除しました。


28 1月 2022
MetaTrader 5 build 3180: MQL5のベクトルと行列および使いやすさの向上

ターミナル

  1. [気配値表示]の銘柄または取引操作を口座履歴からチャートウィンドウに移動すると、チャートウィンドウがアクティブになるようにしました。
    これらのアクションは両方とも、チャートの金融商品が選択したものに変更します。以前は、チャートウィンドウはアクティブになりませんでした。したがって、取引ダイアログの呼び出し(F9)やホットキー(+/-)を使用したスケールの変更など、いくつかの追加のアクションが誤って別のチャートに適用される可能性がありました。ドラッグによって銘柄が変更されたチャートが、すぐにさらに作業するために選択されるようになります。

  2. 口座履歴で取引操作をダブルクリックすると、新しい注文ウィンドウが開かれるようになりました。ユーザーがクリックした操作の金融商品がすぐにダイアログに挿入され、より迅速な取引が可能になります。同様のコマンドがコンテキストメニューに追加されました。




  3. 新しいチャートを開くときに、実際のボリュームまたはティックボリュームをスマートに含めるようになりました。このデータは、市場を分析するときに重要です。ただし、すべてのトレーダーがそのプラットフォームでの可用性を認識しているわけではありません。
    実際の取引量の優先度が高くなります。証券会社によって提供されている場合、それらの表示はチャート上で有効になります。それ以外の場合、ティックボリュームの表示は有効になります。

    このメカニズムは、チャートがdefault.tplテンプレートで開かれている場合にのみ使用されます。ユーザーがチャート設定でボリュームを手動で無効にした場合、チャートを再度開くときにボリュームが有効になりません。カスタムテンプレートは影響を受けません。

  4. ユーザーインターフェイスの表示を最適化して大幅に高速化しました。
  5. [ファイル]メニューから呼び出されるチャート印刷機能を改善しました。
    • 印刷設定の保存を修正
    • 印刷されたページの外観を改善(グリッド線の象コア、プログラム名の削除、ヘッダーフォントの更新)。
    • 正しいインターフェイス表示のために印刷ダイアログを拡大

  6. チャートの高速取引パネルのボリュームフィールド操作を修正しました。修正前は、新しい値を入力してTabキーを押すと、値が前の値にリセットされていました。
  7. チャート上の取引履歴の表示を修正しました。以前は、口座を切り替えるときに、以前の口座の操作がチャートから削除されませんでした。
  8. PayPal経由でのMQL5.comの支払いを修正しました。
  9. オプションボラティリティチャートを表示する際のプラットフォームのフリーズを修正しました。
  10. 実口座登録ウィンドウでの電話番号の確認を修正しました。場合によっては、プラットフォームは、ユーザーが次の登録段階に進むことを許可しませんでした
  11. MQL5.comメンバーとのグループチャットに参加する際の権限の確認を修正しました。<分節5414¶> 以前は、新しく参加したユーザーは、メッセージを書き込むことができずにメッセージを読み取ることしかできませんでした。
  12. データがない場合のチャートテキストを変更しました。これで、「更新を待機中」が銘柄名、時間枠および銘柄に置き換えられました。
  13. ビルド2450で追加された負の価格のサポートが改善されました。適切な[気配値表示]銘柄のゼロ値も表示できるようになりました。
  14. Wineで作業しているときのマーケットでの製品ロゴの表示を修正しました。

MQL5

  1. 引き続きベクトルと行列のサポートを追加しています。新しい関数は、ニューラルネットワークベースのソリューション開発者の可能性を大幅に拡大します。

    現在、複数の関数を使用する準備ができています。
    • Eye — 指定された対角線上に1があり他の場所に0がある行列を作成します
    • Identity — 主対角線上に1があり他の場所に0がある、指定されたサイズの行列を作成します
    • Ones — 1で満たされた指定されたサイズの行列を作成します
    • Zeroes — 0で満たされた指定されたサイズの行列を作成します
    • Full — 指定された値で満たされた指定されたサイズの行列を作成します
    • Copy — 行列またはベクトルのコピーを作成します
    • Diag — 行列から対角線を抽出し、指定された対角線にベクトルの値を入力します
    • Tri — 指定された対角線以下に1があり他の場所に0がある行列を作成します
    • Row — 行列の行をベクトルとして返し、指定された行にベクトルの値を入力します
    • Col — 行列の列をベクトルとして返し、指定された列にベクトルの値を入力します
    • Rows — 行列の行数を返します
    • Cols — 行列の列数を返します
    • Transpose — 行列を転置します
    • * — 行列、ベクトル、スカラーの積 — 内積
    • Power — 行列を累乗します
    • Kron — クロネッカー積
    • Cholesky — コレスキー分解
    • QR — 行列のQR分解
    • SVD — 特異分解
    • LU — 行列のLU分解
    • LUP — 行列のLUP分解
    • Norm — 行列ノルムを計算します
    • Cond — 行列の条件数を計算します
    • Spectrum — 行列のスペクトルを計算します
    • Det — 行列式を計算します
    • Rank — 行列の階数を計算します
    • SLogDet — 行列式の行列式の符号と底の対数を計算します
    • Trace — 行列の跡を計算します
    • Solve — 連立一次方程式を解きます
    • LstSq — 最小二乗法を使用して連立一次方程式を解きます
    • Inv — 行列の逆行列を計算します
    • PInv — ムーアペンローズ法によって行列の疑似逆行列を計算します
    • Compare — イプシロンを使用して2つの行列を比較します

    詳細については、関連するMQL5ドキュメントをお読みください。

  2. パスの長さの制限に関連するファイルとデータベースを処理する際のエラーを修正しました。特に、DatabaseOpen関数を使用すると、許容可能なパスよりも大きいパスを設定できるため、データベースが正しく作成されていませんでした。関数がERR_TOO_LONG_FILE_NAMEエラーコードを正しく返すようになりました。
  3. 可変不変性制御を修正しました。以前は、コンパイラが「定数変数を参照として渡すことができない」エラーをスキップすることがありました。
  4. 初期化されていない変数の使用に関する誤ったコンパイラ警告を修正しました。
  5. 指標でのChartWindowOnDropped関数の動作を修正しました。以前は、常にゼロを返していました。
  6. Python統合モジュールにPython3.10のサポートを追加しました。

VPS

  1. ナビゲータでのVPSアイテムの表示を修正しました。以前は、口座を切り替えるときに時々非表示になることがありました。

MetaEditor

  1. デバッグ監視ウィンドウでの複雑な式のアンラップを修正しました。

テスター

  1. テストレポートのファイルへのエクスポートを修正しました。小数点以下0桁の精度の通貨が預金通貨として使用された場合、一部の値が誤って丸められる可能性がありました(例: JPY)。
22 10月 2021
MetaTrader 5 platform build 3091: 改善

ターミナル

  1. MQL5サービスを購入するときに空のページが開く問題を修正しました。操作結果がすぐにユーザーに表示されるようになりました。
  2.  リアル口座をリクエストするときにユーザーがアップロードした書類の画像が過度に圧縮されるのを修正しました。自動KYCチェックの品質が向上し、口座開設手続き全体が容易になりました。
  3. テスト完了時に開くグラフの動作を修正しました。

MQL5

  1. SQLite 3.36.0のサポートを追加しました。

MetaEditor

  1. 角かっこを一致させるための背景の強調表示を追加しました。このオプションはMetaEditorの一般設定で有効にできます。
  2. MQL5プログラムのデバッガ―を改善しました。

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