今更な話ですが衝撃的な事実でした
過去に作ったMTFのインジケーターをチャートに挿入するとMT4が必ず強制終了するようになってしまい、原因がよく分からなかったので、仕方なくMT4を再インストールしました。最近の話です。
従来はインストーラーを実行すると、インストール先を自由に選べるようになっていましたが、最近のインストーラーはProgram Files (x86)に強制的にインストールしちゃうんですね。
ずっとファイルコピーでMT4を複製してきたので気づきませんでした。
「まぁいいや」と思って、いつも通りプログラムを書いていました。それで、コンパイルしてバックテストしたところ、プログラミングした内容が反映されていないじゃないですか!
「えぇ?!何で?」と軽くパニックになりました。Expertsフォルダのmq4ファイルはきちんと更新されています。私は秀丸で開発している人間ですが、MT4付属のmetaeditor(メタエディター)でソースファイルを確認してみると、プログラミングした内容が消えているじゃないですか。
メタエディターで同じ内容をプログラミングし直して再コンパイルしてみると、結果がちゃんと反映されている…。ん~謎です。
色々と試行錯誤した結果、Expertsフォルダ内のex4が更新されていないことに気づきました。それで、ピンときました。「別のフォルダに真のソースファイルが存在するのでは?」と。
メタエディターから真のソースファイルの存在するフォルダを開いてみたところ、C:\Users\コンピュータ名\AppData\Roaming\MetaQuotes\Terminal\長い文字列\に辿り着きました。
これでようやく謎が解けました。MT4本体のファイルが置かれているアプリケーションフォルダとソースファイルが置かれているデータフォルダが分かれていたんですね。
いやぁ、知らなかったです。調べてみたところ、公式サイトにきちんと説明がありました。
正直不便だなぁと思います。OSのドライブには高速のSSDを使っているのですが、容量が小さいんですね。だから容量の大きいHDDのドライブにMT4をインストールしてきました。
MT4の複製も面倒そうです。どうするんだろう?今すぐには必要ではないので調べていませんが、いずれ調査が必要です。→2017/1/30に解決方法を「Build 600以降のMT4を複数コピーする方法」に掲載しました。
Windows 10の記事にもありましたが、強制というのはがっつり使うユーザには優しくありません。元に戻してくれることを祈っています。
余談ですが、秀丸でコンパイルする場合、C:\Users\コンピュータ名\AppData\Roaming\MetaQuotes\Terminal\長い文字列\にmql.exeないしmql64.exe(2018/2/8時点、ダウンロードリンクが無くなりました)を設置します。それから、秀丸のプログラム実行で”C:\Users\コンピュータ名\AppData\Roaming\MetaQuotes\Terminal\長い文字列\mql64.exe” “%f”を入力して実行すれば、うまく動きます。「メタエディターは使いにくい」って人はご参考になさってください。