- EA 交易的主要事件:OnTick
- 基本原理和概念:订单、交易和仓位
- 交易操作类型
- 订单类型
- 按价格和数量划分的订单执行模式
- 挂单到期日期
- 期货订单的保证金计算方法:OrderCalcMargin
- 估算交易操作的利润:OrderCalcProfit
- MqlTradeRequest 结构体
- MqlTradeCheckResult 结构体
- 请求验证:OrderCheck
- 请求发送结果:MqlTradeResult 结构体
- 发送交易请求:OrderSend 和 OrderSendAsync
- 买入和卖出操作
- 修改仓位的止损和/或止盈水平
- 跟踪止损
- 平仓:全部和部分
- 反向平仓:全部和部分
- 挂单
- 修改挂单
- 删除挂单
- 获取活动订单列表
- 订单特性(现行和历史)
- 用于读取活动订单特性的函数
- 按特性选择订单
- 获取仓位列表
- 仓位特性
- 用于读取仓位特性的函数
- 交易特性
- 从历史中选择订单和交易
- 用于从历史中读取订单特性的函数
- 用于从历史中读取交易特性的函数
- 交易类型
- OnTradeTransaction 事件
- 同步和异步请求
- OnTrade 事件
- 监测交易环境变化
- 创建多交易品种 EA 交易
- EA 交易的优势和局限性
- 在 MQL 向导中创建 EA 交易
请求发送结果:MqlTradeResult 结构体
为了响应由 OrderSend 或 OrderSendAsync 函数(将在下一章节中介绍这两个函数)执行的交易请求,服务器应返回请求处理结果。为此,使用了一个特殊的预定义结构体 MqlTradeResult。
struct MqlTradeResult
|
下表对其字段进行了说明。
字段 |
说明 |
---|---|
retcode |
交易服务器返回码 |
deal |
执行时的交易订单号(在 TRADE_ACTION_DEAL 交易操作期间) |
order |
下达的订单号(在 TRADE_ACTION_PENDING 交易操作期间) |
volume |
经纪商确认的交易量(取决于订单 执行模式) |
price |
|
bid |
当前市场买价 |
ask |
当前市场卖价 |
comment |
经纪商对交易的注释(默认情况下,用解密的交易服务器返回代码填充) |
request_id |
请求 ID,由终端在发送给交易服务器时设置 |
retcode_external |
外部交易系统返回的错误代码 |
正如我们将在下面看到的,在进行交易操作时,MqlTradeResult 类型的变量作为 OrderSend 或 OrderSendAsync 函数中的第二个参数通过引用传递。该变量会返回结果。
向服务器发送交易请求时,终端将 request_id 标识符设置为唯一值。在随后进行交易事件分析时需要这个标识符(使用异步函数 OrderSendAsync 时必须进行分析)。此标识符允许你将发送的请求与其传递给 OnTradeTransaction 事件处理程序的处理结果相关联。
retcode_external 字段中错误的存在和类型取决于经纪商和转发交易操作的外部交易系统。
根据交易操作和发送方式的不同,请求结果会以不同的方式进行分析。我们将在随后的具体操作部分处理这个问题:市场买卖、下单和撤单、修改仓位和平仓。