MQL5ファイル操作・CSVログ出力完全ガイド|Filesフォルダ・FileOpen・文字コードの基本
MQL5でEA、インジケーター、スクリプト、補助ツールを作成する場合、ファイル操作やCSVログ出力を使う場面があります。
たとえば、EAの動作ログをCSVへ保存する、インジケーターのサイン履歴を記録する、バックテスト結果を確認用に出力する、外部連携前にローカルファイルへ記録する、問い合わせ前に検証データを整理する、といった用途です。
ただし、MQL5のファイル操作では、保存先、Filesフォルダ、Commonフォルダ、バックテスト時の保存場所、FileOpenのモード、CSVの区切り文字、文字コード、文字化け、FileClose漏れなどで迷いやすい点があります。
この記事では、MQL5のFileOpen、FileWrite、FileReadString、FileClose、CSV出力、Filesフォルダ、Commonフォルダ、バックテスト時の保存先、文字コード、問い合わせ時に送るファイル・送ってはいけない情報を整理します。
このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、推奨ロット、推奨銘柄、特定ブローカー誘導を目的とした内容ではありません。
- MQL5ファイル操作を学ぶ理由
- 公式リファレンスとの違い
- MT5のFilesフォルダとCommonフォルダ
- バックテスト時のファイル保存先
- FileOpenの基本
- ファイルモードとフラグの考え方
- FileWriteとCSV出力
- FileRead系で読み込む時の注意
- 文字コードと文字化け
- 区切り文字とCSV形式
- ログ出力とCSV記録の違い
- EA設定・setファイルとの関係
- 外部連携前のローカル記録
- ファイル操作で出やすいエラー
- EA利用者向けの確認ポイント
- MQL5開発者向けの確認ポイント
- 検証担当者向けの確認ポイント
- 問い合わせ前に送るファイル
- 送ってはいけない情報
- MQL5ファイル操作・CSVログ出力チェック表
- 次に読む技術講座
- 次に確認するページ
- よくある質問
- まとめ
MQL5ファイル操作を学ぶ理由
MQL5のファイル操作は、単にファイルを保存するためだけのものではありません。
EAやインジケーターの検証、ログ確認、不具合調査、外部連携前の記録、運用履歴の整理、サイン履歴の保存など、実務上の確認作業と強く関係します。
| 用途 | ファイル操作が関係する場面 | 確認すること |
|---|---|---|
| EAログ保存 | 注文結果、スキップ理由、エラー理由をCSVへ記録する | 時刻、銘柄、Magic Number、理由、retcode |
| インジケーター記録 | サイン発生時刻やバッファ値を保存する | バッファ番号、shift、サイン値、確定足 |
| バックテスト検証 | テスター中の判定結果をCSVへ残す | 保存先、テスト期間、銘柄、時間足 |
| 外部連携前の確認 | Google SheetsやAPIへ送る前にローカルへ保存する | 列順、文字コード、送信前データ |
| 問い合わせ前整理 | ログ、CSV、setファイル、スクリーンショットを整理する | 送ってよい情報と隠すべき情報 |
MQL5のファイル操作を理解しておくと、EAやインジケーターの不具合調査で「何が起きたか」を後から確認しやすくなります。
一方で、口座番号、Webhook URL、GAS URL、APIキー、認証トークンなどを不用意にCSVやログへ出力すると、情報漏えいにつながる可能性があります。記録する情報と記録しない情報を分けることが重要です。
公式リファレンスとの違い
MQL5公式リファレンスでは、FileOpen、FileWrite、FileReadString、FileCloseなどの関数仕様を確認できます。
このページは公式リファレンスの代替ではありません。正確な引数、戻り値、利用可能なフラグ、細かな仕様は、実装時に公式リファレンスで確認してください。
この記事では、実務で迷いやすい次の点を中心に整理します。
- 通常チャートとバックテストで保存場所が違うことがある
- FilesフォルダとCommonフォルダの使い分け
- CSV出力時の列順、区切り文字、文字コード
- FileOpenに失敗した時の確認
- FileClose漏れやファイルロックの注意
- 問い合わせ時に送ってよいファイルと送ってはいけない情報
MT5のFilesフォルダとCommonフォルダ
MQL5のファイル操作では、保存先として主にFilesフォルダとCommonフォルダを意識します。
Filesフォルダは、基本的にそのMT5環境に紐づくファイル保存場所です。Commonフォルダは、同じPC内の複数MT5から共通で使いたい場合に関係します。
| 保存先 | 主な用途 | 向いているケース | 注意点 |
|---|---|---|---|
| Filesフォルダ | EAやインジごとのログ、CSV、設定補助ファイル | 単一MT5内で完結する記録 | 別MT5からは見えない場合がある |
| Commonフォルダ | 複数MT5間で共有したいファイル | コピーEA、複数端末の簡易連携、共通ログ | 共有範囲が広くなるためファイル名管理が重要 |
| Tester側のFiles | Strategy Tester実行中の出力 | バックテスト中のCSV記録 | 通常チャートのFilesとは場所が異なる場合がある |
Filesフォルダを使う場面
Filesフォルダは、EAやインジケーターが通常のファイル保存先として使うことが多い場所です。
EAごとのCSVログ、検証用の出力ファイル、サイン履歴、簡易レポートなどは、まずFilesフォルダへ保存する設計が分かりやすいです。
問い合わせ時に「CSVが保存されていない」と感じる場合は、まずMT5のデータフォルダ内にあるMQL5\Files相当の場所を確認してください。
Commonフォルダを使う場面
Commonフォルダは、同じPC内の複数MT5でファイルを共有したい場合に使われることがあります。
たとえば、複数MT5間で簡易データを共有する、コピーEAの中間ファイルを置く、複数環境から同じ記録を読む、といった用途です。
ただし、Commonフォルダは共有範囲が広くなるため、ファイル名、チャンネル名、口座識別、Magic Number、銘柄名などを適切に分けないと、別EAや別MT5のファイルと混ざる可能性があります。
バックテスト時のファイル保存先
Strategy TesterでEAを動かした場合、通常チャートで動かした時とファイル保存先が異なることがあります。
バックテスト中にCSVを出力したつもりでも、通常のFilesフォルダではなく、テスター側やエージェント側の保存領域に出力される場合があります。
| 実行環境 | 確認する保存先 | よくある誤解 |
|---|---|---|
| 通常チャート | MT5データフォルダ内のMQL5\Files | チャート実行時の保存先とテスター保存先を混同する |
| Strategy Tester | テスター側のFilesまたはAgent側の保存領域 | 通常のFilesに出ていないため保存失敗と判断してしまう |
| 最適化 | 複数Agentや複数パスの出力先 | 同じファイル名で上書き・競合する場合がある |
| Common指定 | 共通フォルダ | テスト結果と通常稼働結果が同じ場所に混ざる場合がある |
バックテストでCSVを使う場合は、ファイル名にEA名、銘柄、時間足、期間、テスト種別などを含めると、後から確認しやすくなります。
最適化で大量にファイルを出力すると、ファイル数が増えすぎたり、同名ファイルが上書きされたりする場合があります。最適化中のCSV出力は、必要性と保存量を確認してから使ってください。
FileOpenの基本
FileOpenは、MQL5でファイルを開くために使う関数です。
読み込み、書き込み、CSV、テキスト、バイナリ、Commonフォルダ指定、文字コードなど、用途に応じたモードやフラグを組み合わせて使います。
| 確認項目 | 内容 | 失敗時に見ること |
|---|---|---|
| ファイル名 | 開くファイル名 | 禁止文字、空文字、拡張子、パス |
| 読み書きモード | 読み込み、書き込み、追記など | FILE_READ / FILE_WRITEの指定 |
| 形式 | CSV、TXT、BINなど | FILE_CSV / FILE_TXTの使い分け |
| 保存先 | FilesかCommonか | FILE_COMMON指定の有無 |
| 文字コード | ANSI、Unicodeなど | 文字化け、Excelでの見え方 |
| 戻り値 | ファイルハンドル | INVALID_HANDLEかどうか |
FileOpenに失敗した場合は、GetLastErrorで直近エラーを確認します。ただし、エラーコードだけで原因を断定せず、ファイル名、保存先、モード、権限、既に開いているファイルの有無を合わせて確認してください。
ファイルモードとフラグの考え方
MQL5のFileOpenでは、用途に応じて複数のフラグを組み合わせます。
フラグの正確な仕様は公式リファレンスで確認する必要がありますが、実務上は「何をしたいのか」から選ぶと整理しやすくなります。
| 目的 | 関係しやすいフラグ | 確認ポイント |
|---|---|---|
| ファイルを読みたい | FILE_READ | 対象ファイルが存在するか |
| ファイルへ書きたい | FILE_WRITE | 既存ファイルを上書きするか |
| CSVとして扱いたい | FILE_CSV | 区切り文字と列順 |
| テキストとして扱いたい | FILE_TXT | 改行、文字コード、読み込み単位 |
| 複数MT5で共有したい | FILE_COMMON | ファイル名衝突と共有範囲 |
| 文字コードを指定したい | FILE_ANSI / FILE_UNICODEなど | Excelや外部ツールでの表示 |
| 共有読み書きを考慮したい | FILE_SHARE_READ / FILE_SHARE_WRITEなど | 別プロセスや別EAとの競合 |
よくある失敗は、読み込み用のファイルを開くつもりなのに書き込みモードで開く、CSVとして読みたいのにTXTとして扱う、Commonフォルダにあると思ってFilesフォルダを探す、といったものです。
FileWriteとCSV出力
FileWriteは、開いたファイルへデータを書き込むために使います。
CSV出力では、1行にどの項目をどの順番で保存するかが重要です。後からExcel、Google Sheets、Python、管理台帳などで読む場合、列順が安定している方が確認しやすくなります。
| 列名例 | 内容 | 確認用途 |
|---|---|---|
| time | 記録時刻 | 発生タイミングの確認 |
| symbol | 銘柄名 | サフィックスを含む対象確認 |
| timeframe | 時間足 | 再現条件の確認 |
| event | 記録イベント名 | ENTRY、SKIP、ERROR、SIGNALなどの分類 |
| reason | 理由 | なぜ処理されたか、なぜ見送ったか |
| value | 対象値 | サイン値、価格、スコアなど |
| result | 処理結果 | OK、NG、SKIP、ERRORなど |
| error | エラーコード | GetLastErrorやretcodeの確認 |
CSVを問い合わせ用に使う場合は、口座番号、Webhook URL、APIキー、認証トークンなどの実値を含めないようにしてください。
ログ確認では、CSVに保存した値と、Expertsログ、Journalログ、スクリーンショットを合わせて見ると、原因の切り分けがしやすくなります。
FileRead系で読み込む時の注意
MQL5では、FileReadStringなどを使ってファイルから文字列を読み込むことがあります。
外部設定ファイル、CSV、簡易パラメータ、EA間連携ファイルなどを読む場合、読み込み時の形式、区切り文字、空行、ヘッダー行、文字コードを確認する必要があります。
| 確認項目 | 内容 | よくある問題 |
|---|---|---|
| ファイル存在 | 読み込み対象があるか | 保存先違い、ファイル名違い |
| ヘッダー行 | 1行目に列名があるか | ヘッダーをデータとして読んでしまう |
| 区切り文字 | カンマ、タブ、セミコロンなど | 想定と違う区切りで列がずれる |
| 空行 | 途中や末尾に空行があるか | 空データを有効値として扱ってしまう |
| 文字コード | 読み込み時の文字コード | 日本語が文字化けする |
| 値の型 | 数値、文字列、bool、日時 | 変換失敗や初期値扱いになる |
外部ファイルをEAの動作制御に使う場合は、読み込み失敗時の挙動を明確にしてください。
たとえば、設定ファイルが読めない場合に新規エントリーを止めるのか、前回値を使うのか、デフォルト値へ戻すのかを決めておく必要があります。
文字コードと文字化け
CSVやログを日本語で保存する場合、文字コードによってExcelやテキストエディタで文字化けすることがあります。
MQL5側で出力したCSVが、MT5上では問題なくても、Excelで開いた時に文字化けすることがあります。これは、出力時の文字コード、開く側のソフト、OS環境、BOMの有無などが関係します。
| 症状 | 原因候補 | 確認すること |
|---|---|---|
| 日本語が文字化けする | 文字コードが開く側と合っていない | ANSI / Unicode / UTF-8系の扱い |
| Excelで列が分かれない | 区切り文字が想定と違う | カンマ、セミコロン、タブ |
| 先頭に変な文字が出る | BOMや不可視文字の影響 | 保存形式、ファイル先頭 |
| 一部の記号が崩れる | 特殊文字や機種依存文字 | 記号、全角文字、絵文字の使用有無 |
| 外部ツールで読めない | 改行コードやエスケープ不足 | 改行、ダブルクォート、カンマ含有文字 |
販売用・サポート用のCSVでは、列名や値を過度に日本語化しすぎるより、必要な列だけを安定した形式で出す方が確認しやすい場合があります。
日本語の説明はCSV内ではなく、マニュアルやチェック表へ分ける運用も有効です。
区切り文字とCSV形式
CSVはカンマ区切りの形式として使われることが多いですが、実務上は区切り文字、改行、文字列内のカンマ、ダブルクォートなどに注意が必要です。
| 項目 | 確認ポイント | 問題例 |
|---|---|---|
| 区切り文字 | カンマ、タブ、セミコロンのどれを使うか | Excelで列が分かれない |
| 列順 | 毎回同じ順番で出すか | 後から集計しにくい |
| ヘッダー | 1行目に列名を出すか | データだけでは意味が分からない |
| 文字列内カンマ | コメントや理由にカンマが含まれるか | 列がずれる |
| 改行 | 1イベント1行で出すか | 読み込み時に行が崩れる |
CSVを後で自動集計する場合は、自由文を増やしすぎない方が扱いやすくなります。
たとえば、reason列には長文説明ではなく、ENTRY_BLOCK、ORDER_FAIL、COPYBUFFER_FAIL、FILE_OPEN_FAILのような短い理由コードを入れ、必要な詳細はExpertsログへ出す方法があります。
ログ出力とCSV記録の違い
MQL5では、PrintやPrintFormatによるExpertsログ出力と、FileWriteによるCSV記録を使い分けます。
Expertsログは、開発中や不具合調査で時系列を追うのに向いています。CSVは、後から集計したり、表計算ソフトで確認したり、検証結果を一覧化したりするのに向いています。
| 項目 | Expertsログ | CSV記録 |
|---|---|---|
| 主な用途 | 動作状態、エラー、分岐理由の確認 | 集計、比較、検証記録、一覧化 |
| 確認場所 | MT5のExpertsタブ、ログファイル | FilesフォルダやCommonフォルダ |
| 形式 | 文章中心 | 列構造中心 |
| 向いている内容 | エラー理由、状態遷移、詳細説明 | 時刻、値、結果、件数、集計対象 |
| 注意点 | 出しすぎるとログが読みにくい | 列設計が悪いと後から使いにくい |
実務では、ExpertsログとCSV記録を併用すると確認しやすくなります。
たとえば、CSVには時刻、銘柄、イベント、結果、理由コードだけを保存し、詳細な説明やエラー内容はExpertsログへ出す形です。
EA設定・setファイルとの関係
CSVやログを確認する時は、setファイルも重要です。
同じEAでも、input設定が違えば、出力されるCSVやログの内容が変わります。検証や問い合わせでは、CSVだけでなく、その時に使っていたsetファイルも合わせて保存してください。
| 確認するもの | 理由 | 注意点 |
|---|---|---|
| setファイル | EAやインジの入力条件を再現するため | 認証情報やURLが含まれないか確認する |
| CSVファイル | 出力結果や検証値を確認するため | 列名、時刻、銘柄、期間を確認する |
| Expertsログ | 処理理由やエラーの時系列を確認するため | エラー前後を含める |
| スクリーンショット | 画面状態を確認するため | 口座番号や個人情報を隠す |
setファイルを送る前の確認は、MT5でEAのsetファイルを送る前に確認することも参考にしてください。
外部連携前のローカル記録
Google Sheets連携、Discord通知、外部API連携などを行う前に、まずローカルCSVへ記録して確認する方法があります。
外部連携は、WebRequest許可、URL、認証、HTTP応答、外部サービス側の権限など、確認点が多くなります。そのため、最初にローカルファイルへ正しいデータが出ているかを確認すると、原因を切り分けやすくなります。
| 段階 | 確認すること | 目的 |
|---|---|---|
| ローカルCSV出力 | 必要な値が正しい列順で出ているか | EA側データ生成の確認 |
| Expertsログ確認 | イベント、理由、エラーが追えるか | 処理経路の確認 |
| WebRequest送信 | HTTP応答、timeout、失敗理由 | 外部通信の確認 |
| 外部サービス側確認 | Google SheetsやDiscord側の受信状態 | 外部側の反映確認 |
外部連携の確認は、MT5外部連携・通知セキュリティガイドも参考にしてください。
ファイル操作で出やすいエラー
MQL5のファイル操作では、FileOpen失敗、FileRead失敗、FileWrite失敗、文字化け、保存先違い、ファイルロックなどが発生することがあります。
| 症状 | 原因候補 | 最初に確認すること |
|---|---|---|
| FileOpenに失敗する | ファイル名不正、保存先違い、権限、モード不一致 | ファイル名、フラグ、GetLastError |
| CSVが作られない | 保存先を見ていない、INVALID_HANDLE、条件未成立 | Files / Tester / Commonの場所 |
| CSVに何も書かれない | FileWrite未実行、FileFlushなし、FileClose前の確認 | ログ、書き込み条件、ファイルハンドル |
| 文字化けする | 文字コード不一致、Excel側の読み込み問題 | 文字コード、開くソフト、区切り文字 |
| 列がずれる | カンマを含む文字列、区切り文字違い | CSV列、理由文、ダブルクォート |
| ファイルが開いたままになる | FileClose漏れ、異常終了 | FileClose処理、エラー時の終了処理 |
| 最適化でファイルが混ざる | 同一ファイル名、複数パス同時出力 | ファイル名にpassや時刻を含める |
エラーコードの確認は、MQL5エラーコード辞典も参考にしてください。
EA利用者向けの確認ポイント
EAやインジケーターを使う側では、MQL5の関数名を詳しく知らなくても、保存先と送るべきファイルを整理できます。
- CSVが出力される設定になっているか
- どのフォルダへ保存される仕様か
- 通常チャートとバックテストのどちらで出力したか
- 出力ファイル名に日付や銘柄が含まれているか
- CSVが文字化けしていないか
- 口座番号や認証情報が含まれていないか
- setファイル、Expertsログ、Journalログと一緒に整理しているか
問い合わせ前には、CSVだけではなく、発生時刻、対象EA名、バージョン、銘柄名、時間足、setファイル、Expertsログ、Journalログも整理してください。
MQL5開発者向けの確認ポイント
MQL5開発者は、ファイル操作を単なる保存処理としてではなく、検証・保守・サポートの証跡として設計する必要があります。
| 設計項目 | 確認ポイント | 理由 |
|---|---|---|
| ファイル名 | EA名、銘柄、時間足、日付を含めるか | 後から対象を特定しやすくするため |
| 保存先 | FilesかCommonか | 単一MT5用か複数MT5共有かで変わるため |
| 列設計 | ヘッダー、列順、理由コード | 集計・比較しやすくするため |
| 文字コード | 開くソフトに合わせる | 文字化けを減らすため |
| FileClose | 正常時・異常時の両方で閉じる | ファイルロックや上限到達を避けるため |
| ログ連携 | CSVとExpertsログの役割を分ける | 調査時の情報過多を防ぐため |
| 機密情報 | URL、token、口座番号を出力しない | 情報保護のため |
FileOpen系の関数の役割は、MQL5関数辞書も参考にしてください。
検証担当者向けの確認ポイント
検証担当者は、CSVがあるかどうかだけでなく、そのCSVがどの条件で作られたかを確認する必要があります。
- 通常チャートかバックテストか
- 対象EA名とバージョン
- 銘柄名と時間足
- テスト期間
- 使用したsetファイル
- CSVの保存先
- CSVの列順とヘッダー
- Expertsログとの時刻整合
- 文字化けや列ずれの有無
- 送ってはいけない情報が含まれていないか
バックテストや検証環境の確認は、MT5検証・運用環境ガイドも確認してください。
問い合わせ前に送るファイル
MQL5のファイル操作やCSVログ出力について相談する場合は、状況に応じて次のファイルを整理してください。
| ファイル・情報 | 送る目的 | 注意点 |
|---|---|---|
| CSVファイル | 出力内容、列順、記録値の確認 | 口座番号やtokenが含まれていないか確認する |
| setファイル | EAやインジの入力条件を再現する | 認証情報やURLが含まれていないか確認する |
| Expertsログ | EA・インジ側の処理状況を確認する | エラー前後を含める |
| Journalログ | MT5端末側の状態を確認する | 接続、テスター、ファイル関連の前後を含める |
| スクリーンショット | 保存先や画面状態を確認する | 口座番号や個人情報を隠す |
| 再現条件メモ | どの操作で発生したかを確認する | 銘柄、時間足、日時、テスト条件を含める |
開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも参考にしてください。
送ってはいけない情報
CSV、setファイル、ログ、スクリーンショットを送る前に、次の情報が含まれていないか確認してください。
- 口座番号の全桁
- 投資家パスワード
- マスターパスワード
- Webhook URLの実値
- GAS URLの実値
- APIキー
- 認証トークン
- 外部サービスの秘密情報
- 個人情報
- 第三者の個人情報が入ったログ
問い合わせが必要な場合は、必要情報を整理したうえで、不具合報告・サポート依頼を確認してください。
MQL5ファイル操作・CSVログ出力チェック表
- □ 何をCSVへ保存するか整理した
- □ 保存先がFilesフォルダかCommonフォルダか確認した
- □ 通常チャートとバックテストの保存先の違いを確認した
- □ FileOpenのモードとフラグを確認した
- □ FileOpen失敗時にGetLastErrorを確認できるようにした
- □ CSVのヘッダー行を用意した
- □ CSVの列順を固定した
- □ 文字化けしないか確認した
- □ 区切り文字で列がずれないか確認した
- □ FileClose漏れがないか確認した
- □ バックテスト時にファイル名が競合しないか確認した
- □ ExpertsログとCSVの役割を分けた
- □ setファイルと一緒に保存した
- □ Webhook URL、GAS URL、APIキー、認証トークンをCSVに出していない
- □ 口座番号や個人情報をマスクした
次に読む技術講座
この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。
| No | 講座 | 確認できること |
|---|---|---|
| LEARN-014 | MQL5デバッグ・ログファースト開発完全ガイド | ログファースト開発と再現条件を確認する |
| LEARN-018 | MQL5 WebRequest・JSON・外部API実装完全ガイド | 外部連携とCSV以外の記録方式を確認する |
| LEARN-010 | MQL5時系列データ・価格取得完全ガイド | 時系列データ取得と記録対象を確認する |
| LEARN-022 | MQL5長時間稼働・安定化完全ガイド | 長時間稼働時のログ抑制を確認する |
次に確認するページ
技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 開発代行ページ | EA、インジケーター、補助ツールの新規作成・改修相談を確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。 |
よくある質問
Filesフォルダはどこにありますか?
通常は、MT5のデータフォルダ内にあるMQL5\Files相当の場所が関係します。MT5の「データフォルダを開く」から確認すると見つけやすくなります。
Commonフォルダとは何ですか?
同じPC内の複数MT5から共通で使える保存場所です。複数MT5間でファイルを共有したい場合に使われることがありますが、ファイル名衝突に注意が必要です。
バックテスト中に作られたCSVはどこに保存されますか?
通常チャートのFilesフォルダとは異なる、Strategy Tester側やAgent側の保存領域に作られる場合があります。通常のFilesだけを見て保存失敗と判断しないようにしてください。
CSVが文字化けする時は何を確認しますか?
文字コード、開くソフト、区切り文字、BOMの有無、日本語や特殊記号の使用有無を確認します。Excelで開く場合とテキストエディタで開く場合で見え方が異なることがあります。
FileOpenで失敗する時は何を確認しますか?
ファイル名、保存先、FILE_READ / FILE_WRITEなどのモード、CSV / TXT指定、Common指定の有無、既に開いているファイル、GetLastErrorを確認してください。
ログファイルとCSVファイルは何が違いますか?
Expertsログは時系列の説明やエラー理由の確認に向いています。CSVは列構造で保存するため、集計、比較、検証記録に向いています。
問い合わせ時にCSVを送ってもよいですか?
送ってよい場合があります。ただし、口座番号、Webhook URL、GAS URL、APIキー、認証トークン、個人情報が含まれていないか確認してから送ってください。
FileCloseは必ず必要ですか?
FileOpenで開いたファイルは、処理後にFileCloseする設計が基本です。FileClose漏れがあると、ファイルロックや同時に開けるファイル数の問題につながる場合があります。
CSV出力を毎tick行ってもよいですか?
検証目的によりますが、毎tick出力はファイルサイズや処理負荷が大きくなる場合があります。必要なイベントだけ記録する、一定間隔で記録する、バックテスト時だけ出力するなどの設計を検討してください。
外部連携を使う前にCSV確認は必要ですか?
必須ではありませんが、外部連携前にローカルCSVへ正しいデータが出ているか確認すると、EA側のデータ生成と外部通信の問題を分けて確認しやすくなります。
まとめ
MQL5ファイル操作とCSVログ出力では、FileOpen、FileWrite、FileReadString、FileCloseだけでなく、Filesフォルダ、Commonフォルダ、バックテスト時の保存先、文字コード、区切り文字、CSV列設計を合わせて確認することが重要です。
通常チャートとStrategy Testerでは、CSVの保存先が異なる場合があります。保存されていないように見える時は、通常のFilesフォルダだけでなく、テスター側の保存場所も確認してください。
CSVは検証記録や問い合わせ前の資料整理に役立ちますが、Webhook URL、GAS URL、APIキー、認証トークン、口座番号、個人情報などの実値を含めないようにしてください。
不具合確認では、CSVファイルだけでなく、setファイル、Expertsログ、Journalログ、スクリーンショット、発生時刻、銘柄名、時間足を合わせて整理すると、原因の切り分けが進めやすくなります。

