mt5-log-reader
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)
How do I install this agent skill?
npx skills add https://github.com/terrylica/mql5-crossover --skill mt5-log-readerIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is designed to read and analyze MetaTrader 5 log files for debugging purposes. It includes standard instructional content for constructing file paths and filtering logs. A low-risk surface for indirect prompt injection exists as the skill processes external log data, though the agent's capabilities are restricted to read-only tools in this context.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
1/1 file flagged
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
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 outputerror|ERROR|failed- Find error messagesv0\\.4\\.0|v0\\.3\\.0- Find specific version outputPhase \\d+|Test arrow created- Find initialization messagesDEBUG 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):
- Use Grep exclusively (more efficient than reading entire file)
- Use time-based filtering with
-Aand-Bcontext - Search for specific indicator names to narrow results
Integration with Dual Logging
This skill accesses one half of the dual logging pattern:
- MT5 Log Files (this skill) - Human-readable Print() output
- 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.yamlPhase 3-4 - CSVLogger library:
Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/CCINeutrality/lib/CSVLogger.mqh
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/terrylica/mql5-crossover/mt5-log-reader">View mt5-log-reader on skillZs</a>