- EA 交易的主要事件:OnTick
- 基本原理和概念:订单、交易和仓位
- 交易操作类型
- 订单类型
- 按价格和数量划分的订单执行模式
- 挂单到期日期
- 期货订单的保证金计算方法:OrderCalcMargin
- 估算交易操作的利润:OrderCalcProfit
- MqlTradeRequest 结构体
- MqlTradeCheckResult 结构体
- 请求验证:OrderCheck
- 请求发送结果:MqlTradeResult 结构体
- 发送交易请求:OrderSend 和 OrderSendAsync
- 买入和卖出操作
- 修改仓位的止损和/或止盈水平
- 跟踪止损
- 平仓:全部和部分
- 反向平仓:全部和部分
- 挂单
- 修改挂单
- 删除挂单
- 获取活动订单列表
- 订单特性(现行和历史)
- 用于读取活动订单特性的函数
- 按特性选择订单
- 获取仓位列表
- 仓位特性
- 用于读取仓位特性的函数
- 交易特性
- 从历史中选择订单和交易
- 用于从历史中读取订单特性的函数
- 用于从历史中读取交易特性的函数
- 交易类型
- OnTradeTransaction 事件
- 同步和异步请求
- OnTrade 事件
- 监测交易环境变化
- 创建多交易品种 EA 交易
- EA 交易的优势和局限性
- 在 MQL 向导中创建 EA 交易
订单类型
我们知道,MetaTrader 5支持多种 订单类型:两种以当前价格买入和卖出的市场订单,以及六种具有高于和低于市价的预定义激活水平的挂单。所有这些类型在 MQL5 API 中都是可用的,并且由 ENUM_ORDER_TYPE 枚举的元素进行描述。稍后我们将探讨如何在程序中创建特定类型的订单。现在,让我们熟悉一下枚举。
标识符 |
说明 |
---|---|
ORDER_TYPE_BUY |
市场买入订单 |
ORDER_TYPE_SELL |
市场卖出订单 |
ORDER_TYPE_BUY_LIMIT |
Buy Limit 挂单 |
ORDER_TYPE_SELL_LIMIT |
Sell Limit 挂单 |
ORDER_TYPE_BUY_STOP |
Buy Stop 挂单 |
ORDER_TYPE_SELL_STOP |
Sell Stop 挂单 |
ORDER_TYPE_BUY_STOP_LIMIT |
Buy Limit 当价格达到指定的较高水平时下达的挂单 |
ORDER_TYPE_SELL_STOP_LIMIT |
Sell Limit 当价格达到指定的较低水平时下达的挂单 |
ORDER_TYPE_CLOSE_BY |
以相反方向的仓位平仓的订单 |
最后一个要素对应于反向平仓的行为:这种可能性仅存在于 对冲 账户和金融工具的特性允许此类操作 (SYMBOL_ORDER_CLOSEBY)。
下图可帮助你理解挂单激活的一般原则。该图以灰色显示预期的期货价格变动情况。但目前还不知道哪个预测是正确的。
挂单激活方案
Buy Stop 和 Sell Stop 挂单遵循水平突破原则:对于 Buy Stop,该水平应位于当前价格之上,对于 Sell Stop,该水平应低于当前价格。换言之,在一个给定的水平上,我们希望执行买入或卖出运算,以期待行情沿趋势方向进一步发展。
Buy Limit 和 Sell Limit 执行从水平反弹的策略,在这种情况下,买入激活价格低于当前价格,卖出价格更高。这意味着趋势发生变化或者在区间内波动。在上图中,挂单的相同上限(较高价格)和下限(较低价格)激活水平用于说明突破和反弹。
挂单可以按当前价格下单,很可能会立即执行。此外,与市场订单不同的是,这种应用于限价订单的技术保证了交易价格不会低于要求的价格。
Buy Stop Limit 和 Sell Stop Limit 类型的订单不会因为激活而被发送到市场,而是在原始订单中指定的某个额外价位下预设挂单 Buy Limit 或 Sell Limit。
对于交易所金融工具,限价订单(Buy Limit 和 Sell Limit)通常直接显示在订单簿中,并且对其他市场参与者可见。
相比之下,Stop 和 Stop Limit 订单(Buy Stop、Sell Stop、Buy Stop Limit 和 Sell Stop Limit)不直接输出到外部交易系统。在达到止损价格之前,这些类型的订单将在 MetaTrader 5 平台中处理。当达到买入止损订单或卖出止损订单中指定的止损价格时,执行相应的市场操作。当达到 Buy Stop Limit 或 Sell Stop Limit 订单中指定的止损价格时,就会下达相应的限制订单。
在交易所执行模式下,不会检查下达限制订单时指定的价格。该价格可以被指定为高于当前 Ask 价格(对于买入订单)和低于 Bid 价格(对于卖出订单)。以这样的价格下单时,该订单几乎会立即被触发并变成市场订单。
请注意,并非所有类型的订单都允许用于特定的金融工具: SYMBOL_ORDER_MODE 特性描述了允许的订单类型标志。