MetaTrader 5プラットフォームビルド1860:MQL5バー操作関数とストラテジテスターの改善

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

15 6月 2018

ターミナル

  1. 口座開設ダイアログが完全に再設計されました。リストからブローカーを選択し、希望の口座タイプを選択することができるようになりました。利用可能なすべてのサーバではなく会社名のみが表示されるようになったため、ブローカーリストがよりコンパクトになりました。

    検索をより簡単かつ効率的にするために、会社のロゴがリストに追加で表示されます。望まれるブローカーがリストに表示されていない場合は、検索ボックスに会社名またはサーバーアドレスを入力し、[ブローカーを検索]をクリックします。




    初心者が正しい口座を選択できるように、ダイアログに口座タイプの説明が追加されました。また、一般データ保護規則(GDPR)に準拠するために、更新されたダイアログにはブローカーのアグリーメントおよびデータ保護ポリシーへのリンクが含まれている場合があります。




    実際の口座開設の可能性は大幅に拡大しました。前から携帯端末にあったIDと住所確認書類をアップロードする機能が、デスクトップ版で利用できるようになりました。MiFID規制ブローカーは、雇用、所得、取引経験などの情報を含む、必要なクライアント識別データを要求することができるようになりました。この新しい機能によって、実際の口座を不必要な官僚的手続きなしにより迅速かつ簡単に開けるようになります。




  2. 取引履歴がストップロスとテイクプロフィットの値を表示するようになりました。エントリのストップロス/テイクプロフィットの値と反対の取引はこれらの取引の元となった注文のストップロス/テイクプロフィットに基づいて設定されます。該当するポジションの決済時のストップロス/テイクプロフィットの値が決済に使われます。後者は、決済の時点でポジションのストップロスとテイクプロフィットに関する情報を保存して表示することができます。取引終了後にポジションが消滅し、ターミナルのポジション履歴は取引に基づいて生成されていたため、この情報は、以前のバージョンでは格納されていませんでした。




  3. ポジション履歴がストップロスとテイクプロフィットの値を表示するようになりました。適切なポジションを開いたり閉じたりする取引のストップロス/テイクプロフィットがポジションに指定されます。




  4. チャートに最初に要求されたボリュームではなく現在の未決注文量が表示されるようになりました。




  5. 拡張モードで板情報機能の最適化された高速レンダリングが可能になりました。
  6. 取引要求実行結果の処理を最適化しました。この最適化により、場合によっては処理がはるかに高速になります。
  7. 同じポジションに複数のストップロス変更要求が送信されることがあるというトレール注文操作のエラーを修正しました。
  8. 最小および最大ボリュームの設定とカスタム銘柄設定のボリュームステップを修正しました。
  9. テンプレートを銘柄チャートに適用するときに、「フィックススケール」オプションが無視されることがあるというエラーを修正しました。
  10. ティック履歴の蓄積の誤りを修正しました。

