mt5-log-reader について
mt5-log-readerは、MetaTrader 5の実行ログとコンパイルログをプログラムから調べるスキルです。対象を絞った検索で、インジケーター、スクリプト、エキスパートアドバイザー、テスト結果を確認できます。
主な機能
- 01実行ログとコンパイルログの読み取り
- 02パターンを指定したログ検索
- 03エラー、バージョン、デバッグ出力の確認
- 04ユニットテスト結果の検証
活用シーン
- 01インジケーターの再読み込みとバージョン確認
- 02実行時またはコンパイルエラーの調査
- 03計算内容とテスト結果の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ mql5-crossover --skill mt5-log-readerインストール後、Claude Code で/mt5-log-readerを入力して読み込まれたか確認します。
詳細
MT5 ログリーダー
概要
MetaTrader 5 のログファイルをプログラムから読み取り、インジケーター、スクリプト、エキスパートアドバイザーからの Print() 出力にアクセスします。Print() 文を MT5 ログ(人間が読みやすい形式)に出力し、CSV ファイルで構造化データを提供して検証する、デュアルロギングパターンを実装します。
使用する場面
次のような場合にこのスキルを使用します:
- MT5 インジケーター/スクリプトの実行を検証する
- コンパイルエラーや実行時エラーを確認する
- インジケーターからの Print() デバッグ出力を分析する
- 単体テストの結果(Test_PatternDetector、Test_ArrowManager)を検証する
- ユーザーが「Experts ペイン」や「ログ」を手動で確認することに言及した場合
- ユーザーが「動きましたか?」や「出力を確認して」と尋ねた場合
ログファイルの構造
実行時ログ(Experts ペイン)
MT5 の実行時ログは次の場所に保存されます:
$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/YYYYMMDD.log
ファイル形式:
- エンコーディング:UTF-16LE(リトルエンディアン) - Read ツールが自動的に処理します
- 構造:タブ区切りのフィールド(タイムスタンプ、ソース、メッセージ)
- サイズ:1 日を通して増加します(通常 10~100KB、5MB 以上になることもあります)
コンパイルログ(ファイルごと)
MetaEditor は、コンパイルした各 .mq5 ファイルの隣に .log ファイルを作成します:
# Example: Fvg.mq5 creates Fvg.log in the same directory
$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/FVG/Fvg.log
ファイル形式:
- エンコーディング:UTF-16LE(通常はプレーンな
catで読み取れます) - 内容:コンパイルの進行状況、エラー数、警告、所要時間
- 成功を示す値:「0 errors, 0 warnings」
重要:Wine/CrossOver は、コンパイルが成功した場合でも終了コード 1 を返します。必ず .log ファイルを確認するか、.ex5 が存在することを確認してください。
ワークフロー
ステップ 1:ログのパスを作成する
今日の日付を特定し、絶対パスを作成します:
TODAY=$(date +"%Y%m%d")
LOG_FILE="$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/${TODAY}.log"
ステップ 2:該当するエントリを検索する
ファイル全体を読むより効率的なため、Grep ツールを使ってログエントリを絞り込みます:
Pattern: indicator name, "error", "ERROR", "v0\\.4\\.0", "Phase 2", etc.
Path: Log file from Step 1
Output mode: "content"
-n: true (show line numbers)
-A: 5 (show 5 lines after matches for context)
一般的な検索パターン:
CCI Rising Test|CCI_Rising_Test- 特定のインジケーター出力を検索しますerror|ERROR|failed- エラーメッセージを検索しますv0\\.4\\.0|v0\\.3\\.0- 特定のバージョンの出力を検索しますPhase \\d+|Test arrow created- 初期化メッセージを検索しますDEBUG Bar- 計算出力を検索します
ステップ 3:結果を分析する
grep の出力を確認し、次の点を調べます:
- タイムスタンプ - 出力が想定した実行時刻と一致することを確認します
- エラーメッセージ - 文脈を踏まえて、具体的な失敗を特定します
- バージョン番号 - 正しい .ex5 ファイルが読み込まれていることを確認します
- DEBUG 出力 - 計算結果を検証します
- テスト結果 - 単体テストの合格/不合格を確認します
一般的な検証パターン
読み込まれたインジケーターのバージョンを確認する
コンパイル後、新しい .ex5 ファイルが読み込まれていることを確認します:
# Search for version string in recent log entries
Pattern: "v0\\.4\\.0|=== CCI Rising Test"
Output mode: content
Context: -A 2
バージョン番号と、再読み込み時刻に一致するタイムスタンプを含む初期化メッセージを探します。
実行時エラーを検索する
Pattern: "error|ERROR|failed|Failed"
Output mode: content
Context: -A 3 -B 1 # Show 3 lines after, 1 before
エラーコード(例:4003 = 無効な時刻)とエラーの文脈を分析します。
計算出力を監視する
Pattern: "DEBUG Bar"
Output mode: content
Context: -A 0 # No extra context needed
-n: true # Show line numbers
計算値が妥当であり(EMPTY_VALUE ではなく、逆転していないことを)確認します。
テスト矢印の作成を確認する
Pattern: "Phase 2|Test arrow created|Failed to create"
Output mode: content
Context: -A 2
タイムスタンプ付きの成功メッセージを確認します。
大きなログファイル
ログファイルが 5MB を超える場合(Read ツールの上限):
- Grep のみを使用します(ファイル全体を読むより効率的です)
-Aと-Bのコンテキスト指定で時間ベースの絞り込みを行います- 特定のインジケーター名を検索し、結果を絞り込みます
デュアルロギングとの連携
このスキルは、デュアルロギングパターンの片方にアクセスします:
- MT5 ログファイル(このスキル) - 人間が読みやすい Print() 出力
- CSV ファイル(CSVLogger.mqh) - 構造化された監査証跡
どちらもユーザーの操作なしでプログラムからアクセスできます。
セキュリティに関する考慮事項
- ログファイルには機密性の高い取引データ(銘柄名、口座情報など)が含まれることがあります
- ユーザー向けの出力で絶対パスを不必要に公開しないでください
- 結果を報告する際は、機密情報をフィルタリングしてください
- ファイル変更操作は許可されていません(読み取り専用アクセス)
例
例 1:コンパイル後にインジケーターが再読み込みされたことを確認する
User: "I reloaded the indicator, can you check if v0.4.0 is running?"
Action:
1. Grep for "v0\\.4\\.0|CCI Rising Test v0\\.4"
2. Check most recent match timestamp
3. Verify it's after compilation time (16:59)
Output: "Yes, v0.4.0 loaded at 17:01 on EURUSD M1 chart"
例 2:ヒストグラムが空である理由を調べる
User: "The last 19 bars are still empty, check the log"
Action:
1. Grep for "DEBUG Bar|CCI=" pattern
2. Look for EMPTY_VALUE or unusual values
3. Check for error messages with -A 3 context
Output: "Found 'CCI=179769313486231570...' which is EMPTY_VALUE constant. The indicator didn't calculate CCI for those bars."
例 3:計算の修正を検証する
User: "Check if the absolute value fix is working"
Action:
1. Grep for "DEBUG Bar.*\\|CCI\\|=" (looking for |CCI|= output)
2. Compare with old format "DEBUG Bar.*CCI=" (without |CCI|)
3. Check timestamp matches latest compilation
Output: "The log shows old format (no |CCI|=) at 16:56. Need to reload to get v0.4.0 from 16:59."
参考資料
- MT5 ファイルの場所:
docs/guides/MT5_FILE_LOCATIONS.md - 二重ロギングの実装:
docs/plans/cci-rising-pattern-marker.yamlPhase 3-4 - CSVLogger ライブラリ:
Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/CCINeutrality/lib/CSVLogger.mqh