MT4とMT5のストラテジーテスターの違い

MT4とMT5のストラテジーテスターの比較 アルゴリズム開発
この記事は約7分で読めます。

最近、MT5のストラテジーテスターを使い始めたんですが、MT4のそれとは違う部分もいくつかありました。

そこで、違いの中で特に気になったものについて情報として残しておこうと思います。
(ほかにも気になったものが出てきたら追記していきます)

スプレッド

MT4

ストラテジーテスター上で設定した値になります。

MT4のストラテジーテスターの”スプレッド”設定位置

固定値でしかテストできないので平均的な値、狭めの値、広めの値という感じで複数回テストする必要がありました。

MT5

ヒストリカルデータに含まれる値になります。

MT5のストラテジーテスターの”スプレッド”表示場所

実際に配信された値、あるいはそれに近い値でテストできます。
これでスプレッドの値を変えながら何回もテストする必要がなくなりました。

また、”スプレッドが広がっているときは売買しない”といったようなスプレッド値を売買条件に含むアルゴリズムもテストできるようになりました。

取引時間

MT4

業者の取引時間外でも注文できてしまいます。
(下の図の例だと月曜日は”01:05 – 23:55”の間だけ取引できるはずですが、「1:00」にも注文が可能です)

MT4のストラテジーテスターの”呼値”、”取引”時間の表示場所

MT5

業者の取引時間外は注文できません。
注文すると”market closed”というエラーになります。

上の図のように”呼値”(MT5では”相場情報”)と”取引”の時間が異なる場合に発生する可能性があります。
それに取引時間が異なる業者のヒストリカルデータをインポートした場合にも発生すると思います。
あとは、現在の取引時間をもとに判断していると思うので、過去に取引時間が変更されている場合も発生するかもしれません。

はじめはバックテストの結果にも影響がありそうだと思っていたんですが、僕がテストしたEAは注文判定が15分間隔だったので、あまり影響がありませんでした。
ただ、エラー自体は何回か発生していたので、まったく影響がないわけではないと思います。

注文判定をティックごとや、1分間隔とかの短い周期で行うものだと、ある程度の影響があるのではないでしょうか。(そのようなEAを持っていないので試せてはいません)

最適化

MT4

最適化処理を並列で実行することはできません。

たとえば、あるパラメータについて「10~20」の値を「1」きざみで処理する場合、「10」の処理が終わったら「11」を、「11」の処理が終わったら「12」を…という具合に順番に実行します。

MT5

最適化処理を並列で実行することができます。
基本的には実行する PC の論理コア数だけ並列実行できます。

たとえば、論理コアが8個ある PC で、あるパラメータについて「10~20」の値を「1」きざみで処理する場合、「10~17」までの処理が同時に実行されます。

実行時間が大きく短縮できそうだったので、ためしに比較してみました。
使用した EA とパラメータ、ヒストリカルデータは同じです。( EA は MT4 から MT5 へ移植したものです)

パス数MT4MT5
116秒42秒
1099秒
(6.2倍)
99秒
(2.4倍)
20182秒
(11.4倍)
508秒
(12.1倍)
40364秒
(22.8倍)
912秒
(21.7倍)

あれ? なんか期待してた結果と違います。
パス数が「10」のときは比率的に短縮できてますが…。

調査したところ、パス数が「20」と「40」のときに伸びていないのは、どうやらメモリが足りないことが原因のようです。
ためしにメモリを使い切らないように使用するコア数を制限したところ、それぞれ「181秒(4.3倍)」と「354秒(8.4倍)」と大きく改善しました。
これなら効率は上がっていると言ってもいいと思います。(1パス実行あたりの処理時間が大幅に増えているので、処理時間的には変わっていませんが…)

最大のパフォーマンスを引き出すためには、タスクマネージャーを見ながら最適化に使用するコア数を調整する必要があるかもしれません。

ちなみに使用するコア数の変更は、以下の手順でできます。

  1. ストラテジーテスターの「エージェント」タブを選択します。
    MT5のストラテジーテスターの「エージェント」タブの位置
  2. 設定を変更したいコアの上で右クリック、表示されたメニューから「有効化」または「無効化」を選択します。
    MT5のストラテジーテスターの「エージェント」タブで右クリックした時に表示されるメニューと、メニュー内での「有効化」「無効化」の位置

複数銘柄の一括テスト

MT4

ある EA で複数の銘柄をバックテストしたい(たとえば、ほかに上手くいきそうな銘柄がないか探すような)場合、それぞれの銘柄をひとつずつ順番にテストする必要があります。

MT5

