深算 Quant · 开发与研究

MT5 成交模式错误 10030

理解 MT5 Unsupported filling mode 返回码 10030,结合品种执行模式和 SYMBOL_FILLING_MODE 检查 FOK/IOC/RETURN,并单独复测修复版本。

10030 表示成交模式不被接受

交易请求的 type_filling 与品种及请求类型不匹配时可能返回 TRADE_RETCODE_INVALID_FILL(10030)。它是执行兼容问题,不是策略信号或历史收益判断。先保留交易返回码和脱敏日志。

同时检查执行模式与成交标志

使用 SYMBOL_TRADE_EXEMODE 核对品种执行方式,使用 SYMBOL_FILLING_MODE 读取允许的位标志。FOK 与 IOC 是能力位标志;ORDER_FILLING_* 是请求枚举,不应把原始位掩码直接赋给 type_filling。

RETURN 不能用于 Market Execution 的即时成交请求;挂单的规则与即时成交不同,不能把同一个回退算法用于所有订单类型。没有获准 FOK / IOC 时应按具体执行模式和官方规格处理,不强制选一个值反复重试。

使用交易类时按品种配置

下面是即时交易前的检查片段,不是完整 EA。交易类返回 true 也不代替检查服务器交易返回码;在目标券商和账户模式下再次验证。

#include <Trade/Trade.mqh>
CTrade trade;

// Place inside the EA initialization / trade setup.
if(!trade.SetTypeFillingBySymbol(_Symbol))
{
   Print("Cannot select supported filling policy");
   return;
}
// After a trade request, inspect trade.ResultRetcode().

直接构建 MqlTradeRequest 时

结合 action、订单类型、执行模式及 SYMBOL_FILLING_FOK / SYMBOL_FILLING_IOC 位标志显式选择请求策略。成交模式不是唯一约束;同时核对手数步长、止损距离、保证金与交易权限。不要把所有返回码都归因于 filling mode。

保持版本边界,复测交易证据

调整成交模式后形成新源码版本并重新编译,使用固定品种、周期、区间和参数复测。保留原始失败结果与修改版结果、实际成交和报告。修复后有成交不表示盈利,历史证据不代替模拟或实盘风险评估。

从明确的规则,开始下一次开发

保留源码与测试条件,在真实反馈中继续迭代。

开发者中心