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

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

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プログラムのデバッガ―を改善しました。

クラッシュログで報告されたエラーを修正しました。
21 10月 2021
MetaTrader 5 build 3090: 改善と修正

ターミナル

  1. 特定の条件下でカスタム取引銘柄が消える可能性があるエラーを修正しました。
  2. メニューとツールバーのアイコンを改善しました。
  3. MQL5.comに3つの新しい言語(フランス語、イタリア語、トルコ語)が追加されました。
    これで、最大級アルゴリズムトレーダー向けコミュニティMQL5.communityは11の言語で利用できるようになりました。Webサイトのインターフェイス、ドキュメント、および重要なフォーラムトピックはすでにローカライズされています。新しい言語の記事と経済指標カレンダーもまもなく利用可能になります。

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

MQL5

  1. StringConcatenate関数のバグを修正しました。
  2. FileSave関数使用時の_LastErrorの設定値を修正しました。特定の条件下では、変数に関数エラーの説明の代わりにnull値が含まれる可能性がありました。
  3. double型配列へのリソースからのデータのインポートをを修正しました。

MetaTester

  1. ビジュアルテスト中にチャートウィンドウがフリーズするエラーを修正しました。
ドキュメントを更新しました。
14 10月 2021
MetaTrader 5 build 3081: MQL5サービスの改善とデザインの更新

Terminal

  1. MQL5.communityサービスのナビゲーションが改善されました。

    マーケットシグナルVPSセクションがメインプラットフォームワークスペースから[ナビゲータ]に移動されました。この新しい配置により、目的の製品に簡単にアクセスして、購入とサブスクリプションを効率的に管理できるようになります。基本的な使用法情報を提供するために、「仕組み」セクションが各サービスに追加されました。


    MQL5.communityサービスのナビゲーションの改善


  2. すべてのメニューとツールバーのアイコンが完全に再デザインされました。ターミナルインターフェイスがよりユーザーフレンドリーになりました。

    • アイコンから小さな要素を削除
    • 使用する色の数を減らしてカラーノイズを避ける
    • 使用される勾配は少なくして読みやすさを向上
    • より単純な比喩の使用


    すべてのメニュー、ツールバー、ダイアログがプラットフォームの再設計


  3. 取引の実行に起因するコストの表示を追加しました。関連情報は取引履歴に表示されます。この機能は、NFA規制証券会社によって使用されます。


    口座履歴に取引コストが表示される>


    証券会社がサーバーでコスト計算を有効にすると、口座の取引履歴に新しい[コスト]列が表示されます。この列には、銘柄の現在の中間価格に対する取引実行コスト(中間スプレッドコスト)が表示されます。

  4. MQL5.comの韓国語版を立ち上げました

    これは、アルゴリズムトレーダーの最大のコミュニティであるMQL5.communityで利用できる8番目の言語です。Webサイトのインターフェイス、記事、経済指標カレンダー、重要なフォーラムのトピックはすでに韓国語で利用できます。MQL5ドキュメントはまもなく翻訳されます。

  5. カスタム取引商品の読み込みを修正しました。新しく作成された銘柄設定が既存の銘柄設定を上書きすることがありました。
  6. シグナル取引履歴のチャート上表示を修正しました。以前は、関連するオプションによって以前表示できたのは、チャート銘柄だけでなくすべての金融商品の取引でした。
  7. 取引履歴レポートに料金列のエクスポートを追加しました。以前は、値は履歴にのみ表示されており、ファイルには保存できませんでした。
  8. 気配値表示およびチャートでのワンクリック取引パネルでの操作を最適化および高速化しました。
  9. カスタム取引商品の証拠金比率フィールドの操作を修正しました。特定の条件下で値がゼロにリセットされることがありました。
  10. トレーダーが証券会社から追加の取引サービスを購入できるサブスクリプションサービスの実装を継続します。相場サブスクリプションウィンドウのエラーを修正しました。
  11. Trend Line分析オブジェクトの表示を修正しました。以前は、拡大縮小またはチャートウィンドウのサイズ変更時に線が消えることがありました。
  12. Rectangle分析オブジェクトの表示を修正しました。アンカーポイントの1つがチャートの表示領域を超えていると、オブジェクトが消えることがありました。
  13. 組み込みのMQL5.communityチャートの操作に関連する修正と操作速度の改善を行いました。
  14. ポジションのリストのValueパラメータの丸めを修正しました。以前のバージョンでは小数点以下が非表示になることがありました。
  15. 口座登録プロセス中の携帯電話検証を修正しました。一部の中国携帯電話会社の電話番号が正しくないと識別されることがありました。
  16. 32文字を超えるMQL5アカウントパスワードのサポートが追加されました。
  17. Wineで作業する際の証明書の書き出しを修正しました。このオプションは、拡張認証を使用するアカウントをデスクトップからモバイルに移行するときに使用されます。
  18. ツールボックスウィンドウの下部パネルでMQL5サービスを開くボタンを修正しました。このボタンは、ウィンドウのドッキングが解除されたときに非アクティブでした。
  19. [ファイル\新規チャート]メニューのサイズに制限を追加しました。メニューには銘柄グループを持つ最大128個のサブメニューを含めることができ、各サブメニューには最大32銘柄を含めることができます。この制限により、ターミナルの操作が高速化され、気配値表示に多数の取引銘柄(2,000以上)を追加する際のフリーズが回避されます。

