在向交易服务器发送交易操作请求之前,建议检查该请求是否已完成且没有形式上的错误。检查由 OrderCheck 函数执行,将 MqlTradeRequest 结构体中的请求和 MqlTradeCheckResult 结构体类型的接收变量传递给该函数。
除了请求的正确性之外,该结构体还允许在执行交易操作之后评估账户状态,特别是结余、资金和保证金。
struct MqlTradeCheckResult
|
下表对这些字段进行了说明。
字段 |
说明 |
|---|---|
retcode |
假定的返回码 |
balance |
执行交易操作后观察到的余额值 |
equity |
执行交易操作后进行观察到的自有资金值 |
profit |
执行交易操作后观察到的浮动盈利值 |
margin |
交易后锁定的总保证金 |
margin_free |
执行交易操作后剩余的自有可用资金量 |
margin_level |
将在执行交易操作后设定的保证金水平 |
comment |
响应代码的注释,错误说明 |
在通过调用 OrderCheck 填充的结构体中,retcode 字段将包含一个平台支持的结果代码,用于处理真实交易请求并将类似的 retcode 字段放入 MqlTradeResult 结构体中(在调用 OrderSend 和 OrderSendAsync 交易函数之后)。
返回码常量显示在 MQL5 文档中。为了在调试 EA 交易时更直观地输出到日志中,在 TradeRetcode.mqh 文件中定义了所应用的枚举 TRADE_RETCODE。其中的所有元素都有与内置常量相匹配的标识符,但没有公共前缀 "TRADE_RETCODE_"。例如,
enum TRADE_RETCODE
|
因此,使用 TRCSTR(r.retcode)(其中 r 是一个结构)可提供数字代码的最小说明。
我们将考虑一个应用宏和分析结构体的示例,在下一节关于 OrderCheck 函数的内容中进行介绍。