ある EA で複数の銘柄をバックテストしたい場合、一括でテストすることができます。

  1. ストラテジーテスターの「設定」タブを選択します。
    ストラテジーテスターの「設定」タブの位置
  2. 「銘柄」で「すべての[気配値表示]銘柄」を選択します。
    「銘柄」のドロップダウンリストの中の「全ての[気配値表示]銘柄」の位置
  3. メニューから「表示」→「銘柄」を選択して銘柄ダイアログを開きます。
    「表示」ドロップダウンメニューの中の「銘柄」の位置
  4. 「仕様」タブでテストしたい銘柄を選択します。
    銘柄ダイアログの「仕様」タブと「銘柄」の位置
  5. 「銘柄を表示する」ボタンを押します。
    (左側のツリー上の項目を選択した状態で「銘柄を表示する」ボタンを押すと、その項目に含まれる銘柄が一括で切り替わります)
    銘柄ダイアログの「銘柄を表示する」ボタンの位置
  6. 逆にテストしたくない場合には「銘柄を非表示にする」ボタンを押します。
  7. 「スタート」ボタンを押してバックテストを開始します。

「気配値表示」ウィンドウ上で銘柄の追加/削除をすることもできます。
表示されている銘柄が少数の場合には「気配値表示」ウィンドウから変更したほうが簡単かもしれません。

最適化と同じように複数の銘柄のテストが並列実行されます。
そのため、実行環境によっては使用するコア数を絞ったほうが処理時間が短くなるかもしれません。(詳細は「最適化 」の章をご覧ください)

複数台の PC を使った分散処理

MT4

MT4 を起動した PC のみを使ってテストします。

MT5

MT5 を起動した PC だけでなく、ネットワーク上に存在する PC もテストに使用することができます。
そのため、余っている PC があれば効率的にテストすることが可能です。

この機能を使うためには、MT5 を起動してストラテジーテスターを実行する PC(以降、メイン PC )と、メイン PC から使われる側の PC(以降、サブ PC )のそれぞれで設定が必要になります。

まずは、サブ PC 側の設定を行います。

複数の MT5 をインストールしている場合には、最後にインストールした MT5 から設定する必要があると思います。(僕はそうでした)

たぶん、Windows ファイアウォールの「MetaTrader 5 Strategy Tester Agent」という受信規則の中で、接続を許可するプログラムが最後にインストールした MT5 になっているからだと思います。
なので、この設定を変えればいいのかもしれませんが、最後にインストールした MT5 を起動するほうが簡単で安全です。

  1. MT5 のメニューから「ツール」→「ストラテジーテスターエージェントマネージャー」を選択してエージェントマネージャーを起動します。
    「ツール」メニューの中の「ストラテジーテスターエージェントマネージャー」の位置
  2. 「サービス」タブを選択します。
    エージェントマネージャーの「サービス」タブの位置
  3. 「エージェント」のドロップダウンリストから追加したいエージェントの数を選択します。
    (エージェントごとにひとつのテストを処理するため、エージェントが複数あればサブ PC 側でも並列実行されます)
    「サービス」タブでの「エージェント」の設定場所とドロップダウンリストの例
  4. 「追加」ボタンを押します。
    「サービス」タブの「追加」ボタンの位置
  5. IP アドレスをメモしておきます。
    「サービス」タブのIPアドレスの表示位置

何台か試したところ、選択できるエージェントの数は PC の物理コア数に依存するようです。

搭載しているメモリが少ない場合や、ストレージに HDD を使用している場合には、エージェントの数を減らしたほうが効率がいいかもしれません。

設定が終わったら MT5 と エージェントマネージャーを起ち上げておく必要はありません。

つぎにメイン PC 側の設定を行います。

  1. ストラテジーテスターの「エージェント」タブを選択します。
    ストラテジーテスターの「エージェント」タブの位置
  2. 「Local Network Farm」の上で右クリックして、表示されたメニューの中から「追加」を選択します。
    「エージェント」タブで表示されるメニューの中の「追加」の位置
  3. 「ネットワークをスキャン」にチェックを入れ、「始点」と「終点」に先ほどメモしておいたサブ PC の IP アドレスを入力して「次へ」ボタンを押します。
    エージェント追加ダイアログの入力箇所と「次へ」ボタンの位置
  4. 追加したいエージェントが表示されているのを確認したら「完了」ボタンを押します。
    エージェント追加ダイアログの「完了」ボタンの位置
  5. 「Local Network Farm」の上で右クリックして、表示されたメニューの中から「ローカルネットワークファームを使用する」を選択します。
    「エージェント」タブで表示されるメニューの中の「ローカルネットワークファームを使用する」の位置

以上で「最適化 」や「複数銘柄の一括テスト 」を実行する際、サブ PC にもテストが割り振られます。

タイトルとURLをコピーしました