MQL5ファイル操作関数辞典|FileOpen・FileRead・FileWrite・CSV出力の基本
MQL5でEAやインジケーターを開発する場合、ファイル操作は、CSVログ出力、設定ファイル読み込み、外部制御ファイル、検証結果の保存、バックテスト記録などでよく使います。
特に、FileOpen、FileClose、FileReadString、FileWrite、FileWriteString、FileIsExist、FileDelete、FolderCreate、FILE_CSV、FILE_COMMON、文字コード、区切り文字、保存先の違いは、MQL5開発で重要な確認項目です。
この記事では、MQL5のファイル操作関数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どの保存先・戻り値・エラー・ログを確認するかを整理するための記事です。
注意:この記事はMQL5開発・EA動作確認・ログ保存・CSV出力・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
MQL5のファイル操作と保存先
MQL5のファイル操作では、どのファイルを開くかだけでなく、どこに保存されるかを理解することが重要です。保存先を誤ると、CSVを出力しているつもりでも見つからない、バックテストでは保存されるのにリアル環境では見つからない、複数端末で共有できない、といった問題が起きます。
| 保存先 | 意味 | 主な用途 | 注意点 |
|---|---|---|---|
| 通常のFilesフォルダ | 各MT5データフォルダ内のFiles | EAごとのCSVログ、設定ファイル、検証結果 | 端末ごと、テスター環境ごとに保存先が変わります。 |
| Commonフォルダ | 複数端末で共通利用できる共有フォルダ | 複数MT5間のファイル共有、共通ログ、外部連携ファイル | FILE_COMMON指定が必要です。 |
| Strategy Tester用フォルダ | バックテスト実行時に使われるテスター側保存先 | バックテストログ、検証CSV、テスター用入力ファイル | LIVE環境のFilesフォルダとは別に扱います。 |
| 外部共有フォルダ | MQL5標準のFiles外で管理する外部領域 | ローカルAgentや外部アプリとの連携 | MQL5の通常ファイルサンドボックス制約を確認します。 |
FilesフォルダとCommonフォルダ
MQL5では、通常のFilesフォルダと、FILE_COMMONを指定したCommonフォルダを分けて扱います。
| 区分 | 指定方法 | 使う場面 | 失敗時の確認 | 関連ログ |
|---|---|---|---|---|
| 通常Files | FileOpenでFILE_COMMONを指定しない | EA単体のログ保存、CSV出力、設定ファイル読み込み | データフォルダ、MQL5\Files、テスター側Files | FILE_PATH、FILE_OPEN、CSV_WRITE |
| Common Files | FileOpenにFILE_COMMONを指定する | 複数端末共有、コピーEA、外部Agent連携、共通設定 | Commonフォルダ、FILE_COMMON指定、ファイル名 | COMMON_FILE_OPEN、FILE_COMMON_PATH |
| Tester Files | Strategy Tester実行時のFiles領域 | バックテスト中のCSV出力、検証ログ | テスター用保存先、最適化時の出力制限、ログ量 | TESTER_FILE_OPEN、BT_CSV_WRITE |
確認ポイント:CSVが見つからない場合は、FileOpenの戻り値だけでなく、通常Files、FILE_COMMON、Strategy Tester側Filesのどこに出力しているかを確認してください。
FileOpen
FileOpenは、ファイルを開いてハンドルを取得する関数です。MQL5のファイル操作は、FileOpenで有効なハンドルを取得できていることが前提です。
FileOpenが失敗した状態でFileWriteやFileReadStringを実行しても、期待どおりに読み書きできません。FileOpenの戻り値、flags、保存先、GetLastErrorを確認することが重要です。
| 項目 | 内容 |
|---|---|
| 主な用途 | CSVファイル、テキストファイル、ログファイル、設定ファイルを開く |
| 主な確認値 | file handle、INVALID_HANDLE、flags、file name、GetLastError |
| よくある失敗 | 保存先違い、flags不備、ファイル名不正、フォルダ未作成、権限、ファイルロック |
| 確認ログ | FILE_OPEN、FILE_OPEN_FAIL、FILE_PATH、FILE_FLAGS |
FileOpenでよく使うflags
| flag | 役割 | 使う場面 | 注意点 |
|---|---|---|---|
| FILE_READ | 読み込み用に開く | 設定ファイル、CSV、外部制御ファイルの読み込み | 書き込みはできません。 |
| FILE_WRITE | 書き込み用に開く | CSVログ、検証結果、状態保存 | 既存内容の扱いに注意します。 |
| FILE_CSV | CSV形式で扱う | FileWriteで列形式のログを保存する | 区切り文字やExcel表示を確認します。 |
| FILE_TXT | テキスト形式で扱う | 1行文字列ログ、自由形式ログ | CSV列管理とは別に扱います。 |
| FILE_ANSI | ANSI文字コードで扱う | Excelや外部ツールとの互換を確認する場合 | 文字化け確認が必要です。 |
| FILE_COMMON | Commonフォルダを使う | 複数端末共有、外部Agent連携 | 通常Filesとは保存先が変わります。 |
FileOpenで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| file name | ファイル名、拡張子、サブフォルダ | 保存先違いやファイル名違いを防ぐため |
| flags | FILE_READ、FILE_WRITE、FILE_CSV、FILE_COMMONなど | 読み込み用か書き込み用か、保存先がどこかを判定するため |
| delimiter | CSVの区切り文字 | 列ズレやExcel表示崩れを防ぐため |
| handle | INVALID_HANDLEではないか | 無効ハンドルでは読み書きできないため |
| GetLastError | FileOpen失敗時のエラー | 保存先、権限、flags不備などの原因調査に必要なため |
FileClose
FileCloseは、FileOpenで開いたファイルを閉じる関数です。ファイル操作後は、ハンドルを閉じることで書き込み内容の確定やファイルロック解除につながります。
| 項目 | 内容 |
|---|---|
| 主な用途 | 開いたファイルを閉じる、書き込み終了、読み込み終了、リソース解放 |
| 主な確認値 | file handle、closeタイミング、異常終了時の扱い |
| よくある失敗 | close漏れ、handle再利用、ファイルロック、異常終了時の未反映 |
| 確認ログ | FILE_CLOSE、FILE_CLEANUP、DEINIT_FILE_CLOSE |
FileWrite / FileWriteString
FileWriteとFileWriteStringは、ファイルへデータを書き込むために使います。CSVログではFileWrite、自由形式の文字列ログではFileWriteStringを使う場面が多くなります。
| 関数 | 役割 | 保存先 | 使う場面 | 失敗時の確認 | 関連ログ |
|---|---|---|---|---|---|
| FileWrite | 値をCSV列として書き込む | 通常Files / Common / Tester Files | 注文ログ、決済ログ、サイン履歴、検証CSV | handle、flags、列数、FileOpen失敗、保存先 | CSV_WRITE、FILE_WRITE_ROW |
| FileWriteString | 文字列をそのまま書き込む | 通常Files / Common / Tester Files | 自由形式ログ、JSON風ログ、テキスト出力 | handle、改行、文字コード、書き込みタイミング | TXT_WRITE、FILE_WRITE_STRING |
CSVログ出力で残すとよい項目
| 列 | 内容 | 用途 |
|---|---|---|
| time | 出力時刻、サーバー時刻 | ログ追跡、日次集計 |
| symbol | 銘柄 | 銘柄別確認 |
| timeframe | 時間足 | 検証条件確認 |
| event | イベント名 | ORDER、SIGNAL、ERROR、NOTIFYなどの分類 |
| ticket | order / position / deal ticket | 取引追跡 |
| magic | Magic Number | EA別・ロジック別管理 |
| retcode | TRADE_RETCODEなど | 注文結果確認 |
| error | GetLastErrorなど | 失敗理由確認 |
| message | 補足説明 | 人が読むための確認情報 |
FileReadString
FileReadStringは、ファイルから文字列を読み込むための関数です。CSVや外部設定ファイル、状態ファイルを読み込む場合に使います。
読み込みでは、ファイルが存在するか、列数が期待どおりか、空行がないか、文字コードが合っているかを確認します。
| 項目 | 内容 |
|---|---|
| 主な用途 | CSV設定、外部制御ファイル、状態ファイル、テキストログの読み込み |
| 主な確認値 | 読み込んだ文字列、列数、空行、区切り文字、FileIsEnding |
| よくある失敗 | 文字化け、区切り文字違い、列ズレ、ファイル未存在、読み込みflags不備 |
| 確認ログ | FILE_READ、CSV_READ、CSV_PARSE、FILE_READ_FAIL |
読み込み時に確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| ファイル存在 | FileIsExistで存在確認 | 存在しないファイルを読みに行く失敗を切り分けるため |
| 読み込みflags | FILE_READ、FILE_CSV、FILE_TXTなど | 読み込み形式を明確にするため |
| 文字コード | ANSI、UTF-8相当、Excel表示 | 日本語や記号の文字化けを防ぐため |
| 区切り文字 | カンマ、セミコロン、タブなど | 列ズレを防ぐため |
| ヘッダー | 1行目を列名として扱うか | データ行とヘッダー行を混同しないため |
| 空欄 | 空列や空行の扱い | 列数不足や変換エラーを防ぐため |
FileIsExist / FileDelete / FolderCreate
FileIsExist、FileDelete、FolderCreateは、ファイルやフォルダの存在確認、削除、作成に使います。ログ出力や設定ファイル読み込みでは、書き込み前・読み込み前に存在確認を行うと、不具合を切り分けやすくなります。
| 関数 | 役割 | 保存先 | 使う場面 | 失敗時の確認 | 関連ログ |
|---|---|---|---|---|---|
| FileIsExist | ファイルの存在確認 | 通常Files / Common / Tester Files | 読み込み前、削除前、初期化時 | FILE_COMMON指定、ファイル名、保存先 | FILE_EXISTS、FILE_MISSING |
| FileDelete | ファイル削除 | 通常Files / Common / Tester Files | 古い一時ファイル削除、再生成前のcleanup | ファイル使用中、保存先違い、権限 | FILE_DELETE、FILE_DELETE_FAIL |
| FolderCreate | フォルダ作成 | 通常Files / Common / Tester Files | logs、reports、snapshotsなどのフォルダ作成 | 既存フォルダ、相対パス、FILE_COMMON指定 | FOLDER_CREATE、FOLDER_READY |
FILE_CSV
FILE_CSVは、CSV形式としてファイルを扱うためのflagです。FileWriteを使うと、指定した区切り文字に従って列形式で値を書き出しやすくなります。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| 区切り文字 | カンマ、セミコロン、タブなど | Excelや外部ツールで開いた時の列分割に影響します。 |
| 列数 | 各行で同じ列数にする | 列ズレを防ぐため、ヘッダーとデータ行の列数を合わせます。 |
| ヘッダー | 先頭行に列名を出すか | 後からログを確認しやすくなります。 |
| 改行 | 1イベント1行にするか | 検証・集計時に扱いやすくなります。 |
| 文字コード | 日本語を含む場合の表示 | 文字化けしないか確認します。 |
FILE_COMMON
FILE_COMMONは、Commonフォルダを使うためのflagです。複数のMT5端末、外部Agent、コピーEA、共通設定ファイルなどで同じファイルを使いたい場合に検討します。
| 使う場面 | 内容 | 注意点 |
|---|---|---|
| 複数端末共有 | 複数MT5から同じファイルを参照する | 同時書き込みや競合に注意します。 |
| 外部Agent連携 | 外部アプリとMQL5でファイルを共有する | 読み書きタイミング、ファイルロック、更新間隔を確認します。 |
| コピーEA連携 | Master / Slave間でファイルを使う | 遅延、破損、読み込み途中のファイルに注意します。 |
| 共通ログ | 複数EAのログを共通フォルダへ出す | ファイル名の衝突、列構成の統一が必要です。 |
文字コードと区切り文字
CSV出力では、文字コードと区切り文字が重要です。MQL5側では正しく書き込めていても、Excelや外部ツールで開いた時に文字化けや列ズレが発生する場合があります。
| 項目 | 確認すること | よくある問題 | 対応方針 |
|---|---|---|---|
| 文字コード | 日本語、記号、改行の表示 | 文字化け、記号崩れ | 外部ツールで開いた表示を確認します。 |
| 区切り文字 | カンマ、セミコロン、タブ | 列が分かれない、列がずれる | 読み込み側と同じ区切り文字にします。 |
| 小数点 | 価格や損益の小数点 | 地域設定で表示が変わる | 数値はログ仕様として桁数を揃えます。 |
| 改行 | 1行1イベントか | 1つのログが複数行に割れる | message列に改行を入れない設計にします。 |
| 引用符 | カンマを含む文字列の扱い | CSV列ズレ | ログ本文にカンマを入れすぎないようにします。 |
バックテスト時の保存先
Strategy Testerでは、通常稼働時と保存先が異なる場合があります。バックテストでCSVが出力されない、または見つからない場合は、テスター側のFiles領域、FILE_COMMON指定、最適化時の出力制限を確認します。
| 状況 | 確認すること | 注意点 |
|---|---|---|
| バックテストでCSVが見つからない | Tester用Filesフォルダ、FILE_COMMON指定 | リアル環境のFilesフォルダとは別に確認します。 |
| 最適化でCSVが多すぎる | 出力頻度、ファイル名、パス | 最適化回数分の大量ファイルに注意します。 |
| テストが重い | 毎tick書き込み、Print過多、FileFlush過多 | ログ抑制やイベント単位出力を検討します。 |
| LIVEとBTで出力が違う | テスター条件、保存先、外部通信制約 | BT用ログとLIVE用ログを分けて確認します。 |
CSV出力の基本設計
CSVログを後から検証に使う場合は、列構成を固定し、1行1イベントで出力すると扱いやすくなります。
| 設計項目 | 内容 | 確認ポイント |
|---|---|---|
| ファイル名 | EA名、symbol、日付、用途を含める | 複数EAや複数銘柄で衝突しないようにします。 |
| ヘッダー | 列名を先頭行に出す | 後からExcelやPythonで確認しやすくなります。 |
| 時刻 | TimeCurrent、bar time、出力時刻 | どの時刻basisか列名で分かるようにします。 |
| イベント種別 | SIGNAL、ORDER、ERROR、NOTIFY、STATUSなど | ログを絞り込みやすくします。 |
| 戻り値 | GetLastError、retcode、copy countなど | 失敗理由を後から確認できます。 |
| 出力頻度 | 毎tick、状態変化時、注文時、決済時、一定間隔 | 毎tick出力は重くなりやすいため注意します。 |
EA利用者向けの確認ポイント
EAやツールがCSVログを出力する場合、ファイルがどこに保存されるか、どのタイミングで出力されるか、何を記録しているかを確認してください。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・バージョン | 設置しているEA名と版 | ログ仕様を特定するため |
| 保存先 | 通常Files、FILE_COMMON、Tester Files | CSVが見つからない原因を切り分けるため |
| ファイル名 | CSV名、日付、symbol、用途 | 出力対象を確認するため |
| 出力タイミング | 注文時、決済時、エラー時、一定間隔など | 出力されないのが正常か不具合かを分けるため |
| Expertsログ | FileOpen、FileWrite、FileClose、GetLastError | ファイル操作の成否確認に使います。 |
| Journalログ | 端末側ログ、テスター状態 | バックテストや端末状態の確認に使います。 |
| スクリーンショット | Filesフォルダ、Expertsログ、設定画面 | 保存先とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、ファイル操作をEA本体の判定処理と分けて扱うことが重要です。ログ出力失敗、CSV保存失敗、外部ファイル読み込み失敗を、売買判定そのものと混同しないようにします。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| file open | FileOpen、flags、保存先 | INVALID_HANDLEとGetLastErrorを確認します。 | FILE_OPEN、FILE_OPEN_FAIL |
| csv write | FileWrite、列数、ヘッダー | 列構成を固定し、出力頻度を制御します。 | CSV_WRITE、FILE_WRITE_ROW |
| text write | FileWriteString、改行、文字コード | 自由形式ログは解析しにくくなる場合があります。 | TXT_WRITE、FILE_WRITE_STRING |
| csv read | FileReadString、StringSplit、列数 | 空欄、列ズレ、ヘッダーをvalidationします。 | CSV_READ、CSV_PARSE |
| file cleanup | FileClose、FileDelete、FolderCreate | OnDeinitや再初期化時の後始末を確認します。 | FILE_CLOSE、FILE_DELETE、FOLDER_CREATE |
| tester output | Strategy Tester保存先、出力頻度 | BT速度低下や大量ファイル生成に注意します。 | BT_CSV_WRITE、TESTER_FILE_OPEN |
実装時の注意点
- FileOpenの戻り値がINVALID_HANDLEではないか確認する
- FileOpen失敗時はGetLastErrorを出す
- FILE_COMMON指定の有無をログに残す
- 保存先を通常Files、Common、Tester Filesで分けて確認する
- CSVのヘッダーとデータ行の列数を揃える
- 文字コードと区切り文字を読み込み側と合わせる
- 毎tickでFileOpen / FileCloseを繰り返しすぎない
- 毎tickでCSV出力しすぎるとバックテストが重くなる
- 外部ファイル読み込み時は列数validationを行う
- Webhook URL、GAS URL、APIキー、認証トークンをCSVへ出力しない
ファイル操作関数・定数の辞典表
| 関数/定数 | 役割 | 保存先 | 使う場面 | 失敗時の確認 | 関連ログ |
|---|---|---|---|---|---|
| FileOpen | ファイルを開いてhandleを取得する | 通常Files / Common / Tester Files | CSV出力、設定読み込み、ログ保存 | INVALID_HANDLE、flags、GetLastError、保存先 | FILE_OPEN、FILE_OPEN_FAIL |
| FileClose | ファイルを閉じる | 通常Files / Common / Tester Files | 読み書き終了、OnDeinit、cleanup | close漏れ、handle再利用、ファイルロック | FILE_CLOSE、DEINIT_FILE_CLOSE |
| FileReadString | 文字列を読み込む | 通常Files / Common / Tester Files | CSV設定、外部制御、テキスト読み込み | 文字化け、列ズレ、空欄、読み込みflags | FILE_READ、CSV_READ |
| FileWrite | CSV列として値を書き込む | 通常Files / Common / Tester Files | 注文ログ、決済ログ、サイン履歴、検証CSV | handle、列数、保存先、FileOpen失敗 | CSV_WRITE、FILE_WRITE_ROW |
| FileWriteString | 文字列をそのまま書き込む | 通常Files / Common / Tester Files | テキストログ、自由形式ログ | 文字コード、改行、handle、書き込みタイミング | TXT_WRITE、FILE_WRITE_STRING |
| FileIsExist | ファイル存在を確認する | 通常Files / Common / Tester Files | 読み込み前、削除前、初期化時 | FILE_COMMON指定、ファイル名、保存先 | FILE_EXISTS、FILE_MISSING |
| FileDelete | ファイルを削除する | 通常Files / Common / Tester Files | 一時ファイル削除、古いログ削除、再生成前 | ファイル使用中、保存先違い、権限 | FILE_DELETE、FILE_DELETE_FAIL |
| FolderCreate | フォルダを作成する | 通常Files / Common / Tester Files | logs、reports、snapshotsフォルダ作成 | 既存フォルダ、相対パス、FILE_COMMON指定 | FOLDER_CREATE、FOLDER_READY |
| FILE_CSV | CSV形式でファイルを扱うflag | 通常Files / Common / Tester Files | 列形式のログ出力、CSV読み込み | 区切り文字、列数、文字化け | CSV_MODE、CSV_PARSE |
| FILE_COMMON | Commonフォルダを使うflag | Common Files | 複数端末共有、外部Agent連携、共通ログ | 通常Filesとの保存先違い、同時書き込み | FILE_COMMON_PATH、COMMON_FILE_OPEN |
| 文字コード | 日本語や記号の表示に関係する形式 | 出力ファイル全般 | Excel確認、外部ツール連携、CSV読み込み | 文字化け、記号崩れ、BOM混入 | ENCODING_CHECK、CSV_OPEN_CHECK |
| 区切り文字 | CSV列を分ける文字 | CSVファイル | カンマ、セミコロン、タブ区切り | 列ズレ、読み込み側との不一致 | DELIMITER_CHECK、CSV_COLUMN_CHECK |
開発依頼前に整理する情報
ファイル操作・CSVログ出力まわりの不具合調査や改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | CSV出力、ログ保存、設定読み込み、外部制御など | 読み込みか書き込みかを分けるため |
| 保存先 | 通常Files、FILE_COMMON、Tester Files | CSVが見つからない原因を切り分けるため |
| ファイル名 | CSV名、拡張子、サブフォルダ | 出力対象・読み込み対象を特定するため |
| FileOpen flags | FILE_READ、FILE_WRITE、FILE_CSV、FILE_COMMONなど | 読み書き形式と保存先を確認するため |
| 文字コード・区切り文字 | 日本語表示、カンマ、タブ、セミコロンなど | 文字化けや列ズレを確認するため |
| Expertsログ | FileOpen、FileWrite、FileReadString、GetLastError | ファイル操作の成否を追うため |
| Journalログ | 端末側ログ、テスター状態 | バックテストや端末状態の確認に使うため |
| CSV実ファイル | 出力されたCSV、読み込み対象CSV | 列数、ヘッダー、文字コードを確認するため |
| 再現手順 | どの操作・条件で発生したか | OnInit、OnTick、OnTimer、OnDeinitなどの発生箇所を特定するため |
送ってはいけない情報:口座パスワード、投資家パスワード、Webhook URL、GAS URL、APIキー、認証トークン、口座番号の全桁、個人情報は、そのまま送らないでください。必要に応じて必ずマスクしてください。
関連するMQL5技術辞典
ファイル操作やCSVログ出力の確認では、関数全体、エラーコード、時系列取得、注文処理、チャート表示、列挙型、標準ライブラリの理解も関係します。関連するMQL5技術辞典もあわせて確認してください。
| 技術辞典 | 確認できる内容 | リンク |
|---|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest、Strategy Tester関連エラーを確認できます。 | MQL5エラーコード辞典 |
| MQL5関数辞典 | EA・インジケーター開発で使う主要関数を、目的別・確認ログ別に確認できます。 | MQL5関数辞典 |
| MQL5注文関数・取引構造体辞典 | OrderSend、OrderCheck、MqlTradeRequest、MqlTradeResult、TRADE_RETCODEなどを確認できます。 | MQL5注文関数・取引構造体辞典 |
| MQL5ポジション・注文・約定・履歴用語辞典 | Order、Position、Deal、History、ticket、magic、commentなど、取引管理で混同しやすい用語を確認できます。 | MQL5ポジション・注文・約定・履歴用語辞典 |
| MQL5インジケーター関数辞典 | iCustom、CopyBuffer、SetIndexBuffer、OnCalculate、IndicatorRelease、buffer index、shiftなどを確認できます。 | MQL5インジケーター関数辞典 |
| MQL5時系列・価格取得関数辞典 | CopyRates、CopyClose、iClose、iTime、SymbolInfoDouble、TimeCurrentなどを確認できます。 | MQL5時系列・価格取得関数辞典 |
| MQL5チャートオブジェクト辞典 | ObjectCreate、ObjectSetInteger、ObjectSetString、OBJ_LABEL、OBJ_BUTTON、OnChartEventなどを確認できます。 | MQL5チャートオブジェクト辞典 |
| MQL5列挙型・定数辞典 | ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ORDER_FILLING、POSITION_TYPE、SymbolInfo系定数などを確認できます。 | MQL5列挙型・定数辞典 |
| MQL5標準ライブラリ辞典 | CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoなどを確認できます。 | MQL5標準ライブラリ辞典 |
確認ポイント:ファイル操作では、FileOpenの戻り値、flags、保存先、FILE_COMMONの有無、GetLastError、文字コード、区切り文字、CSV列数、バックテスト時の保存先をセットで確認してください。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5ファイル操作・CSVログ出力完全ガイド | FileOpen、FileWrite、CSV出力、FILE_COMMON、保存先確認に使えます。 |
| MQL5デバッグ・ログファースト開発完全ガイド | Expertsログ、Journalログ、CSVログ、再現条件整理に使えます。 |
| MQL5 WebRequest・JSON・外部API実装完全ガイド | 外部連携、Webhook、GAS、API連携とログ確認に使えます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
| EAのログを問い合わせ前に確認する方法 | 問い合わせ前のExpertsログ、Journalログ、CSVログ確認に使えます。 |
FAQ
FileOpenが失敗する場合は何を確認しますか?
FileOpenの戻り値がINVALID_HANDLEではないか、flags、ファイル名、保存先、FILE_COMMON指定、フォルダ有無、GetLastErrorを確認してください。
CSVが見つからない場合はどこを確認しますか?
通常Filesフォルダ、FILE_COMMONのCommonフォルダ、Strategy Tester側Filesフォルダを分けて確認してください。バックテストとリアル環境では保存先が異なる場合があります。
FILE_COMMONはいつ使いますか?
複数MT5間でファイルを共有したい場合、外部Agentと連携したい場合、共通設定や共通ログを扱いたい場合に使います。ただし、同時書き込みやファイル競合に注意が必要です。
FileWriteとFileWriteStringは何が違いますか?
FileWriteはCSV列として値を書き出す用途に向いています。FileWriteStringは文字列をそのまま書く用途に向いています。CSVとして後から集計したい場合は、列構成を決めてFileWriteを使うと扱いやすくなります。
CSVが文字化けする場合は何を確認しますか?
文字コード、FILE_ANSI指定、Excel側の読み込み方式、区切り文字、日本語や記号の有無を確認してください。外部ツールで開く場合は、そのツール側の文字コード設定も確認します。
CSVの列がずれる場合は何を確認しますか?
区切り文字、ヘッダーとデータ行の列数、message列内のカンマ、空欄、改行、引用符の扱いを確認してください。
バックテストでCSV出力すると重くなりますか?
出力頻度が高い場合は重くなることがあります。毎tick出力、毎回FileOpen / FileClose、過剰なFileFlush、大量ファイル生成はバックテスト速度に影響します。
外部ファイルからEA設定を読み込む場合は何に注意しますか?
ファイル存在、列数、型変換、空欄、文字コード、区切り文字、読み込み頻度、通信・更新タイミング、読み込み失敗時のデフォルト動作を確認してください。
開発依頼前に何を整理すればよいですか?
EA名、インジケーター名、バージョン、保存先、ファイル名、FileOpen flags、CSV実ファイル、Expertsログ、Journalログ、再現手順を整理してください。Webhook URL、GAS URL、APIキー、認証トークン、口座番号などは必ずマスクしてください。
この記事にない項目はどのように確認すればよいですか?
まず公式リファレンス、MetaEditorのコンパイル結果、Expertsログ、Journalログ、実際の保存先、CSV実ファイルを確認してください。ファイル操作が関係する場合は、保存先、flags、GetLastError、文字コード、区切り文字を整理して確認します。
まとめ
MQL5のファイル操作では、FileOpen、FileClose、FileReadString、FileWrite、FileWriteString、FileIsExist、FileDelete、FolderCreate、FILE_CSV、FILE_COMMON、文字コード、区切り文字、保存先を分けて確認することが重要です。
CSVログが出力されない場合や見つからない場合は、通常Filesフォルダ、Commonフォルダ、Strategy Tester側Filesフォルダを分けて確認してください。
CSV出力では、ヘッダー、列数、区切り文字、文字コード、出力頻度、FileClose、FileFlush、バックテスト時の負荷に注意します。後から検証に使う場合は、1行1イベントで列構成を固定すると扱いやすくなります。
不具合調査や開発依頼を行う場合は、EA名、インジケーター名、バージョン、保存先、ファイル名、FileOpen flags、CSV実ファイル、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。