MQL5

  1. 引き続きベクトルと行列のサポートを追加しています。新機能は、ニューラルネットワークベースのソリューション開発者の可能性を大幅に拡大します。
  2. ENUM_DEAL_PROPERTY_DOUBLE列挙にDEAL_SL値とDEAL_TP値(取引の逆指値と指値)を追加しました。

    エントリ取引とリバース取引に関連する値は、これらの取引のトリガーとなった注文の逆指値/指値に従って設定されます。ポジション決済時の適切なポジションの逆指値/指値は、エグジット取引に使用されます。

  3. ENUM_MQL_INFO_INTEGER列挙にMQL_HANDLES_USED値(MQLプログラム内のアクティブなクラスオブジェクト(ハンドル)の数)を追加しました。これらには、動的(Newで作成)オブジェクトと非動的オブジェクトの両方、グローバル/ローカル変数、またはクラスメンバーが含まれます。プログラムが使用するハンドルが多いほど、プログラムが消費するリソースも多くなります。

  4. 経済指標カレンダーイベントを説明するMqlCalendarValue構造体を操作するための新しいメソッドを追加しました。

    • HasActualValue(void) — 実際の値が設定されている場合はtrueを返し、それ以外の場合はfalseを返す
    • HasForecastValue(void) — 予想値が設定されている場合はtrueを返し、それ以外の場合はfalseを返す
    • HasPreviousValue(void) — 前の値が設定されている場合はtrueを返し、それ以外の場合はfalseを返す
    • HasRevisedValue(void) — 変更値が設定されている場合はtrueを返し、それ以外の場合はfalseを返す
    • GetActualValue(void) — イベントの実際の値(double)を返す。適切な値が設定されていない場合はnanを返す
    • GetForecastValue(void) — イベントの予想値(double)を返す。適切な値が設定されていない場合はnanを返す
    • GetPreviousValue(void) — イベントの前の値(double)を返す。適切な値が設定されていない場合はnanを返す
    • GetRevisedValue(void) — イベントの変更値(double)を返す。適切な値が設定されていない場合はnanを返す

  5. EX5ファイルの形式でライブラリを使用するMQL5プログラムのデバッグを修正しました。
  6. シーケンスによって初期化された大きな配列を含むプログラムのコンパイルを高速化しました。
  7. カスタム取引銘柄データを使用したCopyTicksRange関数の実行を修正しました。この関数は、要求された期間外からデータを返すことがありました。
  8. パラメータによる特殊化中のすべてのテンプレートパラメータの可用性の検証を修正しました。デバッグテンプレートを使用してコードをコンパイルすると、特定の条件下で「コード生成エラー」が発生する可能性があります。

