MQL5デバッグ・ログファースト開発完全ガイド|Print・Expertsログ・再現条件の整理
MQL5でEA、インジケーター、スクリプト、補助ツールを開発・改修する場合、不具合の原因を正確に追うには、ログの出し方と再現条件の整理が重要です。
「動かない」「注文されない」「決済されない」「通知が届かない」「バックテストでは動くがリアル環境では違う」「コンパイルエラーが出る」といった状況では、画面だけを見ても原因を特定できないことがあります。
Expertsログ、Journalログ、MetaEditorのエラー、GetLastError、MqlTradeResult.retcode、setファイル、銘柄名、時間足、発生時刻、直前の操作を組み合わせて確認する必要があります。
この記事では、MQL5のデバッグとログファースト開発の考え方を、開発、検証、不具合調査、開発依頼前整理、販売後サポートで使いやすい形に整理します。
このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、損失回避保証、推奨ロット、推奨銘柄、特定ブローカー誘導を目的とした内容ではありません。
- この記事で確認すること
- ログファースト開発とは
- 1. MetaEditorで最初に確認すること
- 2. コンパイルエラーの行番号とメッセージの読み方
- 3. Printログの基本
- 4. ExpertsログとJournalログの違い
- 5. GetLastErrorを使う時の注意
- 6. MqlTradeResult.retcodeを記録する理由
- 7. 再現条件を整理する方法
- 8. setファイル・銘柄・時間足・発生時刻の記録
- 9. ログが多すぎる時の整理方法
- 10. 外部連携エラーを調査する時の流れ
- 11. バックテスト中のログ確認
- 12. 問い合わせ前に送る情報
- 13. 送ってはいけない情報
- MQL5デバッグ・ログファースト確認チェック表
- よくある質問
- 関連する技術講座
- 関連する確認ページ
- 購入前・利用前に確認するページ
- まとめ
この記事で確認すること
| 確認項目 | 確認する内容 |
|---|---|
| ログファースト開発の考え方 | 不具合が起きた後ではなく、開発段階からログ設計を含める考え方を整理します。 |
| MetaEditorで最初に見ること | コンパイルエラー、警告、行番号、include、文字コード、直前変更箇所を確認します。 |
| Print / PrintFormatログ | カテゴリ、symbol、timeframe、結果、理由、値を残す基本を確認します。 |
| ExpertsログとJournalログ | EA側ログとMT5端末側ログの違いを分けて確認します。 |
| GetLastError | エラー番号だけでなく、直前の関数、戻り値、対象情報を一緒に記録します。 |
| MqlTradeResult.retcode | 注文処理では、OrderSendの戻り値だけでなく取引サーバー応答を確認します。 |
| 再現条件 | EA名、バージョン、setファイル、銘柄、時間足、発生時刻、操作内容を整理します。 |
| 外部連携ログ | WebRequest、Discord通知、Google Sheets連携、外部認証の確認順を整理します。 |
| バックテスト中のログ | Strategy Tester上のログ量、テスト条件、外部連携分岐、データ不足を確認します。 |
| 問い合わせ前整理 | 送る情報と送ってはいけない情報を分けて整理します。 |
ログファースト開発とは
ログファースト開発とは、EAやインジケーターの動作を後から確認できるように、最初からログ設計を含めて開発する考え方です。
MQL5では、条件が未成立だったのか、データ取得に失敗したのか、risk制御で止まったのか、注文リクエストが失敗したのか、通知だけが失敗したのかを分けて記録すると、不具合調査が進めやすくなります。
| ログ分類 | 確認する内容 | ログ例 |
|---|---|---|
| INIT | 起動時の設定、銘柄、時間足、バージョン、input概要 | version、symbol、timeframe、input summary |
| GATE | 必須条件の通過・停止理由 | spread NG、time NG、data insufficient |
| SIGNAL | エントリー候補や判定結果 | BUY candidate、SELL candidate、NO ENTRY |
| RISK | ロット、最大数、外部停止、認証状態 | max positions、lot normalized、external stop |
| EXECUTION | 注文・決済リクエストの結果 | retcode、order、deal、GetLastError |
| EXIT | 決済条件、トレーリング、保有管理 | close reason、trail state、exit priority |
| NOTIFY | 通知送信結果、外部連携結果 | sent、failed、http status |
| FILE | CSV出力、ファイル読み書き | FileOpen、write count、path kind |
ログファースト開発では、ログを大量に出せばよいわけではありません。必要な時に、必要な情報を、同じ形式で追えることが重要です。
1. MetaEditorで最初に確認すること
MQL5開発で最初に確認するのは、MetaEditor上でコンパイルエラーが出ていないかです。
EAやインジケーターは、コンパイルできなければMT5上で正常に動作確認できません。実行時の不具合を調べる前に、まずコンパイル結果を確認します。
| 確認項目 | 見る場所 | 確認すること |
|---|---|---|
| エラー数 | MetaEditor下部のエラー欄 | errorが0か確認します。 |
| 警告数 | MetaEditor下部の警告欄 | warningの内容が意図したものか確認します。 |
| ファイル名 | エラー欄 | 対象ファイルが正しいか確認します。 |
| 行番号・列番号 | エラー欄 | エラー発生位置を確認します。 |
| メッセージ | エラー欄 | 未定義、型不一致、括弧不足、include不足などを確認します。 |
| include | ソース上部 | 必要ファイルの存在、パス、ファイル名を確認します。 |
| 文字コード | ファイル保存状態 | BOM混入や不可視文字の可能性を確認します。 |
| 直前変更箇所 | ソース差分 | 最後に編集した周辺から確認します。 |
コンパイルエラーは、1つの原因から複数行に連鎖して出ることがあります。上から順番に確認し、最初の根本原因を探すことが大切です。
2. コンパイルエラーの行番号とメッセージの読み方
MetaEditorのエラー欄では、ファイル名、行番号、列番号、エラーメッセージを確認します。
よくあるコンパイルエラーには、未定義識別子、型不一致、括弧不足、セミコロン不足、関数引数の不一致、includeファイル不足、文字コード由来のエラーなどがあります。
| エラーの種類 | よくある原因 | 確認すること |
|---|---|---|
| undeclared identifier | 変数・関数・定数が未定義 | 宣言位置、スコープ、スペルを確認します。 |
| wrong parameters count | 関数の引数数が違う | 関数定義、公式仕様、呼び出し箇所を確認します。 |
| cannot convert | 型が合っていない | int、double、string、enumなどの型を確認します。 |
| semicolon expected | セミコロン不足 | 表示行だけでなく直前行も確認します。 |
| unexpected token | 括弧や記号の崩れ | 直前のブロック構造を確認します。 |
| include file not found | includeファイルが見つからない | ファイル配置、パス、ファイル名を確認します。 |
| unknown symbol | 不可視文字や文字コード由来の可能性 | 先頭BOM、コピー元、保存形式を確認します。 |
エラーが表示された行だけでなく、その直前の行やブロック全体を見ることも重要です。括弧不足やセミコロン不足は、実際の原因が表示行より前にある場合があります。
3. Printログの基本
PrintやPrintFormatは、EAやインジケーターの状態をExpertsログへ出すためによく使われます。
Printログでは、単に「OK」「NG」と出すだけではなく、どの関数で、どの銘柄・時間足で、どの条件を確認し、どの結果になったのかを残すと調査しやすくなります。
PrintFormat("DIAG/SIGNAL symbol=%s tf=%s gate=%s reason=%s",
_Symbol,
EnumToString(_Period),
"NG",
"spread_limit");
上記は、ログ形式の考え方を示す最小例です。売買ロジックや推奨設定を示すものではありません。
| ログ項目 | 入れる理由 | 例 |
|---|---|---|
| カテゴリ | どの層のログか分けるため | DIAG/SIGNAL、DIAG/RISK |
| symbol | 対象銘柄を確認するため | _Symbol |
| timeframe | 対象時間足を確認するため | M15、H1など |
| result | OK、NG、SKIPを確認するため | OK / NG / SKIP |
| reason | 理由を短く残すため | data_short、spread_limit |
| value | 判定に使った値を残すため | spread=35、count=0 |
| time | 発生時刻を照合するため | server_time、bar_time |
Printログは便利ですが、出しすぎると読みにくくなります。ログカテゴリ、理由コード、出力頻度を整理して使ってください。
4. ExpertsログとJournalログの違い
MT5で不具合を調査する時は、ExpertsログとJournalログを分けて確認します。
Expertsログは、EAやインジケーター側のPrint、エラー、状態出力を確認する場所です。Journalログは、MT5端末、取引サーバー、ストラテジーテスター、接続、読み込みなどの端末側情報を確認する場所です。
| ログ種別 | 主な内容 | 確認する場面 |
|---|---|---|
| Expertsログ | EA・インジケーターのPrint、内部状態、処理結果 | 条件分岐、注文結果、CopyBuffer失敗、WebRequest失敗 |
| Journalログ | MT5端末側、取引サーバー、テスター、接続関連 | 接続状態、注文送信、ファイル読み込み、テスター実行 |
| MetaEditorエラー | コンパイルエラー、警告 | 実行前のソース確認 |
| Strategy Testerログ | バックテスト中の実行状態 | データ不足、速度、実行結果、最適化中の確認 |
| 外部サービス側ログ | Webhook、GAS、API側の受信・失敗 | 外部連携エラーの切り分け |
「EAが動かない」と感じる場合でも、ExpertsログだけでなくJournalログも確認してください。EA側の条件未成立なのか、MT5端末側の問題なのかを分ける必要があります。
5. GetLastErrorを使う時の注意
GetLastErrorは、直近のエラー番号を確認するために使います。
ただし、GetLastErrorの値だけを見ても、原因を断定できるとは限りません。どの関数を呼び出した直後に確認したのか、対象symbolやtimeframeは何だったのか、戻り値はどうだったのかを一緒に記録する必要があります。
ResetLastError();
int copied = CopyRates(_Symbol, PERIOD_M15, 0, 10, rates);
if(copied < 10)
{
int err = GetLastError();
PrintFormat("DIAG/DATA copy_rates_failed symbol=%s tf=%s requested=%d copied=%d error=%d",
_Symbol,
"PERIOD_M15",
10,
copied,
err);
}
この例は、データ取得失敗時のログ形式を示すものです。実際のEAでは、必要本数、対象時間足、再試行方針、データ不足時の扱いを仕様として決めてください。
| 確認項目 | 理由 | ログに残す例 |
|---|---|---|
| 直前の関数 | どの処理で失敗したか確認するため | CopyRates、FileOpen、WebRequest |
| 戻り値 | 成功・失敗・不足を判断するため | copied、handle、status |
| 対象情報 | 銘柄や時間足を確認するため | symbol、timeframe、filename |
| GetLastError | エラー候補を確認するため | error=xxxx |
| 時刻 | 発生タイミングを特定するため | server_time、bar_time |
| 前後ログ | 原因の流れを見るため | before / after context |
GetLastErrorの値を確認した後は、必要に応じてエラーの意味を確認します。ただし、エラー番号だけでなく、前後のログも必ず確認してください。
6. MqlTradeResult.retcodeを記録する理由
注文処理の不具合では、GetLastErrorだけでなく、MqlTradeResult.retcodeを確認することが重要です。
MQL5の注文処理では、取引リクエストを送った後に、取引サーバー側の応答としてretcodeが返る場合があります。注文できなかった理由を確認するには、retcode、order、deal、comment、request内容を合わせて記録します。
| 記録項目 | 確認する内容 | 目的 |
|---|---|---|
| retcode | 取引サーバー側の応答 | 注文失敗理由を確認します。 |
| order | 注文番号 | 注文が作成されたか確認します。 |
| deal | 約定番号 | 約定したか確認します。 |
| comment | サーバーコメント | 補足理由を確認します。 |
| request volume | 注文ロット | volume stepや最小ロットを確認します。 |
| price / sl / tp | 注文価格と保護価格 | stops levelやdigitsを確認します。 |
| symbol / magic | 対象銘柄とEA識別番号 | 別EAや別銘柄との混同を避けます。 |
注文処理を調査する場合は、execution層のログとして、requestとresultを分けて記録すると確認しやすくなります。
7. 再現条件を整理する方法
不具合調査で最も重要なのは、再現条件を整理することです。
「たまに動かない」「急に止まった」「昨日は動いた」といった情報だけでは、原因を追うことが難しくなります。いつ、どのEAで、どの銘柄・時間足で、どのsetファイルを使い、どの操作をした時に発生したのかを整理してください。
| 再現条件 | 記録する内容 | 理由 |
|---|---|---|
| EA名・インジ名 | 対象ファイル名と表示名 | 対象を特定するためです。 |
| バージョン | 版番号、ファイル名 | 旧版との混在を防ぐためです。 |
| 銘柄名 | MT5上の正確なsymbol | サフィックス違いを確認するためです。 |
| 時間足 | チャート時間足と内部参照時間足 | MTF条件を確認するためです。 |
| 発生時刻 | サーバー時間、PC時刻、スクリーンショット時刻 | ログ照合のためです。 |
| setファイル | 使用したinput設定 | 同条件で再現するためです。 |
| 操作内容 | 設定変更、ボタン操作、時間足変更、再起動など | 発生前の状態を確認するためです。 |
| ログ | Experts、Journal、Strategy Tester | 原因候補を追うためです。 |
再現条件は、開発者だけでなく検証担当者にとっても重要です。同じ条件で再確認できる形に整理してください。
8. setファイル・銘柄・時間足・発生時刻の記録
MQL5の不具合調査では、同じEAでもsetファイル、銘柄、時間足、発生時刻が違うと、再現できない場合があります。
特に、外部連携、時間制御、スプレッド制御、マルチタイムフレーム、インジケーター連携、ファイル出力を含むEAでは、条件差が調査結果に大きく影響します。
| 記録対象 | 確認すること | 注意点 |
|---|---|---|
| setファイル | 使用中のinput設定 | 認証情報やURLが含まれないか確認します。 |
| 銘柄名 | チャート左上のsymbol | サフィックス込みで記録します。 |
| 時間足 | チャート時間足 | EA内部の参照時間足も確認します。 |
| 発生時刻 | いつ問題が起きたか | サーバー時間と日本時間を混同しないようにします。 |
| ログ範囲 | 問題発生前後 | 直前数行だけでは不足する場合があります。 |
| スクリーンショット | チャート、入力、エラー表示 | 口座番号や個人情報を隠します。 |
| 直前変更 | EA更新、set変更、URL変更、VPS再起動など | 変更前後を分けて確認します。 |
setファイルには、通知設定、WebRequest URL、外部連携設定、認証に関わる値が含まれる場合があります。共有前に必ず内容を確認してください。
9. ログが多すぎる時の整理方法
ログは重要ですが、多すぎるログは逆に原因調査を難しくします。
毎tickで大量にPrintを出す、同じメッセージを連続出力する、判定値をすべて出し続ける、外部連携ログを毎回詳細表示する、といった状態では、必要な情報が埋もれてしまいます。
| 問題 | 起きやすい状況 | 整理方法 |
|---|---|---|
| 同じログが連続する | 毎tickで同じNG理由を出す | 同一理由は一定間隔で出します。 |
| ログが長すぎる | 1行に情報を詰め込みすぎる | カテゴリ別に分けます。 |
| 重要ログが埋もれる | DEBUGログとERRORログが混在する | INFO、WARN、ERRORを分けます。 |
| バックテストが遅くなる | バックテスト中に大量Printする | バックテスト用ログプロファイルを作ります。 |
| 外部連携ログが多い | HTTP応答やpayloadを毎回出す | 失敗時中心に出します。 |
| ファイルが増えすぎる | CSVやtxtを大量生成する | 保存条件と削除方針を決めます。 |
| UIログが多い | OnChartEventや表示更新で大量出力する | 状態変化時だけ出します。 |
ログ量の調整では、必要な情報を消しすぎないことも重要です。通常運用、検証、バックテスト、詳細調査でログレベルを分けると確認しやすくなります。
10. 外部連携エラーを調査する時の流れ
WebRequest、Discord通知、Google Sheets連携、外部API、認証処理を含むEAでは、外部連携特有の確認が必要です。
外部連携エラーでは、EA側のデータ生成、MT5のWebRequest許可、URL、HTTP応答、外部サービス側の状態を分けて確認します。
| 確認順序 | 確認すること | ログに残すこと |
|---|---|---|
| 1 | 送信前データが正しいか | event、symbol、time、payload概要 |
| 2 | WebRequest許可URLが設定されているか | 許可確認結果。URL実値は出さない |
| 3 | HTTP応答が返っているか | status code、timeout、error |
| 4 | 外部サービス側で受信しているか | 受信有無、外部側ログ |
| 5 | 通知抑制が働いていないか | throttle、last send time |
| 6 | 認証情報が正しいか | マスク済み状態。実値は記録しない |
| 7 | Strategy Tester中の分岐か | tester mode、external disabledなど |
Webhook URL、GAS URL、APIキー、認証トークンの実値は、本文、ログ、スクリーンショット、問い合わせ本文へそのまま含めないでください。
11. バックテスト中のログ確認
バックテスト中のログは、リアル環境のログと見え方が異なる場合があります。
Strategy Testerでは、テスト条件、ヒストリカルデータ、テストモデル、スプレッド、外部連携の扱い、ファイル出力先、ログ量が結果や確認しやすさに影響します。
| 確認項目 | バックテスト時の注意 | 見るログ |
|---|---|---|
| INIT | テスター環境で初期化できているか | Expertsログ |
| データ取得 | 必要本数が取れているか | CopyRates、CopyBufferログ |
| 注文処理 | テスター上の約定条件で処理されているか | EXECUTIONログ、結果タブ |
| 外部連携 | バックテスト時に無効化・分岐されているか | NOTIFY、WEB、AUTHログ |
| ファイル出力 | 保存先が通常環境と違う場合がある | FILEログ、Tester側Files |
| ログ量 | 大量出力でバックテストが遅くならないか | ログプロファイル |
| 最適化 | 最適化中に過剰ログを出していないか | 最適化用ログ設定 |
バックテスト結果は、将来の結果を保証するものではありません。結果画面だけでなく、条件、setファイル、ログ、テストモデルをセットで確認してください。
12. 問い合わせ前に送る情報
MQL5の不具合調査を相談する場合は、状況を再現できる情報を整理してください。
ログだけ、スクリーンショットだけ、結果画面だけでは不足する場合があります。setファイル、対象EA、発生時刻、銘柄、時間足、Expertsログ、Journalログをセットで整理すると確認しやすくなります。
| 情報 | 必要性 | 注意点 |
|---|---|---|
| EA名・インジ名 | 対象特定 | ファイル名と表示名が違う場合があります。 |
| バージョン | 仕様差分確認 | 古い版と混在しないようにします。 |
| setファイル | 入力条件の再現 | 認証情報やURLを確認してから送ります。 |
| 銘柄名・時間足 | 再現条件 | サフィックス込みで記録します。 |
| 発生時刻 | ログ照合 | サーバー時間と日本時間を分けます。 |
| Expertsログ | EA内部状態の確認 | 発生前後を含めます。 |
| Journalログ | 端末側状態の確認 | 接続、注文、テスター関連を含めます。 |
| スクリーンショット | 画面状態の確認 | 口座番号や個人情報を隠します。 |
| 再現手順 | 同じ状況を作るため | 操作順、設定変更、時間足変更などを記録します。 |
問い合わせが必要な場合は、必要情報を整理したうえで、対象範囲、再現条件、確認したログをまとめてください。
13. 送ってはいけない情報
ログやsetファイル、スクリーンショットを送る時は、機密情報が含まれていないか確認してください。
| 送ってはいけない情報 | 理由 | 対応 |
|---|---|---|
| 口座番号の全桁 | 個人情報・口座情報に関係するため | 必要に応じて一部を伏せます。 |
| 投資家パスワード | 口座閲覧に関係するため | 送らないでください。 |
| マスターパスワード | 取引権限に関係するため | 送らないでください。 |
| Webhook URLの実値 | 外部通知先の機密情報になり得るため | 伏せ字にします。 |
| GAS URLの実値 | Google Sheets連携の機密情報になり得るため | 伏せ字にします。 |
| APIキー | 外部サービス権限に関係するため | 送らないでください。 |
| 認証トークン | 認証情報に関係するため | 送らないでください。 |
| 個人情報 | 不要な情報共有を避けるため | 隠してから送ります。 |
| 不要な取引履歴全体 | 確認に不要な情報が含まれる場合があるため | 必要な範囲だけ共有します。 |
送ってよいか判断できない情報は、そのまま送らず、まずマスクまたは削除してください。
MQL5デバッグ・ログファースト確認チェック表
MQL5のデバッグや不具合調査では、以下を確認してください。
| チェック項目 | 確認内容 |
|---|---|
| MetaEditorでコンパイルエラーがないか確認した | error 0、warning内容、対象ファイル、行番号を確認します。 |
| エラー行番号と直前行を確認した | 表示行だけでなく直前の括弧、セミコロン、includeも確認します。 |
| ExpertsログとJournalログを分けて確認した | EA側の処理とMT5端末側の状態を分けます。 |
| Printログにカテゴリ、symbol、timeframe、reasonを入れた | 後から検索しやすいログ形式にします。 |
| GetLastErrorを確認する位置を決めた | 失敗する可能性のある関数の直後に確認します。 |
| 注文処理ではMqlTradeResult.retcodeを記録した | OrderSendの戻り値だけで判断しないようにします。 |
| setファイル、銘柄、時間足、発生時刻を記録した | 再現条件を揃えます。 |
| 再現手順を整理した | 操作順、直前変更、発生条件を残します。 |
| ログが多すぎる場合は出力頻度を調整した | 通常、検証、バックテスト、詳細調査で切り替えます。 |
| 外部連携ではURLやtokenの実値を出していない | Webhook URL、GAS URL、APIキー、認証トークンを保護します。 |
| バックテストとリアル環境のログを分けて確認した | テスター条件とリアル環境の差を分けます。 |
| 口座番号や個人情報をマスクした | スクリーンショット、ログ、setファイルを共有前に確認します。 |
よくある質問
Printログを増やせば原因は分かりますか?
ログを増やすだけでは原因が分からない場合があります。どの関数で、どの条件を確認し、どの結果になったのかを分類して出すことが重要です。ログ量が多すぎる場合は、カテゴリや出力頻度を整理してください。
ExpertsログとJournalログはどちらを見ればよいですか?
両方を確認してください。ExpertsログはEAやインジケーター側の状態確認に使い、JournalログはMT5端末、取引サーバー、テスター、接続状態の確認に使います。
GetLastErrorはいつ確認しますか?
失敗する可能性のある関数を呼び出した直後に確認します。どの関数の直後なのか、戻り値はどうだったのか、対象symbolやtimeframeは何かを合わせてログに残してください。
注文エラーではretcodeも必要ですか?
必要です。注文処理では、GetLastErrorだけでなく、MqlTradeResult.retcode、order、deal、comment、request内容を確認すると、取引サーバー側の応答を追いやすくなります。
ログが多すぎる場合はどう整理しますか?
同じ理由の連続出力を抑制し、INFO、WARN、ERROR、DEBUGなどの分類を分けます。通常運用、検証、バックテストでログ量を切り替える設計も有効です。
問い合わせ時にソースコードは必要ですか?
内容によります。既存EAやインジケーターの改修、ロジック調査、コンパイルエラー確認では必要になる場合があります。一方で、動作確認だけなら、setファイル、Expertsログ、Journalログ、スクリーンショット、発生条件で確認できる場合もあります。
Webhook URLやAPIキーを送ってよいですか?
送らないでください。Webhook URL、GAS URL、APIキー、認証トークンなどの実値は、ログ、スクリーンショット、問い合わせ本文に含めないようにしてください。
バックテストのログとリアル運用ログは同じですか?
同じとは限りません。バックテストではテスター環境、ヒストリカルデータ、外部連携制限、ログ量の違いがあり、リアル運用ではサーバー応答、通信、スプレッド、通知先などが影響します。
コンパイルエラーが複数ある時はどこから直しますか?
基本的には上から順番に確認し、最初の根本原因を探します。1つの括弧不足や型不一致が、後続の複数エラーを発生させることがあります。
ログとスクリーンショットは両方必要ですか?
両方あると確認しやすくなります。ログは内部状態や時系列、スクリーンショットは画面状態や設定の見た目を確認するために使います。口座番号や個人情報は隠してください。
関連する技術講座
MQL5のデバッグやログ設計を確認する場合は、エラーコード、関数、注文管理、EA設計、ファイル出力、イベント処理、長時間稼働の講座もあわせて確認してください。
| 技術講座 | 確認できること |
|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest関連エラーを確認できます。 |
| MQL5関数辞書 | MQL5で使う主要関数の役割、戻り値、確認ポイントを整理できます。 |
| MQL5注文・ポジション・履歴管理完全ガイド | OrderSend、MqlTradeRequest、MqlTradeResult、Position、Deal、Historyの確認に使えます。 |
| MQL5 EA設計パターン完全ガイド | signal、execution、risk、exit、auth、external control、notificationの責務分離を確認できます。 |
| MQL5ファイル操作・CSVログ出力完全ガイド | FileOpen、Filesフォルダ、Commonフォルダ、CSV、文字コード、ログ出力を確認できます。 |
| MQL5イベント処理完全ガイド | OnInit、OnTick、OnTimer、OnTradeTransaction、OnChartEventのログ設計を確認できます。 |
| MQL5長時間稼働・安定化完全ガイド | メモリ、ハンドル、ログ抑制、Object管理、長時間稼働時の確認に使えます。 |
関連する確認ページ
デバッグや不具合調査を進める場合は、setファイル、開発依頼資料、バックテスト、外部連携、サポート依頼の整理も確認してください。
| 確認ページ | 確認できること |
|---|---|
| MT5でEAのsetファイルを送る前に確認すること | setファイル内の設定、認証情報、URL、送付前の確認ポイントを整理できます。 |
| MT5開発依頼前に用意する資料まとめ | 仕様書、setファイル、Expertsログ、Journalログ、スクリーンショットを整理できます。 |
| MT5ストラテジーテスター・最適化完全ガイド | バックテスト条件、最適化、結果画面、Expertsログ、Journalログを確認できます。 |
| MT5外部連携・通知セキュリティガイド | Webhook URL、GAS URL、APIキー、認証トークンなどの扱いを確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順、利用環境を整理して相談する方法を確認できます。 |
購入前・利用前に確認するページ
EA、インジケーター、補助ツールを利用する前には、商品一覧、導入ガイド、動作環境、購入前確認、利用上の注意も確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 動作環境 | MT4 / MT5、Windows PC、VPS、外部連携などの動作環境を確認できます。 |
| 購入前確認事項 | 購入前に確認しておきたい対応環境、利用条件、確認事項を整理できます。 |
| 免責事項・リスク説明 | 商品の利用上の注意、責任範囲、リスク説明を確認できます。 |
まとめ
MQL5の不具合調査では、エラーコードの意味だけでなく、ログの出し方、確認順序、再現条件の整理が重要です。
MetaEditorでコンパイルエラーを確認し、ExpertsログとJournalログを分けて見ます。処理失敗時はGetLastError、注文処理ではMqlTradeResult.retcodeを確認し、対象銘柄、時間足、setファイル、発生時刻と合わせて記録してください。
ログは多ければよいわけではありません。INIT、GATE、SIGNAL、RISK、EXECUTION、EXIT、NOTIFY、FILEなど、目的別に分類し、通常運用、検証、バックテストでログ量を切り替えると確認しやすくなります。
外部連携を含むEAでは、Webhook URL、GAS URL、APIキー、認証トークンなどの実値をログや問い合わせ本文に含めないようにしてください。
学習内容を確認しても整理が難しい場合は、EA名、バージョン、setファイル、Expertsログ、Journalログ、発生時刻、スクリーンショットを整理したうえで相談してください。

