【MQL4定数】ファイル定数(FILE_○○)

【辞書】MQLリファレンス

ファイル定数(FILE_○○)

ファイル定数は、プログラムでファイルを開くときに使用されます。

ファイルを開くとき、いくつかの条件を指定することができます。

条件を指定することで、セキュリティを高めたり、ファイルを正しく読み込むことができるようになります。

ファイル定数は以下の関数で使用されます。

  • FileOpen関数:ファイルを開く
  • FileCopy関数:ファイルをコピーする
  • FileMove関数:ファイルを移動させる
  • FileIsExist関数:ファイルの存在を確認する

ファイル定数(FILE_○○)

定数説明
FILE_READファイルを読み込み可能で開く
FILE_WRITEファイルを書き込み可能で開く
FILE_BINバイナリファイルを開く
FILE_CSVCSVファイルを開く
FILE_TXTテキストファイルを開く
FILE_ANSIANSIファイルを開く
FILE_UNICODEUNICODEファイルを開く
FILE_SHARE_READ複数のプログラムから読み込み可能で開く
FILE_SHARE_WRITE複数のプログラムから書き込み可能で開く
FILE_REWRITEファイルを上書き可能で開く
FILE_COMMONファイルパス(\Terminal\Common\Files)

ファイル定数(FILE_○○)の使い方

ファイル定数は、主にFileOpen関数で使用します。

ファイルを開くときの条件を指定するために、ファイル定数を使います。

また、条件は複数指定することが可能です。

複数指定する場合は、FILE_READ | FILE_WRITE | FILE_CSV のように「|」でつなぐように記述してください。

例えば、以下のように使用します。

void OnInit() {
    //ファイル名
    const string filename = "test.csv";
    //ファイルハンドラ
    int filehandle;             

    //ファイルを開く(読み込み可能・書き込み可能・CSVファイル)
    filehandle = FileOpen( filename , FILE_READ | FILE_WRITE | FILE_CSV );
}

上記のように記述することで、ファイルを開くときに条件を指定することができます。

プログラム例

以下は、ファイル定数を使ってCSVファイルにデータを書き込み、その後読み込むサンプルプログラムです。

//+------------------------------------------------------------------+
//| ファイル定数を使ったサンプルプログラム                            |
//+------------------------------------------------------------------+
void OnInit()
{
    const string filename = "sample_data.csv";
    int filehandle;

    //--- CSVファイルに書き込み ---
    filehandle = FileOpen(filename, FILE_WRITE | FILE_CSV, ",");

    if(filehandle != INVALID_HANDLE)
    {
        // ヘッダーを書き込む
        FileWrite(filehandle, "日時", "通貨ペア", "Bid", "Ask");

        // データを書き込む
        FileWrite(filehandle, TimeToStr(TimeCurrent()), Symbol(), Bid, Ask);

        // ファイルを閉じる
        FileClose(filehandle);

        Print("ファイルへの書き込みが完了しました。");
    }
    else
    {
        Print("ファイルを開けませんでした。エラーコード: ", GetLastError());
    }

    //--- CSVファイルから読み込み ---
    filehandle = FileOpen(filename, FILE_READ | FILE_CSV, ",");

    if(filehandle != INVALID_HANDLE)
    {
        // ファイルの終わりまで読み込む
        while(!FileIsEnding(filehandle))
        {
            string col1 = FileReadString(filehandle);
            string col2 = FileReadString(filehandle);
            string col3 = FileReadString(filehandle);
            string col4 = FileReadString(filehandle);

            Print(col1, " | ", col2, " | ", col3, " | ", col4);
        }

        // ファイルを閉じる
        FileClose(filehandle);

        Print("ファイルの読み込みが完了しました。");
    }
    else
    {
        Print("ファイルを開けませんでした。エラーコード: ", GetLastError());
    }

    //--- FILE_COMMONを使った例 ---
    // 共通フォルダにテキストファイルを作成
    filehandle = FileOpen(filename, FILE_WRITE | FILE_TXT | FILE_COMMON);

    if(filehandle != INVALID_HANDLE)
    {
        FileWriteString(filehandle, "共通フォルダに書き込みました。\r\n");
        FileWriteString(filehandle, "このファイルは複数のターミナルからアクセスできます。\r\n");
        FileClose(filehandle);

        Print("共通フォルダへの書き込みが完了しました。");
    }

    //--- FILE_SHARE_READを使った例 ---
    // 他のプログラムからも読み込み可能な状態でファイルを開く
    filehandle = FileOpen(filename, FILE_READ | FILE_CSV | FILE_SHARE_READ, ",");

    if(filehandle != INVALID_HANDLE)
    {
        Print("共有読み込みモードでファイルを開きました。");
        FileClose(filehandle);
    }
}

上記のプログラムでは、以下の3つの処理を行っています。

  1. FILE_WRITE | FILE_CSV を使ってCSVファイルにデータを書き込む
  2. FILE_READ | FILE_CSV を使ってCSVファイルからデータを読み込む
  3. FILE_WRITE | FILE_TXT | FILE_COMMON を使って共通フォルダにテキストファイルを作成する

ファイル定数を組み合わせることで、用途に応じたファイル操作が可能になります。