ひとつのPCの中に複数のMT4 (同じブローカーで)

 

fxpapaです。

唐突ですが、MetaTrader 4 (MT4)を、用途ごとに使い分けて、複数のMT4を同時に動かしたいと思ったことはありませんか?

ない、という方には関係のない話かもしれませんが、手軽にバックアップを取っておく、という運用にも繋がるので、ぜひ最後までお付き合いください。

複数のMT4を動かす意味について

複数のMT4なんて動かしたこともないし、今後も使いみちが無いよ、という方も少しはいるかも知れません。異なるブローカーのMT4を一緒に動かしている、という人が一番多いかもしれませんね。

私は、PCを入れ替えたときに、CPUをCore i 7、メモリを16GB、ハードディスクをSSD(500GB) という少し余裕のある構成に置き換えてからは、AXIORY なり Alpari の MT4 を複数起動して使っています。だいたいは、同じブローカーのMT4を2つ、3つを同時起動です。

何に使っているかというと、

  • 時間が掛かるバックテストを2つ、3つのMT4で並行して実行する
  • 1つ目のMT4では複数パラメータを指定したオプティマイズ(最適化)、2つ目のMT4ではオプティマイズで出た途中結果を同じ期間または異なる期間を単純なバックテスト
  • 1つ目はリアル口座のモニター、2つ目はデモ口座でのテスト

のような使い分けです。

勿論、リアルもデモも、EAの運用としてはVPSの24時間稼働用の環境を利用していますが、テストとなると、運用環境で実施するわけにも行かず、またVPSではパワー不足であることから、開発やバックテストでは必ずPC環境を利用します。

因みにPC環境ではVMware Player

PC内に無償のVMware Playerを導入して、その上でMT4の開発、テスト用の環境として利用しています。

勿論、仮想環境を利用することで、VMware の仮想用ドライバと仮想ハードウェアを介して動作するのでどうしてもオーバーヘッド分のパフォーマンスは劣化するでしょうが、それをデメリットとするならば、それを遥かに上回るメリットを享受するために仮想環境を利用しています。

そのメリットとは何か。

それは以下の4点です。

  1. 仮想環境だけ独立させて作業中断と再開が容易であること
  2. Windows OS 丸ごとのバックアップが容易であること
  3. 必要に応じて物理PCのリソース(特にCPUコア、メモリサイズ)を調節可能であること
  4. 物理PCがブッ飛んでも代替のPCに移行が容易であること

物理的なハードウェアに余裕を持たせた理由には、この仮想環境のメリットを享受しつつデメリットを打ち消せるようにするためなのでした。

どうやって同じブローカーのMT4 を複数インストールするのか?

同じブローカーのMT4を複数個インストールするにはいくつかの方法があります。単純に、インストールパスを分ければ良いのです。

結論だけ書いてしまうと、これでこの記事が終わってしまうので、私が良く使っているテとして、同じブローカーのMT4環境を簡単に増やす方法をご紹介したいと思います。

この方法は、あくまでも、fxpapaが自己責任の上、動作確認しながら改善していった上の環境構成です。参考にされる方は同様にそのおつもりでお願いします。デメリットも最後の方で記載していますのでご確認ください。

複数個のMT4の配置方法

1. 複数個のMT4をインストールするフォルダを決める

初めに、複数個のMT4を配置するフォルダを決めます。

何言ってるの?インストール先は Program Files (x86)じゃないの?と思われるかもしれませんが、ここはぐっとこらえて続きをお読みください…。

私の場合は、Cドライブの直下に Forex というフォルダを作成して、その配下に複数個のMT4フォルダを置くようにしています。MT4のフォルダ名がテキトーなのはご容赦頂くとして、下の画面のような形でAlpari をマルチで配置してバックテストで使用しています。

マルチ MT4 フォルダ

 

これを【マルチMT4フォルダ】と呼ぶことにします。

 

