MT4(MQL4)/MT5(MQL5)のFileOpen
指定したファイルを開きます。ファイルがなければ新規作成します。
int FileOpen(
string file_name, // ファイル名
int open_flags, // フラグの組み合わせ
short delimiter='\t', // デリミタ
uint codepage=CP_ACP // コードページ
);
MT4→MT5になっても変わらず使えます。
注意点としては、絶対にFileCloseとセットで使って下さい。
※FileCloseしないと、Metatraderでファイルを掴んだままになり、他のソフトでファイルを操作できなくなってしまいます!!!
各パラメータの意味は以下の通り。
file_name
ファイルのアドレスを指定する
パスを指定せずファイル名だけ指定すると
「ファイル」→「データフォルダを開く」
で開くフォルダ配下の
MQL5/Files
フォルダにファイルが作成される。
open_flags
以下の指定が可能。複数指定も可。
FILE_READ - ファイルが読み込みのために開かれる
FILE_WRITE - ファイルが書き込みのために開かれる
FILE_BIN - バイナリ読み書きモード(文字列から/への変換はなし)
FILE_CSV - csv ファイル(unicode または ansi 文字列への変換され区切り文字で区切られる)
FILE_TXT - 単純なテキストファイル( csv と同じだが区切り文字がない)
FILE_ANSI - ANSI 文字列( 1 バイト文字)FILE_UNICODE - UNICODE 文字列(2 バイト文字)
FILE_SHARE_READ - 複数プログラムから読み込まれるFILE_SHARE_WRITE - 複数プログラムから書き込まれる
【参考】MQL5公式ページ
識別子 | 値 | 説明 |
---|---|---|
FILE_READ | 1 | ファイルは読み込むために開かれます。フラグは FileOpen() で使用されます。ファイルを開く際には FILE_WRITE 及び/または FILE_READ 仕様が必要です。 |
FILE_WRITE | 2 | ファイルは書き込むために開かれます。フラグは FileOpen() で使用されます。ファイルを開く際には FILE_WRITE 及び/または FILE_READ 仕様が必要です。 |
FILE_BIN | 4 | (文字列への変換文字列を含まない)バイナリ読み込み/書き込みモードです。フラグは FileOpen() で使用されます。 |
FILE_CSV | 8 | CSV ファイル(全ての要素が Unicode または ANSI の適切な型の文字列に変換されセパレータで区切られています)。フラグは FileOpen() で使用されます。 |
FILE_TXT | 16 | 単純なテキストファイル(CSV ファイルと同じですが、セパレータを考慮しません)。フラグは FileOpen() で使用されます。 |
FILE_ANSI | 32 | ANSIタイプ( 1 バイトのシンボル)の文字列。フラグは FileOpen() で使用されます。 |
FILE_UNICODE | 64 | UNICODE タイプ( 2 バイトのシンボル)の文字列。フラグは FileOpen() で使用されます。 |
FILE_SHARE_READ | 128 | 複数のプログラムからの読み込みのための共通のアクセス。フラグは FileOpen() で使用されますがファイルを開く時の FILE_WRITE 及び/または FILE_READ フラグは必要です。 |
FILE_SHARE_WRITE | 256 | 複数のプログラムからの書き込みのための共通のアクセス。フラグは FileOpen() で使用されますがファイルを開く時の FILE_WRITE 及び/または FILE_READ フラグは必要です。 |
FILE_REWRITE | 512 | FileCopy() 及び FileMove() 関数でのファイル上書きを可能にします。ファイルが存在し、書き込み用に開かれる必要があります。さもなければ、ファイルは開かれません。 |
FILE_COMMON | 4096 | 全てのクライアント端末の共有フォルダ内のファイルパス \Terminal\Common\Files。フラグは FileOpen()、FileCopy()、FileMove() 及び FileIsExist() 関数で使用されます。 |
delimiter
区切り文字
タブを使用したい場合は「'\t'」
codepage
【参考】MQL5公式ページ
定数 | 値 | 説明 |
---|---|---|
CP_ACP | 0 | 現在の Windows ANSI コードページ。 |
CP_OEMCP | 1 | 現在のシステムの OEM コードページ。 |
CP_MACCP | 2 | 現在のシステムの Macintosh コードページ。注意事項:現代の Macintosh コンピュータはエンコーディングに Unicode を使用しているため、この値は、主に以前に作成したプログラムコードで使用され、今は使用されていません。 |
CP_THREAD_ACP | 3 | 現在のスレッドの Windows ANSI コードページ。 |
CP_SYMBOL | 42 | シンボルコードページ。 |
CP_UTF7 | 65000 | UTF-7 コードページ。 |
CP_UTF8 | 65001 | UTF-8 コードページ。 |
サンプルコード
ファイルを(作成&)開いて文字列を書き込んで閉じます。
FileWriteの詳細はこちら。(【MT5(MQL5)サンプルコード】FileWrite)
FileCloseの詳細はこちら。(【MT5(MQL5)サンプルコード】FileClose)
void OnInit()
{
string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
string FileAddress = "Filetest.txt";
int file = FileOpen(FileAddress, FILE_TXT | FILE_WRITE , '\t' , CP_ACP);
FileWrite(file,"Test","Test2");
FileWrite(file,"Test3"); //改行する場合はもう1回FileWriteを記述する
FileClose(file);
return;
}
結果
実行前
実行後
区切り文字はタブで、改行もされています。
【参考】MQL5公式ページ
コメント / Comments