- EA 交易的主要事件:OnTick
- 基本原理和概念:订单、交易和仓位
- 交易操作类型
- 订单类型
- 按价格和数量划分的订单执行模式
- 挂单到期日期
- 期货订单的保证金计算方法:OrderCalcMargin
- 估算交易操作的利润:OrderCalcProfit
- MqlTradeRequest 结构体
- MqlTradeCheckResult 结构体
- 请求验证:OrderCheck
- 请求发送结果:MqlTradeResult 结构体
- 发送交易请求:OrderSend 和 OrderSendAsync
- 买入和卖出操作
- 修改仓位的止损和/或止盈水平
- 跟踪止损
- 平仓:全部和部分
- 反向平仓:全部和部分
- 挂单
- 修改挂单
- 删除挂单
- 获取活动订单列表
- 订单特性(现行和历史)
- 用于读取活动订单特性的函数
- 按特性选择订单
- 获取仓位列表
- 仓位特性
- 用于读取仓位特性的函数
- 交易特性
- 从历史中选择订单和交易
- 用于从历史中读取订单特性的函数
- 用于从历史中读取交易特性的函数
- 交易类型
- OnTradeTransaction 事件
- 同步和异步请求
- OnTrade 事件
- 监测交易环境变化
- 创建多交易品种 EA 交易
- EA 交易的优势和局限性
- 在 MQL 向导中创建 EA 交易
MqlTradeCheckResult 结构体
在向交易服务器发送交易操作请求之前,建议检查该请求是否已完成且没有形式上的错误。检查由 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 函数的内容中进行介绍。