MQL5

  1. コンパイル時のソースコードの最適化によってMQL5アプリケーションがスピードアップしました。より高速な実行には、新しいMetaEditorバージョンでプログラムを再コンパイルします。
    残念ながら、この新しい最適化により、新しいプログラムは以前のターミナルバージョンとの互換性がありません。MetaEditorバージョン1860以降でコンパイルされたプログラムは、1860以下のターミナルバージョンでは起動できません。古いバージョンのMetaEditorでコンパイルされたプログラムは、新しいターミナルでも実行できます。

  2.  新しい関数: iTime、iOpen、iHigh、iLow、iClose、iVolume、iBars、iBarShift、iLowest、iHighest、iRealVolume、iTickVolume、iSpreadこれらの関数は、MQL4で使用される関数に似ており、取引アプリケーションのコードを第5世代のプラットフォームに簡単に転送できますs。

    以前は、これらの関数を使用して実行されたタスクのほとんどは、Copy *関数を使用して実装できましたが、チャート上のHigh/Low値を検索し、その時間に基づいてバーを検索するためには独自の関数を実装する必要がありました。これらのタスクはiHighest、iLowest、iBarShiftの各関数を使って簡単に実行できるようになりました。

    iTime
    対応するチャートのバー( 'shift'パラメータで示されます)の開いた時間を返します。
    datetime  iTime(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iOpen
    対応するチャートのバー( 'shift'パラメータで示されます)の始値を返します。
    double  iOpen(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iHigh
    対応するチャートのバー( 'shift'パラメータで示されます)の高値を返します。
    double  iHigh(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iLow
    対応するチャートのバー( 'shift'パラメータで示されます)の安値を返します。
    double  iLow(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iClose
    対応するチャートのバー( 'shift'パラメータで示されます)の終値を返します。
    double  iClose(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iVolume
    対応するチャートのバー( 'shift'パラメータで示されます)のティックボリュームを返します。
    long  iVolume(
       string           symbol,          // 銘柄
       int              timeframe,       // 期間
       int              shift            // シフト
       );

    iBars
    履歴で使用可能な、対応する銘柄と期間のバーの数を返します。
    int  iBars(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe        // 期間
       );

    iBarShift
    時間によってバーを探します。この関数は、指定された時間に対応するバーのインデックスを返します。
    int  iBarShift(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       datetime         time,            // 時間
       bool             exact=false      // モード
       );

    iLowest
    対応するチャートで見つかった最小の値のインデックスを返します(現在のバーとの相対的な移動)。
    int  iLowest(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              type,            // 時系列ID
       int              count,           // 要素数
       int              start            // インデックス
      );

    iHighest
    対応するチャートで見つかった最大の値のインデックスを返します(現在のバーとの相対的な移動)。
    int  iHighest(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              type,            // 時間series identifier
       int              count,           // 要素数
       int              start            // インデックス
      );

    iRealVolume
    対応するチャートのバー( 'shift'パラメータで示されます)の実のボリュームを返します。
    long  iRealVolume(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iTickVolume
    対応するチャートのバー( 'shift'パラメータで示されます)のティックボリュームを返します。
    long  iTickVolume(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iSpread
    対応するチャートのバー( 'shift'パラメータで示されます)のスプレッドボリュームを返します。
    long  iSpread(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );
  3. 新しいTesterHideIndicators関数が追加されました。エキスパートアドバイザーで使用される指標の表示/非表示モードを設定します。この関数は、テスト中にのみ指標の可視性を管理するために使用されます。作成した指標を非表示にする必要がある場合はtrueに設定します。そうでなければfalseを使用します。
    void  TesterHideIndicators(
       bool      hide     // フラグ
       );
  4. チャート上の取引レベルのクリックによるCHARTEVENT_CLICKイベントの生成が追加されました。
  5. CopyTicks関数の動作を修正し、最適化しました。
  6. SymbolInfoDouble関数がSYMBOL_TRADE_LIQUIDITY_RATEプロパティのために返す値を修正しました。
  7. 重複するメモリを持つ文字列配列のコピーを修正しました。
  8. FileReadArray配列で文字列配列の割り当てを修正しました。
  9. MQL5標準ライブラリのエラーを修正しました。

テスター

  1. 最適化キャッシュを使用するためのシステムを更新しました。キャッシュには、以前に計算された最適化パスに関するデータが格納されます。ストラテジーテスターは、一時停止後に最適化を再開できるようにデータを保存し、すでに計算されたテストパスの再計算を回避します。

    最適化キャッシュ保存形式の変更
    以前のバージョンでは、最適化キャッシュは1つのXMLファイルとして保存されていました。すべてのエキスパートアドバイザー最適化パスが指定されたテスト設定でこのファイルに追加されました。したがって、同じファイルには、異なる入力パラメータを使用した最適化結果が格納されています。
    最適化キャッシュは、最適化されたパラメータのセットごとに別々のバイナリファイルとして格納されるようになりました。ストラテジーテスターの最適化キャッシュに関する操作は、新しい形式とファイルサイズの縮小により大幅に高速化されています。加速は、一時停止した最適化パスを再開すると特に顕著になります。

    以前の最適化の結果を表示
    以前の最適化の結果をストラテジーテスターですぐに見ることができるようになったため、サードパーティのソフトウェアを使用して巨大なXMLファイルを分析する必要がなくなりました。[最適化結果]タブを開き、エキスパートアドバイザーと最適化キャッシュを含むファイルを選択します。



    このリストには、選択したエキスパートアドバイザーのディスクに存在するすべての最適化キャッシュファイルが含まれています。各ファイルの最適化の日付、テスト設定(銘柄、時間枠、間隔)および入力パラメータが表示されます。最適化結果は、結果が得られた取引サーバによってさらにフィルタリングすることができます。

    オンザフライでの最適化基準の再計算
    最適化基準はある可変パラメータで、その値によって、テストされた入力セットの品質が決定されます。最適化基準の値が高ければ高いほど、与えられたパラメータセットによるテスト結果は良好であると考えられます。

    以前は、最適化中には最適化開始前に選択された基準が1つしか計算されませんでした。結果を見るときに最適化基準を即座に変更し、ストラテジーテスターは自動的にすべての値を再計算するようになりました。




    最適化キャッシュの手動使用
    以前のバージョンでは、最適化キャッシュはXMLファイルとして保存されており、このファイルは、サードパーティのソフトウェアを使用して開いて分析することができました。これが、閉じたバイナリファイルに保存されるようになりました。データをXML形式で取得するには、[最適化結果]タブのコンテキストメニューを使用してデータをエクスポートします。

  2. テスト通貨と最適化のために預金通貨とレバレッジを手動で設定する可能性が追加されました。以前のバージョンでは、通貨は接続された口座に従って設定されていたため、通貨を変更するには、他の口座に接続する必要がありました。レバレッジサイズは、以前は事前に定義されたリストからのみ選択することができましたが、任意の値を指定できるようになりました。

    適切なテストを確実に行うためには、利益と証拠金を特定の預金通貨に変換するためのクロスレートがアカウントで利用可能でなければならないことに注意してください。




  3. テスターエージェントでOpenCLを使用できるようになりました。以前、OpenCLデバイスはローカルエージェントでテストするときにのみ使用できました。エージェントは、ローカルネットワークやMQL5クラウドネットワークで作業するときに、利用可能なすべてのOpenCLデバイス(プロセッサ、ビデオカードなど)を使用することができるようになりました。

MetaEditor

  1. MQL5ストレージでの作業を最適化してスピードアップしました。
  2. MQHファイルの一時停止後のデバッグプロセスの再開を修正しました。
  3. エディタでのコード強調表示を修正しました。
  4. 検索結果のナビゲーションを修正しました。
  5. 大量テキスト置換機能を修正しました(すべてではなく最初のオカレンスだけが置き換えられている場合がありました)。

ドキュメントが更新されました。