2. MT4をインストール(デフォルトで可)して、インストールされたMT4フォルダを目視確認

まだMT4をインストールしていない方はMT4をインストールする必要があります。ブローカーから入手したインストーラでMT4を単純にインストールするだけです。インストーラで「次へ」を押すだけですね。

すでにMT4をインストール済みの方は、この下から進めてください。

デフォルトインストールの場合、MT4 は Cドライブの Program Files (x86) の中にインストールされると思います。Program Files (x86)フォルダの中に、インストールしたMT4のフォルダがあることを目視確認しておいてください。デフォルト以外のパスにインストールした方は、そちらのインストール先パスをご確認ください。

3. インストールしたフォルダを【マルチMT4フォルダ】にコピー

ひとつ前の手順で目視確認した Program Files (x86) の中の MT4 フォルダを【マルチMT4フォルダ】にコピーします。コピーする際は、MT4は停止させておいてください。また、【マルチMT4フォルダ】にコピーした MT4 フォルダは、適宜リネームすることができます。上の画面ショットを例に、都合よくリネームしてみてください。

4. MT4のコピーが終わったら、インストーラでインストールした Program Files (x86) の MT4 はアンインストール

マルチMT4フォルダ】にコピーが終わったら、Program Files (x86) の中の MT4 は不要です。プログラムの追加と削除(今は、アプリと機能でしたかね?)からアンインストールをしてください。

5.コピー済みMT4の初回起動

MT4のコピーとインストーラで導入したMT4のアンインストールが終わったら、コピー済みMT4を起動します。コピーしたMT4フォルダにある terminal.exe をダブルクリックして起動するだけです。

Windows 7あたりから、MT4を起動するとそのデータフォルダが別の場所に作られます。Wondows 10の場合は以下のようなパスです。

MT4を複製していくと、このようなフォルダが初回起動ごとに作られることになります。このフォルダの中には、MQLのコードやバイナリだけでなく、そのMT4が使用するヒストリカルデータ、バックテストで生成されるティックデータが、個別に格納されることになります。

これを【個別データフォルダ】と呼ぶことにしましょう。

スポンサーリンク

実際に開発したMQLコードは【マルチMT4フォルダ】の中のExpertフォルダではなく、上記の AppData 配下にある【個別データフォルダ】に配置する必要があるのでご注意ください。

6.MQLコードの置き場所を統一する

マルチMT4構成を取ることで気づいたのが、複製したMT4ごとにMQLコードを配置しないとバックテストもできない!ということでした。5つのMT4を複製すると、MQLコード5箇所に複製しなければならないの? → でも心配御無用。

Windowsでも、ジャンクションだとかシンボリックリンクが使えますので、それを活用することにします。

ということで、MQLコードは一か所にまとめたいので、その配置場所を決めます。

私の環境では、C:¥Forex というFX用ルートフォルダを作っていますので、その場合は以下のようにしても問題ありません。

でも、せっかくまとめるなら、そのフォルダ配下のすべてのMQLコードを自動的にクラウドストレージにバックアップしておきたいので、私の場合はクラウドストレージの同期フォルダ配下にMQLフォルダを置きました。クラウドストレージへの自動バックアップは、また別で詳しくご紹介します。

と言うわけで、上記のフォルダパスに、マルチMT4構成で共通MQLコードを配置することを前提に説明を進めます。

このMQL4フォルダを【共通MQL4フォルダ】と呼ぶことにします。

7.【個別データフォルダ】から【共通MQL4フォルダ】にシンボリックリンクを張る

シンボリックリンクとは接合ポイントとも呼ばれ、Unix系OSでは一般的に使われている仕組みです。Windows でも、ショートカット機能はありますが全くの別物です。

Windows 10や Windows Server 2012R2、2016でシンボリックリンクを使うには、私の今の理解では、mklinkコマンドを利用するのが一番手っ取り早いと思っています。なので、その前提で説明を進めます。

