バックテストの高速化

早く結果が知りたい

バックテストやフォワードテストの待ち時間を減らすためには、
プログラム自体のチューニングや、遺伝的アルゴリズムによる検証回数の削減も必要ですが、

MT4の頃は、CPU 1コア分しか使用してくれず、
ハイスペックなPCを用意しても処理速度を上げることができませんでした。

複数のMT4 terminal.exe を別フォルダに複製し、同時実行することで
異なるEAや時間足、期間の検証を行う方式はありますが、
あくまで単位時間あたりの処理量を増やせても、対象EAのバックテストを早く終わらせることができません。

殊、データ分析においてはOODAループとか、アジャイル型フレームワークが最適と言われる通り
EA開発でも、1日に何度も改善を繰り返しながら最適解を見つけたいと思います。

でも実際は、処理が重いEAになると
「一週間バックテストして、来週末あらためて確認しよう」ということもあり、、
来週改めて見ることには「なんでこの仕様にしたんだっけ・・・?」から始まることも。。。

MQL5 Cloud Network

MT5では、テストを高速化するために MQL5 Cloud Network という機能を使います。
早速触ってみましたが、なかなかいい感じ!

  1. マルチコアが使える
  2. 他のPCにも処理を割り振れる
  3. クラウド上にある他人様のPCのCPUも借りることができる
  4. 他人にCPUを貸し出すこともできる

といった特徴があります。

今回は、1と2を実際に実施してみます。

1. マルチコアが使える

MT5のストラテジーテスタには、 「エージェント」というタブがあり、これを開きます。

Local という部分が、自分自身のPCが持つCPUコアです。

全CPU使うこともできますし、他の作業のために使うコア数を減らすこともできました。

他事をやりたいときも安心!

2. 他のPCにも処理を割り振れる

24時間稼働のワークステーション(8コア)があるので、それにも処理をさせます。
元々MT4用に買ったもののCPUコアは使いきれず無駄な買い物だったと思っていましたが、
今になって役に立つとは。(5年前の自分、偉い)

バックテストを、自分のPC以外に実行させるためには
専用のエージェント(MetaTrader 5 Strategy Tester) を該当PCにインストールしておきます。
(Windows PCでしか動作しないので注意。 どうしてもMacやLinux等で実行させたい場合は
仮想環境上にWindows環境作るとか、ですかね。未検証です)

  1. 同じく エージェントタブ
    →Local Network Farm 右クリック
    →追加

  2. 事前にMetaTrader 5 Strategy Tester をインストールしたPCのIPを指定するか、
    ネットワークをスキャンする。
    ※パスワードは、エージェント側で指定したものと同一の値を入力。

  3. 追加したいコア数を調整したい場合は、
    エージェント起動時に指定したポートの範囲で追加コア数を調整するか、
    一旦全コア分追加をした上でバックテスト実行時に指定コア数使うこともできます。

  4. 完了!
    エージェントタブ内に、ワークステーション側PCのCPU情報が表示されています。

  5. 「ローカルネットワークファームを使用する」にチェック も忘れずに。

おすすめの記事