关于 log-reader
log-reader 是用于读取 MetaTrader 5 日志的技能,面向验证指标、脚本和 EA 的运行输出的开发者。它可搜索 Print() 调试信息、编译错误和测试结果,减少手动检查 Experts 面板的需要。
主要功能
- 01读取当天的 MT5 日志
- 02搜索错误、测试结果和指定内容
- 03查看近期日志条目
- 04检查指标与脚本的初始化输出
- 05提醒过滤日志中的敏感信息
适用场景
- 01验证指标或脚本是否正常运行
- 02查找编译及运行时错误
- 03确认单元测试通过或失败
- 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 访问网络)
- 面向用户输出时,不要不必要地公开绝对路径
- 报告结果时,请过滤敏感信息
- 不允许执行文件修改操作
与双重日志记录的集成
此技能支持以程序化方式访问双重日志记录模式中的一部分:
- MT5 日志文件(此技能)- 人类可读的 Print() 输出
- 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-16LE | Read 工具会自动处理编码 |
| 缺少测试结果 | 未执行测试 | 先在 MT5 中编译并运行测试脚本 |
| Grep 查找不到内容 | 模式错误 | 使用不区分大小写选项(-i)或更宽泛的模式 |
| 日志数据过旧 | 日志轮换 | 每天都会创建新的 YYYYMMDD.log 文件 |
| 路径包含空格 | 路径变量未加引号 | 为路径加引号:"$LOG_FILE" |
| 敏感数据泄露 | 日志中包含交易信息 | 向用户报告时过滤敏感字段 |
执行后反思
此技能完成后,请在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
- 参数或输出是否有变化? — 如果底层工具的接口发生变化,请更新用法示例和参数表,使其保持一致。
- 是否需要变通处理? — 如果你不得不临时调整(使用不同的标志、增加额外步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方法。
仅在问题确实存在且可复现时才进行更新,不要更新推测性问题。
评论
支持 Markdown