源码与编译
MQ4、EX4、MQ5、EX5:你买到的究竟是什么?
MQ4 与 MQ5 分别是面向 MT4 和 MT5 的可编辑源码文件;EX4 与 EX5 是编译后的程序。SET 保存输入参数,不是策略源码。购买“EA 源码”前,应先核对交付文件清单。
常见扩展名对照
| 文件 | 用途 | 是否包含可编辑策略? |
|---|---|---|
.mq4 | MQL4 源文件,通常用于 MT4 | 可以编辑其中包含的逻辑 |
.ex4 | 编译后的 MT4 程序 | 不提供源码文本 |
.mq5 | 用于 MT5 的 MQL5 源文件 | 可以编辑其中包含的逻辑 |
.ex5 | 编译后的 MT5 程序 | 不提供源码文本 |
.mqh | 被引用的源码或声明 | 取决于文件内容 |
.set | 保存的输入值 | 不能,只有设置 |
MetaQuotes 说明,编译会从主源文件或项目生成可执行程序,后者可以不附带源码单独分发。参见MetaEditor 编译文档与应用文件结构。
一份源文件不一定就是完整项目
假设你收到 Robot.mq5 和 Robot.ex5,但源码引用了交付包中不存在的私有库。虽然文字可以编辑,你可能仍然无法完成构建。这个假设例子说明,“包含源码”与“交付完整可编辑实现”需要分别核对。
应要求清单分别列出源码引用、自定义指标、编译库、DLL、数据文件和可选预设,并说明哪些依赖可以检查或修改。即使主文件可编辑,只有二进制形式的依赖仍可能封装着一部分逻辑。
改扩展名不等于转换
把 EX4 改名为 EX5,并不能移植程序。MQL4 和 MQL5 的语言及运行接口存在差异,MetaQuotes 提供了迁移参考。真正的移植需要相应源码、适配和行为测试。
同样,把编译文件另存为 MQ5 也不会产生可读源码。比较商品时,应问清楚哪些文件能在 MetaEditor 中打开、哪些能自行编译。这与“类似另一款产品”的宣传是不同的问题。
源码、程序和设置应一起记录
每次测试记录源码版本、编译文件、构建日期与 SET 文件。熟悉的文件名不等于可靠的版本标识,因为同一个名称可能反复使用。修改源码后,为实验使用不同的名称,并保留旧包。
参数变化后,旧 SET 不一定仍然适用。要比较参数名、单位和默认值。“距离”可能表示 point、tick 或价格差;不同实现使用相同数字,含义可能完全不同。
可实际执行的交付检查
- 将交付清单与商品说明逐项比较。
- 打开主源码,检查依赖。
- 使用说明指定的平台与环境编译。
- 确认新生成的程序对应这次构建。
- 加载指定设置并完成一次小范围测试。
这些检查用于确认你收到什么、能否使用它们,不能证明交易质量,也不能自动赋予再次分发的权利。商业问题见源码购买检查表,实际操作见MQ5 编译指南。
返回顶部