MT5 EA交易期货-交易所异步回调
在外汇交易中,我们报单后是马上成交或挂单的(同步),但在期货交易中报单后不是马上成交或挂单的,需要等待交易所撮合该报单(即异步),撮合后交易所会把处理结果发回给我们(即异步回调),此时我们才知道该报单是成交或挂单。
请注意期货报单异步回调是由期货的交易机制决定的,并不是使用MT5交易期货才会这样,使用其他任何期货交易软件和任何编程语言,期货报单都是异步回调的。更多请看期货与外汇交易机制的不同
交易所撮合报单后的异步回调是通过CTP发送给MT5,过程如下图:

MT5通过CTP得到交易所的回调(即上图中的3),然后把这些回调作为MQL图表事件发送给全部图表(如下图),EA 就可以通过MQL图表事件响应函数OnChartEvent得到这些回调(即上图中的4)。

交易所的异步回调有很多种,在MT5中定义了各种回调是以逗号分隔的一个长字符串,并以第一个逗号前的英文区别是哪一种回调。
1.OnRtnOrder 报单回调
OnRtnOrder, 交易所, 合约, EA报单编号, CTP服务器报单编号, 多空, 开平, 报单状态枚举, 报单状态信息, 报单价格, 报单手数, 成交手数, 报单时间, 撤单时间,FrontID,SessionID,e
2.OnRtnTrade 成交回调
OnRtnTrade, 交易所, 合约, EA报单编号, CTP服务器报单编号, 成交编号, 多空, 开平, 成交价格, 成交手数, 成交时间,e
3.OnErrRtnOrderInsert 报单错误回调
OnErrRtnOrderInsert, 报单错误编号, 报单错误信息, 交易所, 合约, EA报单编号, 多空, 开平, 报单价格, 报单手数, 账号是投资还是套保, 报单有效期, 报单成交量类型, 报单触发条件, 报单报单止损价, 报单最小成交量,e
4.OnErrRtnOrderAction 撤单错误回调
OnErrRtnOrderAction,交易所,合约,EA报单编号,CTP服务器报单编号, 操作标志,价格,错误编号,错误信息,e
5.OnRspQryInvestorPosition 查询仓位回调
OnRspQryInvestorPosition,交易所,合约,仓位多空,昨天持仓,总持仓,今天持仓,持仓均价,持仓盈亏,冻结,浮动盈亏,开仓均价,是否最后一个仓位,e
6.OnRspQryTradingAccount 查询资金回调
OnRspQryTradingAccount,期货公司编码,期货交易账号,上次结算准备金,占用保证金,手续费,平仓盈亏,浮动盈亏, 动态权益,可用资金,e