Signals

  1. シグナル購読を自動更新する機能を追加しました。

    以前に購読の初回購入に使用した支払い方法を使用して購読がさらに1ヶ月間自動更新されるため、購読が突然終了することはありません。


    購読の自動更新を有効化する


    以前の支払いにカードが使用されており、更新の支払いが失敗した場合、MQL5アカウントの残高からの支払いが試行されます。
    購読料の変更についても心配無用です。価格が上がると、自動更新はキャンセルされ、関連する通知がメールで届きます。

    自動更新オプションは、MQL5.comのマイ購読セクションからいつでも有効または無効にできます。


    MQL5.comのマイ購読セクションから自動更新を管理する


  2. シグナルショーケースの表示を修正しました。シグナルと現在のアカウントとの互換性が正しく識別されるようになりました。

Market

  1. マーケットショーケースに作者名とログインによる製品検索を追加しました。以前は、製品名と説明による検索のみがサポートされていました。

VPS

  1. サブスクリプションの自動更新オプションを改善しました。

    以前は、更新に対する支払いはMQL5アカウントの残高からのみ行うことができたため、ユーザによる残高確認が必要でした。

    MQL5アカウントにチャージする必要がなくなりました。初回に使用したのと同じ支払い方法を使用してサブスクリプションが更新されます。VPSの支払いにカードを使用して自動更新オプションを有効にした場合、新しいサブスクリプション期間に同じ支払い方法が使用されます。支払いが失敗した場合、、MQL5アカウントの残高からの支払いが試行されます。


    自動更新にはカードやその他の支払い方法を使用する


    この新しいオプションを使用すると、VPS期間が終了してエキスパートアドバイザーとシグナルサブスクリプションが停止することはありません。さらに、手動で残高を確認してチャージする必要はありません。
    このオプションは、新規サブスクリプションにのみ使用されます。既存のサブスクリプションの更新に対する支払いは、MQL5アカウントの残高から行われます。

Tester

  1. テスター: 可視化テストのエラーを修正しました。特定の条件下では、チャートにエキスパートアドバイザーで使用されるインジケータが表示されないことがありました。

MetaEditor

  1. Alt + Gを使用した関数または変数宣言へのジャンプを修正しました。宣言がコールラインより下にある場合、アクションが失敗することがありました。
  2. デバッガー内のクラスオブジェクトへの参照用のオブジェクトタイプの表示を追加しました。
  3. 監視されている式のリストに共用体を表示する機能が追加されました。

MetaTrader 5 iPhone/iPad版、MetaTrader 5 Android版

  1. アプリケーションの開始時に免責事項の表示を追加しました。よくお読みください。さらに、アプリケーションの初回起動時にお使いの証券会社がデモ口座を自動的に作成する場合、関連する既約が表示されます。


    MetaTrader 5 iPhone/iPad版に追加された免責事項

  2. モバイルアプリケーションから直接シグナルサービスの監視にアカウントを接続する機能が追加されました。これは、メニューから[アカウント監視]を選択することで実行できます。便宜上、アカウント番号とブローカー名が登録ウィンドウに自動的に追加されます。さらに、シグナル名と投資家パスワードを指定する必要があります。

    アカウントを監視に接続すると、詳細な取引統計にアクセスしたり、結果を他のトレーダーと共有したり、シグナルの販売を開始したりできます。

  3. Android OSで実行されているモバイルターミナル向けのHuawei AppGalleryおよびHMSサービスのサポートが追加されました。Huaweiスマートフォンの所有者は、関連するストアからアプリをインストールし、プッシュ通知を使用できます。

ドキュメントを更新しました。

18 6月 2021
MetaTrader 5 build 2980: 取引操作のプッシュ通知

