log-reader について
log-readerは、MetaTrader 5のログを読むスキルで、インジケーター、スクリプト、エキスパートアドバイザーの出力を確認する開発者向けです。Expertsペインを手動で調べずに、Print()のデバッグ出力、コンパイルエラー、テスト結果を検索できます。
主な機能
- 01当日の MT5 ログを読み込む
- 02エラー、テスト、指定文字列を検索
- 03直近のログ項目を確認
- 04インジケーターやスクリプトの初期化出力を確認
- 05ログ内の機密情報に注意
活用シーン
- 01インジケーターやスクリプトの実行を検証
- 02コンパイル・実行時エラーを特定
- 03ユニットテストの結果を確認
- 04テスト用矢印など特定の出力を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill log-readerインストール後、Claude Code で/log-readerを入力して読み込まれたか確認します。
同梱ファイルreferences/evolution-log.md
詳細
MT5 ログリーダー
MetaTrader 5 のログファイルを直接読み取り、エキスパートタブを手動で確認することなく、インジケーター、スクリプト、エキスパートアドバイザーの Print() 出力にアクセスします。
自己進化型スキル:このスキルは使用を通じて改善されます。指示に誤りがある場合、パラメーターが変わった場合、または回避策が必要だった場合は、先延ばしにせず、このファイルをすぐに修正してください。実際に再現できる問題がある場合にのみ更新してください。
目的
「オプション 3」の二重ロギングパターンを実装します。
- Print() - MT5 ログファイル(エキスパートタブから人が読める形式)
- CSV ファイル - 構造化データ(プログラムによる分析用)
Claude Code は、ユーザーの介入なしに両方の出力を自律的に読み取れます。
このスキルを使用する場面
次の場合にこのスキルを使用してください。
- MT5 インジケーター/スクリプトの実行を検証するとき
- コンパイルエラーまたは実行時エラーを確認するとき
- Print() のデバッグ出力を分析するとき
- 単体テストの結果(Test_PatternDetector、Test_ArrowManager)を検証するとき
- ユーザーが「エキスパートタブ」を手動で確認すると言及したとき
ログファイルの場所
MT5 のログは次の場所に保存されます。
$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/YYYYMMDD.log
ファイル形式:
- エンコーディング:UTF-16LE(リトルエンディアン)
- 構造:タブ区切りフィールド(タイムスタンプ、ソース、メッセージ)
- サイズ:1 日を通して増加します(通常は 10~100KB)
手順
1. 今日のログパスを組み立てる
/usr/bin/env bash << 'SKILL_SCRIPT_EOF'
# Determine current date
TODAY=$(date +"%Y%m%d")
# Build absolute path
LOG_FILE="$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/${TODAY}.log"
SKILL_SCRIPT_EOF
2. ログファイル全体を読み取る
Read ツールを使用します。
- ファイルパス:手順 1 で取得した絶対パス
- ファイルには、MT5 のインジケーター/スクリプトからのすべての Print() 文が含まれます
- UTF-16LE エンコーディングは Read ツールによって自動的に処理されます
3. 特定の内容を検索する(任意)
Grep を使用してエントリーを絞り込みます。
Pattern: indicator name, "error", "test.*passed", etc.
Path: Log file path from step 1
Output mode: "content" with -n (line numbers)
Context: -A 5 for 5 lines after matches
4. 最近のエントリーを分析する(任意)
Bash で tail を使用して最新の出力を確認します。
tail -n 50 "$LOG_FILE"
一般的な検証パターン
単体テストの結果を確認する
テストの成功/失敗を示す情報を検索します。
Pattern: test.*passed|test.*failed|Tests Passed|Tests Failed|ALL TESTS PASSED
Output mode: content
Context: -B 2 -A 2
コンパイルエラーを見つける
Pattern: error|ERROR|warning|WARNING|failed to create
Output mode: content
Context: -A 3
特定のインジケーターを監視する
Pattern: CCI Rising Test|PatternDetector|ArrowManager
Output mode: content
Context: -A 2
初期化メッセージを表示する
Pattern: OnInit|initialization|Initialization complete|Phase \d+
Output mode: content
例
例 1:単体テストの完了を検証する
Input: User compiled Test_PatternDetector.mq5
Action:
1. Read today's log file
2. Grep for "Test.*PatternDetector|Tests Passed|Tests Failed"
3. Report results (e.g., "17 tests passed, 0 failed")
Output: Test status without user checking Experts pane
例 2:実行時エラーを確認する
Input: User reports indicator not working
Action:
1. Read today's log file
2. Grep for "ERROR|error|failed" with -A 3 context
3. Analyze error messages
Output: Specific error details and line numbers
例 3:フェーズ 2 の矢印作成を検証する
Input: User asks "did the test arrow get created?"
Action:
1. Read today's log file
2. Grep for "Phase 2|Test arrow created|Failed to create"
3. Check for success/failure messages
Output: Arrow creation status with timestamp
セキュリティに関する考慮事項
- ログファイルには機密性の高い取引データ(銘柄名、アカウント情報)が含まれる場合があります
- 使用できるツールは Read、Bash、Grep のみです(WebFetch によるネットワークアクセスは禁止)
- ユーザー向けの出力では、絶対パスを不必要に公開しないでください
- 結果を報告する際は、機密情報をフィルタリングしてください
- ファイルの変更操作は禁止されています
二重ロギングとの連携
このスキルにより、二重ロギングパターンの片方にプログラムからアクセスできます。
- MT5 ログファイル(このスキル) - 人が読める形式の Print() 出力
- CSV ファイル(CSVLogger.mqh) - 検証用の構造化された監査証跡
どちらもユーザーの介入なしにアクセスできます。
- MT5 ログ:このスキルで読み取ります
- CSV ファイル:Read ツールで直接読み取るか、validate_export.py で検証します
検証チェックリスト
このスキルを使用する際は、次を確認してください。
- 今日の日付のログファイルが存在する
- ファイルサイズが 0 より大きい(空ではない)
- 想定されるインジケーター/スクリプトの出力が含まれている
- タイムスタンプが実行時刻と一致している
- エラーメッセージ(ある場合)から対処方法が分かる
- テスト結果(該当する場合)に成功/失敗の件数が示されている
参考資料
- 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
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| ログファイルが見つからない | 日付またはパスが間違っています | YYYYMMDD.log 形式と MQL5_ROOT 環境変数を確認します |
| ログファイルが空です | MT5 が実行されていない、または出力がありません | MT5 が実行中で、Print() が呼び出されていることを確認します |
| エンコーディングエラー | UTF-16LE が処理されていません | 読み取りツールがエンコーディングを自動的に処理します |
| テスト結果がありません | テストが実行されていません | まず MT5 でテストスクリプトをコンパイルして実行します |
| Grep で何も見つかりません | パターンが間違っています | 大文字と小文字を区別しない(-i)か、より広いパターンを使用します |
| 古いログデータ | ログのローテーション | 毎日、新しい YYYYMMDD.log ファイルが作成されます |
| パスにスペースが含まれています | パス変数が引用符で囲まれていません | パスを引用符で囲みます:「$LOG_FILE」 |
| 機密データが公開されています | ログに取引情報が含まれています | ユーザーへの報告時に機密フィールドをフィルタリングします |
実行後の振り返り
このスキルの実行が完了したら、終了する前に次の点を確認します。
- コマンドは成功しましたか? — 成功しなかった場合は、失敗の原因となった手順またはエラー表を修正します。
- パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、使用例とパラメーター表を更新して一致させます。
- 回避策が必要でしたか? — 別のフラグや追加手順などで臨機応変に対応した場合は、次回同じ回避策が必要にならないよう、この SKILL.md を更新します。
問題が実在し、再現可能な場合にのみ更新してください。推測に基づく更新は行わないでください。