交易方法的错误处理
区分成交、挂单与券商拒绝。 发送下一笔交易前,先读懂结果。
分步文字说明
- 0:00
交易方法的错误处理
本教程介绍 MT5 的交易结果和错误。我们会区分完全成交、部分成交、挂单、券商拒绝以及结果尚未确定的情况。
- 0:17
打开交易方法的结果指南
打开 M T 五点 M R P C 点 pro,在交易操作分类中选择 Order Send,然后展开代码示例下方的结果指南。使用其他交易方法时,应查看那个方法自己的指南。
- 0:37
1. 检查 HTTP 状态码
首先检查 HTTP 状态码。HTTP 状态码二百表示 API 已收到请求并返回响应,接下来读取 JSON 响应体。如果是其他状态码,先查看 HTTP 错误及其响应内容。
- 0:59
2. 检查 error 和交易错误详情
如果 error 不为空,读取 errorCode 和 errorMessage。如果包含 mqlErrorTradeIntCode 及其说明,也要一起检查。券商拒绝可能出现在这个错误结构中,应根据实际错误码选择处理方式。
- 1:21
3. 读取券商返回的结果
对于交易请求,HTTP 状态码二百且没有 API 错误,表示请求已提交给券商,但并不代表订单已经成交。请读取 data 点 returnedCode、returnedStringCode,以及该方法对应的结果字段。
- 1:45
市价单:完全还是部分成交?
对于市价买入或卖出,一万零九 Done 表示已完成。一万零一十 Done Partial 表示部分成交。读取成交量、成交价和成交记录,并查看持仓和历史,确认剩余部分的状态。
- 2:05
挂单成功不等于立即成交
市价单返回一万零八 Placed,表示已接受执行,但尚未确认成交。挂单返回 Placed 或 Done,表示挂单已建立。保存 data 点 order,并查看 Opened Orders。挂单仍在等待触发价格。
- 2:27
市场休市属于券商拒绝
即使没有 error,data 中仍可能包含券商拒绝结果。一万零一十八表示市场休市,需要等待该品种的交易时段。不能因为 data 存在就认定交易成功,应根据返回码判断实际结果。
- 2:48
根据具体错误修正请求
资金不足时,应降低交易量或确保有足够可用保证金。止损止盈无效时,修正价格和距离。交易量无效时,按品种允许的范围和步长设置。没有报价时,等待新报价。指南将错误码与处理步骤放在一起。
- 3:13
超时后先核对账户状态
交易超时或券商连接中断时,结果可能尚未确定。再次提交前,先检查挂单、持仓和历史,否则可能造成重复交易。同一券商错误码可能出现在 data 的 returnedCode 或 error 的 mqlErrorTradeIntCode 中。
- 3:37
平仓和修改分别有自己的规则
使用 Order Close 时,读取平仓结果,再检查剩余持仓。部分平仓后仍会保留持仓量。使用 Order Modify 时,Done 表示修改完成,No Changes 表示目标值本来就已设置。不要将 Order Send 的规则套用到所有交易方法。
- 4:02
预检查不会发送交易
Order Check 与 Order Send 不同。请读取 data 点 mqlTradeCheckResult 内的返回码和说明。返回码为零且说明为 Done,表示预检查通过,但不会创建订单。仍需单独发送交易并检查执行结果。
- 4:26
交易检查:一、二、三
每笔交易都应先检查 HTTP 状态码,再检查 error,最后按当前方法读取券商结果。保存相应的订单、成交或持仓标识符。发生超时或连接中断后,先核对账户状态,再决定是否重新发送请求。