サンプルコード 一覧へ戻る

MQL5サンプルコード

【MT5(MQL5)サンプルコード】FileOpen

スポンサーリンク / Sponsored links

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 - 複数プログラムから書き込まれる
識別子説明
FILE_READ1ファイルは読み込むために開かれます。フラグは FileOpen() で使用されます。ファイルを開く際には FILE_WRITE 及び/または FILE_READ 仕様が必要です。
FILE_WRITE2ファイルは書き込むために開かれます。フラグは FileOpen() で使用されます。ファイルを開く際には FILE_WRITE 及び/または FILE_READ 仕様が必要です。
FILE_BIN4(文字列への変換文字列を含まない)バイナリ読み込み/書き込みモードです。フラグは FileOpen() で使用されます。
FILE_CSV8CSV ファイル(全ての要素が Unicode または ANSI の適切な型の文字列に変換されセパレータで区切られています)。フラグは FileOpen() で使用されます。
FILE_TXT16単純なテキストファイル(CSV ファイルと同じですが、セパレータを考慮しません)。フラグは FileOpen() で使用されます。
FILE_ANSI32ANSIタイプ( 1 バイトのシンボル)の文字列。フラグは FileOpen() で使用されます。
FILE_UNICODE64UNICODE タイプ( 2 バイトのシンボル)の文字列。フラグは FileOpen() で使用されます。
FILE_SHARE_READ128複数のプログラムからの読み込みのための共通のアクセス。フラグは FileOpen() で使用されますがファイルを開く時の FILE_WRITE 及び/または FILE_READ フラグは必要です。
FILE_SHARE_WRITE256複数のプログラムからの書き込みのための共通のアクセス。フラグは FileOpen() で使用されますがファイルを開く時の FILE_WRITE 及び/または FILE_READ フラグは必要です。
FILE_REWRITE512FileCopy() 及び FileMove() 関数でのファイル上書きを可能にします。ファイルが存在し、書き込み用に開かれる必要があります。さもなければ、ファイルは開かれません。
FILE_COMMON4096全てのクライアント端末の共有フォルダ内のファイルパス \Terminal\Common\Files。フラグは FileOpen()FileCopy()FileMove() 及び FileIsExist() 関数で使用されます。


delimiter

区切り文字

タブを使用したい場合は「'\t'」


codepage

定数説明
CP_ACP0現在の Windows ANSI コードページ。
CP_OEMCP1現在のシステムの OEM コードページ。
CP_MACCP2現在のシステムの Macintosh コードページ。注意事項:現代の Macintosh コンピュータはエンコーディングに Unicode を使用しているため、この値は、主に以前に作成したプログラムコードで使用され、今は使用されていません。
CP_THREAD_ACP3現在のスレッドの Windows ANSI コードページ。
CP_SYMBOL42シンボルコードページ。
CP_UTF765000UTF-7 コードページ。
CP_UTF865001UTF-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;
}

結果

実行前

実行後

区切り文字はタブで、改行もされています。

コメント / Comments

タイトルとURLをコピーしました