Terminal¥Common¥Filesフォルダを使う
データフォルダの1つ上の階層にTerminalフォルダがあります。
そこにCommonフォルダ(厳密にはその配下のFilesフォルダ)っていうフォルダがあるのはご存知でしょうか?
これは何かと言いますと、複数のMT4で共有するファイルを置く場所なんですね。
各MT4が管理するファイルはMQL4¥Filesフォルダに置きますが、これの複数MT4版です。
経済指標日ファイルなど、複数のMT4で何らかのファイルを共有したい時に利用します。
プログラムでは次のように書くことで、Terminal¥Common¥Files配下のファイルを参照できるようになります。
string fileName = "参照したいファイル.txt"; int fileHandle = FileOpen(fileName, FILE_SHARE_READ | FILE_COMMON | FILE_TXT);
ポイントはFileOpen関数の2番目の引数「FILE_COMMON」の指定です。
これを書くことでTerminal¥Common¥Filesを参照しにいくようになります。
また、新しいMQL4のオフラインチャートにある通り、ファイルは共有モードで開きましょう。「FILE_SHARE_READ」はそのための指定です。
分かりやすいように以下に引用しておきます。
以前のMQL4では全てのファイルは、共有モードで開かれていたことに留意してください。新しいMQL4では、ファイルを開く時に、共有モードにするには、FILE_SHARE_WRITEとFILE_SHARE_READのフラグを明示的に指定する必要があります。これらがない場合、ファイルの専有者によって閉じられるまで、他の誰かにファイルを開けられないように、排他モードでファイルが開かれます。
FILE_READで開くと排他モードとなり、MT4に限らず他のアプリケーションが開こうとしても排他制御のせいで開けなくなっちゃいますのでご注意ください。
上記のコード例は参照のみの前提ですが、書き込みも行う場合は、「FILE_SHARE_WRITE」も付けましょう。