ターミナル

  1. サーバからプッシュ通知を受信する機能が追加されました。ターミナルが閉じている場合でも、実行された取引操作が通知されます。



    以前のバージョンでは、モバイルデバイスでの通知は、トレーダーのデスクトップターミナルからのみ配信できました。取引操作の実行時に、ターミナルは設定で指定されたMetaQuotes IDに関連する通知を送信し、通知は実行中のターミナルからのみ送信できました。この要件が解除され、コンピュータの電源がオフのときにサーバでTPがトリガーされると、サーバからポジション決済に関する通知が届きます。

    サーバからの通知の受信を開始するには、次のことを行う必要があります。
    • サーバ通知はデモ口座では機能しないため、リアル口座を用意する
    • スマートフォンにiOS版またはAndroid版のMetaTrader 5をインストールする
    • モバイルターミナルで[メッセージ]セクションを開き、MetaQuotes IDを見つけて、デスクトップターミナルの設定で指定する
    • デスクトップターミナルの設定でサーバ通知を有効にする

    サーバ通知は証券会社によって有効にされる必要があります

    注文、取引、残高操作の3つの通知タイプがサポートされています。このオプションを有効にすると、使用可能な通知タイプがターミナルログに表示されます。
    '1222': subscribed to deals, orders, balance notifications from trade server

  2.  MetaTrader VPSショーケースをアップデートしました。VPSセクションがより便利になりました。
    • インターフェイスは任意の画面幅に適応する
    • ショーケースが垂直方向に占めるスペースが減り、ワークスペースに収まる
    • 必要な情報は必要な場合にのみ表示される支払いの詳細は、支払いプランを選択した後にのみ表示される



    ターミナル: ストラテジーテスターパネルで、MQL5サービスとツールボックスウィンドウにすばやく切り替えるためのコマンドを追加しました。コマンドは[概要]セクションにのみ表示され、他のタブではパネルを使用してテストを管理します。



  3. MQL5サービスのウィンドウ状態が保存されるようになりました。マーケットを開いたままでターミナルを閉じると、次にターミナルを起動したときに関連するウィンドウが開きます。
  4. MQL5アカウントの状態の定期的な同期を修正しました。エラーが原因で、特定の条件下でシグナルがコピーできない場合がありました。
  5. 推奨されるマーケット製品の選択の表示を修正しました。
  6. ナビゲータのシグナルコンテキストメニューを修正しました。メニューを使用して、購読しているシグナルを表示したり、シグナルを購読解除したりできます。

MQL5

  1. : 標準ライブラリ(MQL5\Include\Math\Alglib\complex.mqhファイル)の複素数の実装における「-」演算子エラーを修正しました。
  2. MQL5: 定数式だけでなく、初期化シーケンスで任意の式を使用できるようになりました。使いやすさとC++コードとの互換性が向上します。
    struct POINT
      {
       int x,y;
      };
    
    int GetYFunc(y)
      {
       return(y * y);
      }
    
    void SomeFunction(int x1,int x2,int y)
      {
       POINT pt={ x1+x2, GetYFunc(y) };
       ProcessPoint(pt);
      };
  3. 巨大なデータ配列を使用したunionのコンパイル中に発生したエラーを修正しました。
  4. StringToCharArray関数の動作を修正しました。最初の終了ヌル文字で停止するのではなく、渡された文字列全体をChar配列に変換するようになりました。
  5. 親クラスにデフォルトのコンストラクタがない場合に、クラス/構造体のコンストラクタ呼び出しが明示的に存在するための制御が追加されました。

MetaEditor

  1. プロファイラーレポートにインライン関数の呼び出し場所を表示するようになりました。
    以下の例では、func();呼び出しが次のように強調表示されます。




    func関数自体は、その完全なコードがOnStartに配置されているため、強調表示されていません。

  2. 空のプロジェクトを作成するようになりました。これは、デフォルトのテンプレートが適していない特定のファイル構造を持つ非標準の開発プロジェクトに役立つ機能です。




    この場合、空の設定ファイル「mqproj」が作成されます。ソースコードファイルは手動で作成する必要があります。

  3. MetaEditorのより高速な起動を実装しました。
  4. デバッグ中に観測された式のリストに表示されるデータを修正しました。特定の条件下では、リストに誤った変数値が表示される可能性があります。
  5. MQLウィザードを使用して作成されたPythonスクリプトファイルへの「.py」拡張子の自動追加を修正しました。

ドキュメントを更新しました。
21 5月 2021
MetaTrader 5 Build 2940: ワークスペースでのMQL5サービスショーケースの配置とデザインの更新

