バイナリファイルの読み書き(ファイル操作の応用)|MQL4ファイル操作の基本

2024年10月1日

執筆者

佐川直弘(株式会社トリロジー取締役)

バイナリファイルの読み書き(ファイル操作の応用)

MQL4では、バイナリファイルを操作することで、高速かつ効率的にデータを扱うことができます。ここでは、`FileReadArray`関数と`FileWriteArray`関数を使用してバイナリデータを読み書きする方法を説明します。

FileReadArray関数とFileWriteArray関数
FileReadArray関数は、バイナリファイルから配列にデータを読み込むために使用します。同様に、FileWriteArray関数は、配列のデータをバイナリファイルに書き込むために使用します。
構文:
int FileReadArray(int handle, void &array[]);
int FileWriteArray(int handle, void &array[]);
例: バイナリデータの取り扱い方法
double dataToWrite[] = {1.1, 2.2, 3.3};
double dataToRead[3];
バイナリファイルにデータを書き込む
int handle = FileOpen(“data.bin", FILE_WRITE|FILE_BIN);
if (handle > 0) {
    FileWriteArray(handle, dataToWrite);
    FileClose(handle);
} else {
    Print(“ファイルを開けませんでした");
}
バイナリファイルからデータを読み込む
handle = FileOpen(“data.bin", FILE_READ|FILE_BIN);
if (handle > 0) {
    FileReadArray(handle, dataToRead);
    FileClose(handle);
    Print(“読み込んだデータ: “, DoubleToStr(dataToRead[0], 2), “, “, DoubleToStr(dataToRead[1], 2), “, “, DoubleToStr(dataToRead[2], 2));
} else {
    Print(“ファイルを開けませんでした");
}

CSVファイルの操作

CSVファイルは、データの保存や読み込みに便利な形式です。ここでは、`FileReadString`と`FileWriteString`を使用して、CSV形式のデータを操作する方法を説明します。

FileReadStringとFileWriteStringの活用
FileReadString関数は、ファイルから1行ずつ文字列を読み込みます。一方、FileWriteString関数は、文字列をファイルに1行ずつ書き込みます。
構文:
string FileReadString(int handle);
int FileWriteString(int handle, string text);
例: CSV形式でのデータ入出力
CSVファイルにデータを書き込む
int handle = FileOpen(“data.csv", FILE_WRITE|FILE_CSV);
if (handle > 0) {
    FileWriteString(handle, “Date,Price,Volume");
    FileWriteString(handle, “2024-06-30,145.23,1000");
    FileClose(handle);
} else {
    Print(“CSVファイルを開けませんでした");
}
CSVファイルからデータを読み込む
handle = FileOpen(“data.csv", FILE_READ|FILE_CSV);
if (handle > 0) {
    while (!FileIsEnding(handle)) {
        string line = FileReadString(handle);
        Print(line);
    }
    FileClose(handle);
} else {
    Print(“CSVファイルを開けませんでした");
}

まとめ

以上が、MQL4におけるファイル操作の応用についての解説です。バイナリファイルとCSVファイルの操作を理解することで、より高度なデータ管理と分析が可能になります。次回は、さらに高度なファイル操作のテクニックについて紹介します。

MQL4

Posted by 佐川直弘