mcpField
L
log-reader

log-reader

github.com/terrylica测试与质量2144 次安装1 天前更新
代码仓库

关于 log-reader

log-reader 是用于读取 MetaTrader 5 日志的技能,面向验证指标、脚本和 EA 的运行输出的开发者。它可搜索 Print() 调试信息、编译错误和测试结果,减少手动检查 Experts 面板的需要。

主要功能

  1. 01读取当天的 MT5 日志
  2. 02搜索错误、测试结果和指定内容
  3. 03查看近期日志条目
  4. 04检查指标与脚本的初始化输出
  5. 05提醒过滤日志中的敏感信息

适用场景

  1. 01验证指标或脚本是否正常运行
  2. 02查找编译及运行时错误
  3. 03确认单元测试通过或失败
  4. 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(小端序)
  • 结构:以制表符分隔的字段(时间戳、来源、消息)
  • 大小:全天持续增长(通常为 10–100 KB)

说明

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() 语句
  • Read 工具会自动处理 UTF-16LE 编码
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 访问网络)
  • 面向用户输出时,不要不必要地公开绝对路径
  • 报告结果时,请过滤敏感信息
  • 不允许执行文件修改操作

与双重日志记录的集成

此技能支持以程序化方式访问双重日志记录模式中的一部分:

  1. MT5 日志文件(此技能)- 人类可读的 Print() 输出
  2. CSV 文件(CSVLogger.mqh)- 用于验证的结构化审计记录

无需用户介入即可访问两者:

  • MT5 日志:通过此技能读取
  • CSV 文件:使用 Read 工具直接读取,或使用 validate_export.py 验证

验证清单

使用此技能时:

  • 存在今天的日志文件
  • 文件大小 > 0(非空)
  • 包含预期的指标/脚本输出
  • 时间戳与执行时间相符
  • 错误消息(如有)具有可操作性
  • 测试结果(如适用)显示通过/失败计数

参考资料

  • 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

故障排除

问题原因解决方案
找不到日志文件日期或路径错误确认 YYYYMMDD.log 格式和 MQL5_ROOT 环境变量
日志文件为空MT5 未运行或没有输出确保 MT5 正在运行,并且正在调用 Print()
编码错误未处理 UTF-16LERead 工具会自动处理编码
缺少测试结果未执行测试先在 MT5 中编译并运行测试脚本
Grep 查找不到内容模式错误使用不区分大小写选项(-i)或更宽泛的模式
日志数据过旧日志轮换每天都会创建新的 YYYYMMDD.log 文件
路径包含空格路径变量未加引号为路径加引号:"$LOG_FILE"
敏感数据泄露日志中包含交易信息向用户报告时过滤敏感字段

执行后反思

此技能完成后,请在结束前检查:

  1. 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
  2. 参数或输出是否有变化? — 如果底层工具的接口发生变化,请更新用法示例和参数表,使其保持一致。
  3. 是否需要变通处理? — 如果你不得不临时调整(使用不同的标志、增加额外步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方法。

仅在问题确实存在且可复现时才进行更新,不要更新推测性问题。

评论

支持 Markdown