ターミナル

  1.  マーケットシグナル仮想ホスティングなどの取引サービスがプラットフォームのメイン作業エリアに表示されて便利になりました。
    以前のバージョンでは、MQL5サービスの購入エリアはメインウィンドウの下の小さなツールボックスウィンドウにありました。配置が新しくなり、便利な購入オプションを備えたフル機能のショーケースが表示されるようになりました。下部のエリアから不要なタブが削除され、他のプラットフォーム機能のためのスペースが増えています。



    追加のサービスにアクセスしても、取引やチャート分析などの主要な機能には干渉しません。
    • サービスタブはバーの端にあって、これはすべてのチャートタブの後です。
    • 使っていないサービスウィンドウは閉じることができます。再度開くには、ナビゲータ、ツールバー、または[サービス]メニューを使用します。


    また、サービスを完全に再設計しました。デザインはよりエレガントで軽量になりました。シグナルには、以前はMQL5.community Webサイトのショーケースからしか入手できなかった追加データが含まれています。これは、主な特性、信頼性、アクティビティ指標、およびその他の変数を含む極座標図です。



  2. ターミナル:IPv6アドレスのサポートを追加しました。
    すべてのネットワークで使用されているIPv4は、30年以上前に作成されたもので、32ビットのIPアドレスが含まれており、ドットで区切られた4つの8ビット番号として表されます。このアルゴリズムでは、40億を超える一意のIPアドレスを生成します。ただし、ユーザとデバイスの数が急速に増加しているため、利用可能なアドレスのプールの枯渇が加速しています。

    枯渇の問題を回避するために、一部の製品は最新のIPv6標準の追加サポートを備えています。このプロトコルは、x:x:x:x:x:x:x:xとして表される128ビットアドレスを使用します。ここで、各xは6つの16ビットアドレス要素の16進値です。理論的には、この形式では5 x 10 ^ 28の一意のアドレスが許可されます。広範なアドレス空間に加えて、このプロトコルには、古いバージョンに比べて他の利点があります。詳細については、専門記事を参照してください。

    MetaTrader5プラットフォームは完全にIPv6に対応しています。ブローカーまたはプロバイダーが新しいプロトコルに切り替えると、プロトコルサポートがプラットフォームでシームレスに有効になり、ユーザが追加のアクションを実行する必要がなくなります。

  3. ビルド2815で提供されているタスクマネージャ機能の実装を継続します。MQLプログラムのデバッグまたはプロファイリングが実行されているチャートの明示的な表示を追加しました。




  4. macOSおよびLinuxコンピュータのWineでより高速なプラットフォーム起動を実装しました。一般的な最適化とバグ修正:
    • メニュー、ツールバー、ダイアログボックスの表示が改善されました。
    • [Market]、[Signals]、[VPS]各セクションの表示エラーを修正しました。特に、「Market」ショーケースでの製品ロゴの読み込みを修正しました。
    • macOSコンピュータにMetaTrader5を簡単にインストールできるようにパッケージを更新しました。このパッケージを使用すると、プラットフォームを他のアプリケーションと同様にインストールできます。
      パッケージには、より安定した高速な操作を可能にする追加のコンポーネントが含まれています。https://download.mql5.com/cdn/web/metaquotes.ltd/mt5/MetaTrader5.pkg.zipから最新バージョンをダウンロードしてMetaTrader 5を再インストールすることをすべてのパッケージユーザに強くお勧めします。
    CrossOverを使用している場合は、MetaTrader 5を完全に再インストールして、最新の64ビットバージョンを取得してください。
  5. 「Ctrl + F9」キーボードショートカットアクションを修正しました。ツールボックスの[取引]タブがアクティブになります。

