MT4 のデータフォルダについて
MT4 のアップデート祭りは依然として続いており、現在はビルド 610 がリリースされています。
さて、MT4 ビルド 600 からデータフォルダの場所と構造が変わったことは、普段から MT4 をお使いの方でしたら、既にご存じでしょう。
ここで言うデータフォルダとは、MT4 が EA やヒストリ/バックテストなどのデータファイルを保存するフォルダのことで、以前は MT4 をインストールしたフォルダがそのままデータフォルダになっていました。
これに対して、ビルド 600 からは Program Files
以下に MT4 をインストールしたときの UAC による影響を避けるため、および複数ユーザが MT4 を独立して利用できるように、
C:\Users\ユーザ名\AppData\Roaming\MetaQuotes\Terminal\420DC4...36F9
のような別の場所をデータフォルダとして利用します。
具体的には、SHGetFolderPath(CSIDL_APPDATA)
で取得したパスに、"MetaQuotes\Terminal"
および MT4 のインストール場所ごとに異なる "420DC4...35F9"
のような文字列をつなげたものが、データフォルダのパスとなります。
MT4 がインストールされた場所によって、末尾の 16 進数の部分は異なるので、具体的なデータフォルダのパスは、MT4 の【ファイル > データフォルダを開く】メニューから確認すると良いでしょう。
便宜上、この記事においては、MT4 インストールフォルダ以外の場所に作られるデータフォルダを分離データフォルダと呼ぶことにします。
今回の記事ではこうした MT4 のデータフォルダに関して、少し掘り下げてみたいと思います。
データフォルダの位置
ビルド 600 以降であれば、 必ず分離データフォルダが利用されるかと言えば、そうでもありません。
第一チェック
まず、MT4 は
- MT4 インストールフォルダがリムーバブルディスク上にあるか
- コマンドラインオプションで
/portable
が指定されているか
の二点をチェックし、どちらかが成立すれば、従来通り MT4 インストールフォルダをデータフォルダとして利用します。
ただし、この場合も、後述するように、データフォルダの構造自体は新しい構造になる点に注意してください。
つまり、/portable
を指定したからと言って、完全に従来通りの環境で MT4 を利用できるわけではありません。
第二チェック
第一チェックでどちらの条件も成立しなかった場合は、第二チェックとしてさらに三つの条件を確認します:
- ターミナルサービスを実行中である(典型的な例が VPS のリモートデスクトップです)
- UAC が有効である
- MT4 インストールフォルダに書き込める権限を持っていない
これらのいずれかの条件が成立してはじめて、MT4 は分離データフォルダを使用します。
ちなみに、XP や Windows 2003 サーバでは UAC が無効になっている(というか そもそも UAC が存在しない)ので、多くの場合は MT4 インストールフォルダがデータフォルダになるわけです。
データフォルダの構造
データフォルダの構造に関しては、そんなに大規模な変更ではないというか、まあ見れば分かると思うので、簡単に説明するに留めます。
まず、従来は、MT4 インストールフォルダに experts
というフォルダがあり、その下に indicators
, libraries
, scripts
といったサブフォルダがぶら下がる形になっていました。
個人的には、EA の EX4 / MQ4 と他の scripts
などのサブフォルダが同じレベルに混在する、この従来のデータフォルダ構造が嫌いでした。
これに対して、ビルド 600 以降のデータフォルダでは、MQL4
というフォルダが作られ、Experts
フォルダはその下に移動しています。
また、 Indicators
, Libraries
, Scripts
なども Experts
と同列の位置に移動しています。
こうした違いから、以前のデータフォルダの構造を前提として作られた EA や DLL は、ビルド 600 以降動作しなくなっているのでご注意ください。