技術講座

MQL5ファイル操作・CSVログ出力完全ガイド|Filesフォルダ・FileOpen・文字コードの基本

EAファンクラブ

MQL5でEA、インジケーター、スクリプト、補助ツールを作成する場合、ファイル操作やCSVログ出力を使う場面があります。

たとえば、EAの動作ログをCSVへ保存する、インジケーターのサイン履歴を記録する、バックテスト結果を確認用に出力する、外部連携前にローカルファイルへ記録する、問い合わせ前に検証データを整理する、といった用途です。

ただし、MQL5のファイル操作では、保存先、Filesフォルダ、Commonフォルダ、バックテスト時の保存場所、FileOpenのモード、CSVの区切り文字、文字コード、文字化け、FileClose漏れなどで迷いやすい点があります。

この記事では、MQL5のFileOpen、FileWrite、FileReadString、FileClose、CSV出力、Filesフォルダ、Commonフォルダ、バックテスト時の保存先、文字コード、問い合わせ時に送るファイル・送ってはいけない情報を整理します。

このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、推奨ロット、推奨銘柄、特定ブローカー誘導を目的とした内容ではありません。

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側のFilesStrategy 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-014MQL5デバッグ・ログファースト開発完全ガイドログファースト開発と再現条件を確認する
LEARN-018MQL5 WebRequest・JSON・外部API実装完全ガイド外部連携とCSV以外の記録方式を確認する
LEARN-010MQL5時系列データ・価格取得完全ガイド時系列データ取得と記録対象を確認する
LEARN-022MQL5長時間稼働・安定化完全ガイド長時間稼働時のログ抑制を確認する

次に確認するページ

技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。

ページ確認できること
技術講座一覧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ログ、スクリーンショット、発生時刻、銘柄名、時間足を合わせて整理すると、原因の切り分けが進めやすくなります。

MT4/MT5 技術講座へ戻る

ABOUT ME
記事URLをコピーしました