ターミナル

  1.  32ビットコンポーネントを含む古いテクノロジーの流通を制限し続けています。
    • 32ビットターミナルでは[マーケット]からプログラムをロードできなくなりました。
    • 32ビットターミナルではホスティングサービスに接続できません。
    • 32ビットのMetaEditorバージョンでは、MQL5 CloudProtectorによる追加のファイル保護に対応していません。
    • 古いMetaEditorバージョン(5年以上前にリリースされた)でコンパイルされたMQL5プログラムは、新しいターミナルバージョンでは実行できません。

    32ビットプラットフォームバージョンのサポートは1年前、ビルド2361のリリース後に廃止されました。プラットフォームのすべての機能に制限なくアクセスするには、64ビットのMetaTrader5バージョンにアップグレードすることを強くお勧めします。
    さらに、以前に32ビット製品バージョンをマーケットにアップロードしたすべての販売者は、最新の64ビットMetaEditorを使用してそれらを再コンパイルし、新しいバージョンをアップロードすることをお勧めします。ターミナルで32ビットMQL5プログラムを実行する機能は、まもなく完全に無効になります。

MQL5

  1.  複素数操作のサポートを追加しました。
    新しい組み込み型「complex」を追加しました。
    struct complex
      {
       double             real;   // 実数部分
       double             imag;   // 虚数部分
      };
    「complex」型は、MQL5関数のパラメータとして値で渡すことができます(通常の構造体が参照によってのみ渡されるのとは対照的です)。DLLからインポートされた関数の場合、「complex」型は参照によってのみ渡されます。

    「i」接尾辞はcomplex定数を説明するために使用されます。
    complex square(complex c)
      {
       return(c*c);
      }
      
    void OnStart()
      {
       Print(square(1+2i));  // 定数がパラメータとして渡される
      }
    
    // 複素数の文字列表現である「(-3,4)」が出力される
    現在、複素数には単純な演算(=, +, -, *, /, +=, -=, *=, /=, ==,!=)のみが使用できます。

    追加の数学関数のサポートは後で追加され、絶対値、正弦、余弦などの計算が可能になります。

  2.  新しいエラーコードTRADE_RETCODE_HEDGE_PROHIBITED—ヘッジポジションが禁止されているため、ポジションを開くまたは指値注文を出すことは許可されていません。口座のヘッジが無効になっていて、同じ銘柄に対して反対の注文またはポジションがすでに存在する場合に、ユーザが取引操作を実行しようとすると、エラーが返されます。

MetaEditor

  1.  非ビジュアルモードでのデバッグとプロファイリングの終了を修正しました。
  2. 実際のデータでのインディケータプロファイリングを修正しました。このようなプロファイリングは、特定の条件下では開始できない可能性があります。

VPS

  1.  環境の移行をVPSに修正しました。リソースとしてインディケータを含むエキスパートアドバイザーでエラーが発生する可能性があります。

シグナル

  1.  コピーされたシグナルの取引モードチェックを修正しました。銘柄取引は証券会社側で制限できます。つまり、証券会社は「買いのみ」、「売りのみ」、または「決済のみ」の条件を設定できます。以前のバージョンでは、同期には完全な取引条件が必要であったため、他のすべての場合にコピーは許可されませんでした。更新後、部分的に制限された条件は「取引」と見なされます。この機能は、シグナルをコピーしたい株式ブローカーのクライアントに特に役立ちます。

テスター

  1.  テスト中の取引セッションチェックを修正しました。特定の条件下でのテスト中に取引操作の実行が失敗する可能性がありました。その場合、操作が取引セッション内で開始された場合でも「市場閉鎖」エラーが返されていました。
ドキュメントを更新しました。
2 4月 2021
MetaTrader 5 build 2875

ターミナル

  1.  更新されたMQL5標準プログラムがMQL5サブディレクトリではなくターミナルのルートデータディレクトリにコピーされるバグを修正しました。このエラーが原因で、追加の「Experts」、「Images」、「Include」およびその他のフォルダがデータディレクトリの下に作成される可能性があります。

    プラットフォームの更新後、これらのフォルダがチェックされ、自動的に削除されます。
  2. ユーザが組み込みのMQL5.communityチャットにログインできない原因になっていたエラーを修正しました。

テスター

  1.  MQL5クラウドネットワークによるエキスパートアドバイザーの最適化を修正しました。特定の条件下では、最適化を開始できない可能性があります。

MetaEditor

  1.  MQL5プログラムのデバッグおよびプロファイリング中のエラーとクラッシュを修正しました。
ドキュメントを更新しました。
1234567891011121314...16