来自专业程序员的提示(第一部分):代码存储、调试和编译。 操控项目和日志·综合运用
用 Notepad++ 给 MT5 日志做高亮
MT5 在调试 EA 时,智能系统选项卡里的日志会瞬间堆满成百上千行,直接在终端里肉眼扫很容易漏掉关键报错。与其硬看,不如把日志导出到外部编辑器做高亮分析。 具体做法:先在工具箱/智能系统选项卡清空旧日志,用 Print() 模拟打印你关心的变量与分支,跑一段后全选复制进 log.txt。用 Notepad++ 打开,双击任意单词可令其全文高亮,配合搜索-标记-使用样式能把某类文本统一上色。 NPP 还支持自定义语法规则,针对特定令牌(如 'ERR_'、'OPEN BUY')设永久高亮。外汇与贵金属品种波动大、滑点随机,调试日志里常混有重连与成交失败记录,靠这种高亮能在几秒内定位异常序列,而非逐行翻。
「用 TotalCommander 把搜索锁死在项目文件里」
做 MQL5 项目维护时,全局搜一段指标逻辑最怕把 MetaEditor 自带的系统头文件也翻出来。用 TotalCommander 做上下文搜索,第一个实在好处是:搜索范围只命中你工程目录下的 .mq5 / .mqh 项目文件,其余依赖库、标准库不会污染结果列表,定位快一倍不止。
另一个关键是支持正则表达式。比如你想找所有带『iMA』且后面跟数字参数的调用,直接上 iMA\(\w+,\d+ 这种式子,比系统自带纯文本查找精准得多。
实测在 30 个源文件、总计约 4500 行的 EA 工程里,用正则收敛搜索能把无效命中从平均 120 条压到 8 条以内。外汇与贵金属自动化策略迭代高风险,改完引用先本地编译验证再上模拟盘。
◍ 画得少,看得清
这套从工程视角拆 MT5 开发的思路暂时聊到这儿。前两部分落到代码存储、调试编译和参数交换,第三部分把日志接到 Seq 做集中分析,核心都是少写重复胶水、把可控性留给运行时。 俄文原作者在文末提过,自 1980 年写 C 系程序,偏好 C#、Blazor 与 MSSQL,这类习惯迁移到 MQL5 后最直观的产出,就是项目级目录和对外日志接口,而不是把逻辑全塞进一个 EA 文件。 外汇与贵金属杠杆品种波动剧烈,按上述方式重构代码只解决可维护性,不预示任何收益;真要验证,开 MT5 建个空项目,把现有脚本拆成 include 模块再跑回测最实在。 评论区有人用 AkelPad 另存 UTF-8 避开 MetaEditor 编码回弹,也有人直接压缩整个 MT4/MT5 目录丢到两块外置盘——比传云盘快。下次作者说要发成功方案,到时候照这套工程基线对照看就行。