mcpField
M
mt5-log-reader

mt5-log-reader

github.com/terrylicaテスト・品質0137 回インストール42 週間前に更新
リポジトリ

mt5-log-reader について

mt5-log-readerは、MetaTrader 5の実行ログとコンパイルログをプログラムから調べるスキルです。対象を絞った検索で、インジケーター、スクリプト、エキスパートアドバイザー、テスト結果を確認できます。

主な機能

  1. 01実行ログとコンパイルログの読み取り
  2. 02パターンを指定したログ検索
  3. 03エラー、バージョン、デバッグ出力の確認
  4. 04ユニットテスト結果の検証

活用シーン

  1. 01インジケーターの再読み込みとバージョン確認
  2. 02実行時またはコンパイルエラーの調査
  3. 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 ツールの上限):

  1. Grep のみを使用します(ファイル全体を読むより効率的です)
  2. -A と -B のコンテキスト指定で時間ベースの絞り込みを行います
  3. 特定のインジケーター名を検索し、結果を絞り込みます

デュアルロギングとの連携

このスキルは、デュアルロギングパターンの片方にアクセスします:

  1. MT5 ログファイル(このスキル) - 人間が読みやすい Print() 出力
  2. 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.yaml Phase 3-4
  • CSVLogger ライブラリ:Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/CCINeutrality/lib/CSVLogger.mqh

コメント