MT4を24個同時起動&バックテストの並列実行

 

MT4BackTesterを改修して24個同時起動

以前、MT4を4個起動して並列実行することで実行時間を4分の1にできました。(4倍速で動作しました

もっと多くのMT4を同時起動すれば、もっと早くならないか?どこまで早くできるだろうか?というのが今回の検証です。そのために当方が開発したMT4BackTesterを改修しました。(Ver3.0.0としました)

同時起動数の設定をリストから選択できるようにしています。2~24個まで任意に選択可能です。

この24という数字は当方のCPU、「12コア24スレッド」からきています。(少なくとも当方の環境では25個以上起動しても早くならないだろうと考えました。)

同時起動設定の画面です。今まではインストールフォルダとデータフォルダの両方の指定が必要でしたが、インストールフォルダからデータフォルダの場所がわかるということを知ったので、データフォルダはMT4BackTesterが自動的に設定するようになりました。

また、24個も複製を作るのは非常に手間だったため、「インストールフォルダ1を複製する」というボタンを作りました。作業が終わったら「複製したフォルダを削除する」を押せば全部削除されます。

さらに、実行結果も24個のデータフォルダ、それぞれに生成されてしまって「非常に結果が確認しづらい」ので、1行目のデータフォルダに結果ファイルを移動する処理も組み込みました。

これで準備万端です。

24個起動した結果‥

実際に24個同時起動してみると、メモリの消費が凄まじく、当方のPCのメモリ(16GB)ではまるで足りませんでした‥。

そこで32GBのメモリを買ってきて16GBと交換してみましたが、それでも足りず‥!32GBと16GBの両方を挿して48GBとすると24個同時起動が実現できました!(24個起動で38GB~40GB程度消費するようです)

しかし‥まったく速くなりません‥。CPUは最初の起動時は100%になることがありましたが、一度起動してしまえばむしろ暇をしています。ディスクの問題か?M.2 SSDでも速度が足りないのか‥。他に原因があるのか‥?

いくつ起動するのが最適か‥?

4個、5個、8個‥と動作検証してみると5個起動した時点で4個と大差なく(むしろ少し遅い)、8個にすると少しだけ早くなりましたが代わりにMT4がテストを実行しないケースが多発しました。(テストを実行しないから早いだけでした)

実行中はリソースモニターで監視していましたが、CPUとメモリには余裕があります。

ディスクが足を引っ張っているのか?と考えて、2つのM.2 SSDを併用、データフォルダの場所を分けてみましたが結果はほとんど変わりませんでした。(1つ目のディスクにインストールフォルダ1~4のデータフォルダ、2つ目のディスクにインストールフォルダ5~9のデータフォルダ‥のように半分ずつ振り分けました。)

結局4個起動が最良

当方の環境では4個起動するのが最良という結果になりました。私のPCはハイエンドPCに入ると思うので、普通のPCでは1個か2個、多くても3個くらいが限度かもしれません。

参考までに当方の環境を記載しておきます。

CPU:AMD Ryzen9 3900XT(12コア24スレッド)
メモリ:48GB
ディスク:M.2 SSD 2TB

メモリはよほど沢山起動しない限りは16GBで足ります。8GBでは2個でも厳しいかもしれません‥。

ちなみに、4個起動するとバックテストに失敗するお客様がいらっしゃいました。その方は2個起動までであれば安定して稼働したようです。

当方の環境よりもハイエンド‥、モンスターPCと言えるようなPCであれば5個、6個といった起動は可能かもしれません。(※当方の環境では起動自体は可能でも、バックテストは速くなりませんでした。)

MT4BackTesterの最新版のリリースは‥

環境によっては問題が起きる可能性もあり、PCに疎い方が同時起動にチャレンジしようとするケースが増えそうで保留にしています。(サポートにかかる負荷は増やしたくありません‥;;)

現状のバージョンで4個起動まではできますので、ほとんどのお客様はこれで十分だと思われます。

しばらくは今のバージョンのままにしておきたいと考えております。

おわりに

前回投稿した記事「4倍速!?MT4のバックテストを並列実行して高速化」にて

MT4BackTesterの同時起動数を増やしてどこまでやれるか、次回はそれにチャレンジしてみたいと思います。

と記載したため、一応、ご報告のために記事を投稿させていただきました。

結果は残念でしたが‥。数年後、PCがさらに高速化されれば、この改修が役に立つときがくる‥かもしれないと思っています(笑)

MT4BackTesterについての概要は以下のリンクに記載しております。

MetaTrader4バックテスト効率化ツール「MT4BackTester」の概要と設定方法について

以上、よろしくお願いいたします。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント一覧

  1. トレンド より:

    お世話になります。グリッドシステムについてお聞きしたいのですが、レートが下がれば等間隔で買う、レートが上がれば売るという逆張りのような発注をされているかと思うのですが、
    その逆にレートが上がってきたら買う、レートが下がれば売るというような順張りの発注は可能でしょうか?また、そのようなシステムは作成されておりませんか?宜しくお願い致します。

    • emija より:

      可能か否かで言えば可能です。逆指値か指値かの違いだけだと思います。
      システムは探せばいくらでもありそうですが‥
      当方ではCSV形式でファイルを作成して一括発注するツールを作成・販売しております。
      ☆GridOrderCSV
      https://tasfx.net/shop/?p=186
      「指値」を選択して発注していただきますとご希望の動作になるかと思います。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。