log-reader

Read MetaTrader 5 log files. TRIGGERS - MT5 logs, Experts pane, indicator errors, compilation errors.

29 stars

Best use case

log-reader is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Read MetaTrader 5 log files. TRIGGERS - MT5 logs, Experts pane, indicator errors, compilation errors.

Teams using log-reader should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/log-reader/SKILL.md --create-dirs "https://raw.githubusercontent.com/terrylica/cc-skills/main/plugins/mql5/skills/log-reader/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/log-reader/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How log-reader Compares

Feature / Agentlog-readerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Read MetaTrader 5 log files. TRIGGERS - MT5 logs, Experts pane, indicator errors, compilation errors.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# MT5 Log Reader

Read MetaTrader 5 log files directly to access Print() output from indicators, scripts, and expert advisors without requiring manual Experts pane inspection.

> **Self-Evolving Skill**: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

## Purpose

Implement "Option 3" dual logging pattern:

- **Print()** - MT5 log files (human-readable via Experts pane)
- **CSV files** - Structured data (programmatic analysis)

Claude Code can autonomously read both outputs without user intervention.

## When to Use This Skill

Use this skill when:

- Validating MT5 indicator/script execution
- Checking compilation or runtime errors
- Analyzing Print() debug output
- Verifying unit test results (Test_PatternDetector, Test_ArrowManager)
- User mentions checking "Experts pane" manually

## Log File Location

MT5 logs are stored at:

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

**File Format**:

- Encoding: UTF-16LE (Little Endian)
- Structure: Tab-separated fields (timestamp, source, message)
- Size: Grows throughout day (typically 10-100KB)

## Instructions

### 1. Construct today's log path

```bash
/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 the entire log file

Use Read tool:

- File path: Absolute path from step 1
- The file contains all Print() statements from MT5 indicators/scripts
- UTF-16LE encoding is automatically handled by Read tool

### 3. Search for specific content (optional)

Use Grep to filter entries:

```
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. Analyze recent entries (optional)

Use Bash with tail for latest output:

```bash
tail -n 50 "$LOG_FILE"
```

## Common Validation Patterns

### Check unit test results

Search for test pass/fail indicators:

```
Pattern: test.*passed|test.*failed|Tests Passed|Tests Failed|ALL TESTS PASSED
Output mode: content
Context: -B 2 -A 2
```

### Find compilation errors

```
Pattern: error|ERROR|warning|WARNING|failed to create
Output mode: content
Context: -A 3
```

### Monitor specific indicator

```
Pattern: CCI Rising Test|PatternDetector|ArrowManager
Output mode: content
Context: -A 2
```

### View initialization messages

```
Pattern: OnInit|initialization|Initialization complete|Phase \d+
Output mode: content
```

## Examples

### Example 1: Validate unit test completion

```
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
```

### Example 2: Check for runtime errors

```
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
```

### Example 3: Verify Phase 2 arrow creation

```
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
```

## Security Considerations

- Log files may contain sensitive trading data (symbol names, account info)
- Restricted to Read, Bash, Grep tools only (no network access via WebFetch)
- Do not expose absolute paths unnecessarily in user-facing output
- Filter sensitive information when reporting results
- No file modification operations allowed

## Integration with Dual Logging

This skill enables programmatic access to 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 for validation

Both are accessible without user intervention:

- MT5 logs: Read via this skill
- CSV files: Read directly via Read tool or validate_export.py

## Validation Checklist

When using this skill:

- [ ] Log file exists for today's date
- [ ] File size > 0 (not empty)
- [ ] Contains expected indicator/script output
- [ ] Timestamps match execution time
- [ ] Error messages (if any) are actionable
- [ ] Test results (if applicable) show pass/fail counts

## 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`

---

## Troubleshooting

| Issue                  | Cause                        | Solution                                          |
| ---------------------- | ---------------------------- | ------------------------------------------------- |
| Log file not found     | Wrong date or path           | Verify YYYYMMDD.log format and MQL5_ROOT env var  |
| Empty log file         | MT5 not running or no output | Ensure MT5 is running and Print() is being called |
| Encoding errors        | UTF-16LE not handled         | Read tool handles encoding automatically          |
| Missing test results   | Test not executed            | Compile and run test script in MT5 first          |
| Grep finds nothing     | Wrong pattern                | Use case-insensitive (-i) or broader pattern      |
| Old log data           | Log rotation                 | Each day creates new YYYYMMDD.log file            |
| Path contains spaces   | Unquoted path variable       | Quote paths: "$LOG_FILE"                          |
| Sensitive data exposed | Trading info in logs         | Filter sensitive fields when reporting to user    |


## Post-Execution Reflection

After this skill completes, check before closing:

1. **Did the command succeed?** — If not, fix the instruction or error table that caused the failure.
2. **Did parameters or output change?** — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
3. **Was a workaround needed?** — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

Related Skills

voice-quality-audition

29
from terrylica/cc-skills

Audition Kokoro TTS voices to compare quality and grade. TRIGGERS - audition voices, kokoro voices, voice comparison, tts voice, voice quality, compare voices.

settings-and-tuning

29
from terrylica/cc-skills

Configure TTS voices, speed, timeouts, queue depth, and bot settings. TRIGGERS - configure tts, change voice, tts speed, queue depth, tts timeout, bot config, tune settings, adjust parameters.

full-stack-bootstrap

29
from terrylica/cc-skills

One-time bootstrap for Kokoro TTS engine, Telegram bot, and BotFather setup. TRIGGERS - setup tts, install kokoro, botfather, bootstrap tts-tg-sync, configure telegram bot, full stack setup.

diagnostic-issue-resolver

29
from terrylica/cc-skills

Diagnose and resolve TTS and Telegram bot issues. TRIGGERS - tts not working, bot not responding, kokoro error, audio not playing, lock stuck, telegram bot troubleshoot, diagnose issue.

component-version-upgrade

29
from terrylica/cc-skills

Upgrade Kokoro model, bot dependencies, or TTS components. TRIGGERS - upgrade kokoro, update model, upgrade bot, update dependencies, version bump, component update.

clean-component-removal

29
from terrylica/cc-skills

Remove TTS and Telegram sync components cleanly. TRIGGERS - uninstall tts, remove telegram bot, uninstall kokoro, clean tts, teardown, component removal.

send-message

29
from terrylica/cc-skills

Use when user wants to send a text message on Telegram as their personal account via MTProto, text someone, or message a contact by username, phone, or chat ID.

send-media

29
from terrylica/cc-skills

Use when user wants to send or upload a file, photo, video, voice note, or document on Telegram via their personal account.

search-messages

29
from terrylica/cc-skills

Use when user wants to search for messages across all Telegram chats or within a specific chat, find old messages by text, or look up Telegram message history filtered by sender.

pin-message

29
from terrylica/cc-skills

Use when user wants to pin or unpin a message in a Telegram chat, group, or channel, or manage pinned messages.

mark-read

29
from terrylica/cc-skills

Use when user wants to mark Telegram chats as read, clear unread badges and mentions, dismiss notifications, or acknowledge messages to remove the unread counter.

manage-members

29
from terrylica/cc-skills

Use when user wants to manage Telegram group or channel members, including inviting users, kicking or banning someone, listing members, or filtering admins.