交易请求结构 (MqlTradeRequest)
客户端与交易服务器执行其他安置操作相互作用,通过使用交易请求来执行。交易请求由特殊预定MqlTradeRequest类型的结构来体现,包含必要的执行交易订单。该请求执行结果由MqlTradeResult的类型结构来表示。
struct MqlTradeRequest
{
ENUM_TRADE_REQUEST_ACTIONS action; // 交易操作类型
ulong magic; // EA交易 ID (幻数)
ulong order; // 订单号
string symbol; // 交易的交易品种
double volume; // 一手需求的交易量
double price; // 价格
double stoplimit; // 订单止损限价点位
double sl; // 订单止损价位点位
double tp; // 订单盈利价位点位
ulong deviation; // 需求价格最可能的偏差
ENUM_ORDER_TYPE type; // 订单类型
ENUM_ORDER_TYPE_FILLING type_filling; // 订单执行类型
ENUM_ORDER_TYPE_TIME type_time; // 订单执行时间
datetime expiration; // 订单终止期 (为 ORDER_TIME_SPECIFIED 类型订单)
string comment; // 订单注释
ulong position; // 持仓编号
ulong position_by; // 反向持仓编号
};
字段描述
字段 |
描述 |
---|---|
操作 |
交易操作类型,可以是 ENUM_TRADE_REQUEST_ACTIONS 项目值中的一个。 |
幻数 |
EA交易ID,允许操作分析交易命令过程,当发送交易请求时,每个EA交易都能建立自己独特的ID |
订单 |
订单命令按钮,用来修改待办订单。 |
交易品种 |
交易品种命令,不需要修改命令和关闭放置操作。 |
交易量 |
要求命令成交手数,标识每笔订单真实成交量取决于订单执行类型。 |
价格 |
价格,必须执行到达命令,交易品种的市场底单,它的执行类型是“市场执行”(SYMBOL_TRADE_EXECUTION_MARKET) , TRADE_ACTION_DEAL 类型,不要求价格说明。 |
stoplimit |
价格价值,当价格达到price值时(必要条件),Limit安置待办订单,直到待办订单部能安置。
|
sl |
在不利于价格活动的情况下的止损数值 |
tp |
在优惠价格活动的情况下目标数值 |
偏差 |
最大价格偏差,指定在 points 中 |
类型 |
命令类型,可以是 ENUM_ORDER_TYPE项目值中的一个
|
type_filling |
命令执行类型,可以是 ENUM_ORDER_TYPE_FILLING 项目值中的一个 |
type_time |
命令终结类型,可以是 ENUM_ORDER_TYPE_TIME 项目值中的一个 |
到期 |
命令终结期限( ORDER_TIME_SPECIFIED 命令类型) |
注释 |
命令注解文本 |
当在锁仓系统更改持仓或平仓时,要确保指明其单号(MqlTradeRequest::position)。而在单边系统,虽然是通过交易品种名称来确定持仓,也可以指明单号。 |
发送执行命令 交易操作 需要使用 OrderSend() 函数。对于每个交易操作来说都需要指定强制域;也需要填满可选域。有7个可行情况发送交易命令:
请求执行
开仓交易命令在执行请求模式中(交易根据现行价格要求),需要指定如下9种域:
- 执行
- 交易品种
- 交易量
- 价格
- 止损水平
- 盈利水平
- 误差
- 类型
- _filling类型
也有可能指定“magic”和“comment” 域值
立即执行
开仓交易命令在立即执行模式中(流动价格交易),要求如下9种域的规格:
- 执行
- 交易品种
- 交易量
- 价格
- 止损水平
- 盈利水平
- 误差
- 类型
- _filling类型
有可能指定“magic” 和“comment”域值。
买卖执行
开仓交易命令在买卖执行方式中,要求指定如下5中域:
- 执行
- 交易品种
- 交易量
- 类型
- _filling类型
也有可能指定“magic” 和“comment”域值。
交易执行
这是一个在交易执行模式下持仓的交易订单。它需要指定以下5个字段:
- 执行
- 交易品种
- 交易量
- 类型
- _filling类型
也有可能指定“magic” 和“comment”域值。
打开买入持仓TRADE_ACTION_DEAL 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数 |
打开卖出持仓TRADE_ACTION_DEAL 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数 |
平仓TRADE_ACTION_DEAL 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数 |
SL & TP修正
交易命令在StopLoss 和/或 TakeProfit 价格水平上修改,要求指定如下4种域:
- 执行
- 交易品种
- 止损水平
- 盈利水平
更改持仓止损和止赢值的 TRADE_ACTION_SLTP 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数 |
待办订单
交易命令安置在待办订单中,要求指定如下11种域:
- 行动
- 交易品种
- 交易量
- 价格
- 限制停止
- 止损水平
- 盈利水平
- 类型
- _filling 类型
- _time 类型
- 期满
也有可能指定“magic” 和“comment”域值。
下挂单 TRADE_ACTION_PENDING 交易操作的示例:
#property description "Example of placing pending orders" |
修改待办订单
交易命令在待办订单价格中修改,它要求指定如下7种域:
- 行动
- 命令
- 价格
- 止损水平
- 盈利水平
- _time类型
- 期满
更改挂单价格水平的 TRADE_ACTION_MODIFY 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数 |
删除协办订单
交易命令删除一个待办订单,它要求指定如下2种域
- 行动
- 命令
删除挂单的TRADE_ACTION_REMOVE 交易操作的示例:
#define EXPERT_MAGIC 123456 // EA交易的幻数
|
另见