mt5-log-reader

majiayu000's avatarfrom majiayu000

Reads MetaTrader 5 log files to validate indicator execution, unit tests, and compilation errors. Use when user mentions Experts pane, MT5 logs, errors, or asks "did it work". Triggers - check logs, did it work, Experts pane, Print output, runtime errors, debug output. (project)

⭐5stars🔀1forks📁View on GitHub🕐Updated Jan 11, 2026

When & Why to Use This Skill

The MT5 Log Reader is a specialized Claude skill designed to programmatically access and analyze MetaTrader 5 (MT5) log files. It enables developers to validate indicator execution, debug MQL5 code, and monitor runtime errors directly from the Experts pane. By automating the retrieval of Print() outputs and compilation logs, it streamlines the development, troubleshooting, and testing of custom indicators, scripts, and Expert Advisors (EAs).

Use Cases

  • Debugging Runtime Errors: Automatically search and analyze MT5 Experts logs for specific error codes and failed execution context to identify MQL5 logic flaws.
  • Indicator Version Validation: Verify if the correct version of an indicator or EA is successfully loaded and running after a new compilation.
  • Automated Unit Testing: Programmatically check log files for pass/fail results from internal MQL5 unit test frameworks like PatternDetector or ArrowManager.
  • Calculation Logic Troubleshooting: Monitor internal calculation values via Print() debug output to identify why signals, histograms, or graphical objects are not appearing as expected.
  • Compilation Monitoring: Check MetaEditor-generated .log files to ensure successful compilation with zero errors and warnings without manually opening the file explorer.
namemt5-log-reader
descriptionReads MetaTrader 5 log files to validate indicator execution, unit tests, and compilation errors. Use when user mentions Experts pane, MT5 logs, errors, or asks "did it work". Triggers - check logs, did it work, Experts pane, Print output, runtime errors, debug output. (project)
allowed-toolsRead, Grep, Bash

MT5 Log Reader

Overview

Read MetaTrader 5 log files programmatically to access Print() output from indicators, scripts, and expert advisors. Implements dual logging pattern where Print() statements go to MT5 logs (human-readable) and CSV files provide structured data for validation.

When to Use

Use this skill when:

  • Validating MT5 indicator/script execution
  • Checking compilation or runtime errors
  • Analyzing Print() debug output from indicators
  • Verifying unit test results (Test_PatternDetector, Test_ArrowManager)
  • User mentions checking "Experts pane" or "log" manually
  • User asks "did it work?" or "check the output"

Log File Structure

Runtime Logs (Experts Pane)

MT5 runtime logs are stored at:

$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/YYYYMMDD.log

File Format:

  • Encoding: UTF-16LE (Little Endian) - Read tool handles automatically
  • Structure: Tab-separated fields (timestamp, source, message)
  • Size: Grows throughout day (typically 10-100KB, can reach 5MB+)

Compilation Logs (Per-File)

MetaEditor creates a .log file next to each compiled .mq5:

# Example: Fvg.mq5 creates Fvg.log in the same directory
$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/FVG/Fvg.log

File Format:

  • Encoding: UTF-16LE (often readable with plain cat)
  • Contains: Compilation progress, error count, warnings, timing
  • Success indicator: "0 errors, 0 warnings"

Important: Wine/CrossOver returns exit code 1 even on successful compilation. Always check the .log file or verify .ex5 exists.

Workflow

Step 1: Construct Log Path

Determine today's date and build the absolute path:

TODAY=$(date +"%Y%m%d")
LOG_FILE="$MQL5_ROOT/Program Files/MetaTrader 5/MQL5/Logs/${TODAY}.log"

Step 2: Search for Relevant Entries

Use Grep tool to filter log entries (more efficient than reading entire file):

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)

Common search patterns:

  • CCI Rising Test|CCI_Rising_Test - Find specific indicator output
  • error|ERROR|failed - Find error messages
  • v0\\.4\\.0|v0\\.3\\.0 - Find specific version output
  • Phase \\d+|Test arrow created - Find initialization messages
  • DEBUG Bar - Find calculation output

Step 3: Analyze Results

Check the grep output for:

  • Timestamps - Verify output matches expected execution time
  • Error messages - Identify specific failures with context
  • Version numbers - Confirm correct .ex5 file is loaded
  • DEBUG output - Validate calculation results
  • Test results - Verify unit test pass/fail status

Common Validation Patterns

Check indicator version loaded

After compilation, verify the new .ex5 file is loaded:

# Search for version string in recent log entries
Pattern: "v0\\.4\\.0|=== CCI Rising Test"
Output mode: content
Context: -A 2

Look for initialization message with version number and timestamp matching the reload time.

Find runtime errors

Pattern: "error|ERROR|failed|Failed"
Output mode: content
Context: -A 3 -B 1  # Show 3 lines after, 1 before

Analyze error codes (e.g., 4003 = invalid time) and error context.

Monitor calculation output

Pattern: "DEBUG Bar"
Output mode: content
Context: -A 0  # No extra context needed
-n: true  # Show line numbers

Verify calculation values are reasonable (not EMPTY_VALUE, not reversed).

Verify test arrow creation

Pattern: "Phase 2|Test arrow created|Failed to create"
Output mode: content
Context: -A 2

Check for success message with timestamp.

Large Log Files

If log file exceeds 5MB (Read tool limit):

  1. Use Grep exclusively (more efficient than reading entire file)
  2. Use time-based filtering with -A and -B context
  3. Search for specific indicator names to narrow results

Integration with Dual Logging

This skill accesses one half of the dual logging pattern:

  1. MT5 Log Files (this skill) - Human-readable Print() output
  2. CSV Files (CSVLogger.mqh) - Structured audit trails

Both are accessible programmatically without user intervention.

Security Considerations

  • Log files may contain sensitive trading data (symbol names, account info)
  • Do not expose absolute paths unnecessarily in user-facing output
  • Filter sensitive information when reporting results
  • No file modification operations allowed (read-only access)

Examples

Example 1: Verify indicator reloaded after compilation

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"

Example 2: Find why histogram is empty

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."

Example 3: Validate calculation fix

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."

References

  • MT5 file locations: docs/guides/MT5_FILE_LOCATIONS.md
  • Dual logging implementation: docs/plans/cci-rising-pattern-marker.yaml Phase 3-4
  • CSVLogger library: Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/CCINeutrality/lib/CSVLogger.mqh