シンボリックリンクの張り方としては、【個別データフォルダ】の中にあるMQL4フォルダをリネームまたは削除して、【共通MQL4フォルダ】に対してのシンボリックリンク「MQL4」を作成する、というものです。

作成する【共通MQL4フォルダ】へのシンボリックリンクは「MQL4」という名前である必要があります。実際にMT4が稼働してMQLファイル(mq4、ex4など)を利用するときに、もともと作成されていたMQL4フォルダに見立てて同じ名前にします。

 

No. 手順
1. MT4を起動し、データフォルダを開く。フォルダを開いたら、MT4を終了する。
2. データフォルダに元から存在する「MQL4」フォルダを「MQL4.bk」にリネームする。
3. 管理者権限でコマンドプロンプトを起動し、上記手順1で開いているフォルダに移動する(エクスプローラのアドレスバーにあるフォルダパスをコピペすると便利です)。
4. コマンドプロンプトで、以下のコマンドを実行してシンボリックリンクを作成する。
5. 作成されたMQL4シンボリックリンクから【共通データフォルダ】のMQL4フォルダの中身が見えているか確認する。
6. MT4を起動し、データフォルダのツリーを更新して、MT4からも【共通データフォルダ】の中のMQL4が参照できているか確認する。
以上で、MT4が自動で作成する【個別データフォルダ】から【共通データフォルダ】へのシンボリックリンクの設定は完了です。

 

あとは、使い分けしたい分のMT4を複製してシンボリックリンクをしていけば、MT4がいくつあってもMQLコードの置き場所はひとつで済ませることができます。

マルチMT4構成にした場合のデメリット

ここまでの環境づくりをしておくと、使用目的ごとにMT4を使い分けても、同じMQLコードをあちこちのMT4に持たせることも必要ありませんし、バックアップするMQLコードは【共通データフォルダ】のファイルだけで十分です。この【共通データフォルダ】をGoogle DriveやBOXなどのクラウドストレージに自動同期するようにしておけば、コードの変更やファイルの追加/削除ごとに自動でバックアップが取られるとこになります。大変便利ですね!

ただ、デメリットもあると思います。一部、無理矢ひねり出したものもありますが、列挙してみます。

  1. ヒストリカルデータ、バックテストのティックデータをMT4ごとに持つことになるので、ディスク容量を圧迫する。私の中ではこれが一番ですかね。特に、バックテストで生成されるティックデータサイズは数十GBを超えるため、気がついたらディスクの空き容量がゼロ、なんてこともありました。
  2. MT4ごとにヒストリカルデータをセットしておく必要がある。作業ミスなどがあると、すべてのMT4の間で均一性のないバックテスト環境になってしまう。これが2番目のデメリットです。もちろん、【個別データフォルダ】のヒストリカルデータフォルダもシンボリックリンクで共通化を考えました。しかし、MT4が自動でオンラインのチャートデータからヒストリカルデータにチャート情報を落とし込むことを考えると、複数のMT4から書き込めば競合するだろうし、ヒストヒカルデータも壊れるだろうし、そもそも後から起動したMT4は開けないんじゃね?ということで、試すことすらしていません。
  3. 複数のMT4を起動して並列バックテストをしていると、どのMT4で何のバックテストをしているのか分からなくなることがある。これは私自身の使い方の問題ですが、バックテストしたまま他の作業に移ったあとにMT4に戻ってくると、あれ?あのバックテストってどれでやってたっけ?になることがあります。ぱっと見、MT4を識別できるようにチャートの色をつけるとか、メニューの配置を変えておくとかやりようはいくらでもありますが、そもそも面倒くさいのでそのまま使っています。

デメリットはこれくらいでしょうか。使い方でどうにでもなりそうなことばかりなので、問題なく運用できそうだな、ということを少しでも感じ取っていただけたら嬉しいです。

 

もし使う機会がありましたら、ご参考になれば。

スポンサーリンク