mcpField
M
mt5-log-reader

mt5-log-reader

github.com/terrylica测试与质量0137 次安装42 周前更新
代码仓库

关于 mt5-log-reader

mt5-log-reader 是用于程序化检查 MetaTrader 5 运行与编译日志的技能。它通过定向搜索帮助开发者验证指标、脚本、EA 和测试输出,减少手动浏览日志的需要。

主要功能

  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 工具会自动处理
  • 结构:以制表符分隔的字段(时间戳、来源、消息)
  • 大小:全天持续增长(通常为 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 第 3-4 阶段
  • CSVLogger 库:Program Files/MetaTrader 5/MQL5/Indicators/Custom/Development/CCINeutrality/lib/CSVLogger.mqh

评论

支持 Markdown