この投稿文は次の言語で読めます: 日本語
概要
インジケーターの出力値を分析したい時や、売買履歴等を出力したい時にはファイル関数を使用して
テキストファイル等に結果を出力します。
MQL5 にもファイル関数が用意されており、それを利用して上記要件に対応することができます。
手順
大まかな流れとしては、FileOpen -> FileWrite -> FileClose で良いのですが、
単純にFileWrite -> FileClose するだけだと上書き扱いとなってしまい
インジケーターの値を順次追記する事ができず、常に最新の1レコード分のみをファイル出力するだけになってしまいますので、
FileSeek 関数で、ファイルポインタをファイル末尾に移動させてから書込を行います。
以下、サンプルです。
void output_file(int i, int rates_total){
string category = "";
string label_text = "";
int file_handle = FileOpen(output_directory_name + "//" + INDICATOR_NAME + "//" + file_name,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE) {
output_text = TimeToString(iTime(currency_pair_name, time_frame_current, i)) + ", " +
DoubleToString(rate_buffer[i], Digits()) + ", " +
DoubleToString(buffer[i], 0);
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, output_text );
FileFlush(file_handle);
FileClose(file_handle);
}
}