# ea-development：参考解答

用于自查，不是自动批改、真人反馈、能力认证或业务批准。

## MQL5 基础

示例没有真实下单调用；初始化失败返回错误，数据不足直接跳过，释放句柄。编译验收应保留工具版本与零错误日志，课程不能伪造已运行截图。

常见错误：不要在每个tick重建指标句柄；默认当前bar与已收盘bar不是同一信息集。

### m1-l1 语法与结构

题设：指出指标句柄为什么不能在每个tick无条件重建，以及退出时应做什么。

参考结果与判定标准：反复重建浪费资源并可能未准备好数据；初始化建立并检查INVALID_HANDLE，退出释放。文件阅读不等于编译通过，需本机日志证明。

### m1-l2 指标与内置函数

题设：策略要比较最近两个已收盘SMA值，偏移应读0/1还是1/2？失败时可否用数组默认0？

参考结果与判定标准：应读1/2；失败或不足则暂停该次信号并记日志，不能用0伪装有效均线。下单逻辑不能直接消费未核验值。

### m1-l3 语法练习

题设：交事件结构说明和本机编译记录；没有MetaEditor时交静态检查并注明缺口，不编造成功截图。

参考结果与判定标准：应能指出OnInit/OnTick/OnDeinit及句柄生命周期。无终端即未编译/未运行；网站提供源码不是终端验收。

## EA 逻辑开发

同一新bar只登记一次，品种与策略标识共同隔离。执行器未实现时明确“信号演示，不含下单”，不能把日志信号当成交记录。

常见错误：课程示例刻意不调用OrderSend；新增执行代码需要另外的模拟测试与平台核验。

### m2-l1 OnTick 交易逻辑

题设：同一bar有50个tick，配套日志策略应评估几次？重启后还要防哪种重复？

参考结果与判定标准：按新bar规则至多一次；重启可能再次处理同一bar，生产需持久去重和对账。本示例仅日志，不声称有跨重启订单幂等。

### m2-l2 订单管理与错误处理

题设：设请求超时且未知是否成交，设计纸面错误处理记录，禁止发真实订单。

参考结果与判定标准：记录唯一请求、时间与错误，冻结新同向请求，查询后才决定恢复；不能把超时当拒单直接重发。未实现接口要标设计方案。

### m2-l3 SMA EA 开发

题设：给快线前/今99/102、慢线100/101，判断上穿；再给前101/今102、慢100/101判断是否新上穿。

参考结果与判定标准：前一组从快≤慢到快>慢，满足；后一组之前已在上方，不是新上穿。结果须绑定已收盘时点，日志信号不等于实际成交。

## 回测与优化

两份证据分开：MQL仅信号，Python仅合成无杠杆研究。须记录参数、输入哈希、训练/测试区间与失败样本，不承诺真实部署。

常见错误：优化不能以最终测试收益为筛选依据；不能把信号数换成成交笔数。

### m3-l1 策略测试器使用

题设：配套只读EA测试器显示零交易，应判执行失败还是符合设计？还应核查什么？

参考结果与判定标准：零交易符合不下单设计；还须核初始化、bar处理和信号日志。不能据此声称自动订单或盈利测试通过，终端未运行则保留缺口。

### m3-l2 参数优化

题设：若对20组均线只统计日志上穿次数，能否挑最多的一组称最佳盈利参数？

参考结果与判定标准：不能，上穿次数不是收益或风险指标。需要独立定义执行、费用与风险后再研究，并用未参与选参数据验证。

### m3-l3 EA 回测报告

题设：为只读SMA示例交一份报告模板，必须包括无订单接口声明和至少一项尚未验证能力。

参考结果与判定标准：声明OrderSend/CTrade未调用；终端编译/长时运行若未做则写未验证。不能写已完成实盘订单、保证回撤或认证可上线。
