MT5 EA交易期貨-交易所異步回調(diào)

在外匯交易中,我們報(bào)單后是馬上成交或掛單的(同步),但在期貨交易中報(bào)單后不是馬上成交或掛單的,需要等待交易所撮合該報(bào)單(即異步),撮合后交易所會(huì)把處理結(jié)果發(fā)回給我們(即異步回調(diào)),此時(shí)我們才知道該報(bào)單是成交或掛單。
請(qǐng)注意期貨報(bào)單異步回調(diào)是由期貨的交易機(jī)制決定的,并不是使用MT5交易期貨才會(huì)這樣,使用其他任何期貨交易軟件和任何編程語(yǔ)言,期貨報(bào)單都是異步回調(diào)的。更多請(qǐng)看期貨與外匯交易機(jī)制的不同
交易所撮合報(bào)單后的異步回調(diào)是通過(guò)CTP發(fā)送給MT5,過(guò)程如下圖:

MT5通過(guò)CTP得到交易所的回調(diào)(即上圖中的3),然后把這些回調(diào)作為MQL圖表事件發(fā)送給全部圖表(如下圖),EA 就可以通過(guò)MQL圖表事件響應(yīng)函數(shù)OnChartEvent得到這些回調(diào)(即上圖中的4)。

交易所的異步回調(diào)有很多種,在MT5中定義了各種回調(diào)是以逗號(hào)分隔的一個(gè)長(zhǎng)字符串,并以第一個(gè)逗號(hào)前的英文區(qū)別是哪一種回調(diào)。
1.OnRtnOrder 報(bào)單回調(diào)
OnRtnOrder, 交易所, 合約, EA報(bào)單編號(hào), CTP服務(wù)器報(bào)單編號(hào), 多空, 開(kāi)平, 報(bào)單狀態(tài)枚舉, 報(bào)單狀態(tài)信息, 報(bào)單價(jià)格, 報(bào)單手?jǐn)?shù), 成交手?jǐn)?shù), 報(bào)單時(shí)間, 撤單時(shí)間,FrontID,SessionID,e
2.OnRtnTrade 成交回調(diào)
OnRtnTrade, 交易所, 合約, EA報(bào)單編號(hào), CTP服務(wù)器報(bào)單編號(hào), 成交編號(hào), 多空, 開(kāi)平, 成交價(jià)格, 成交手?jǐn)?shù), 成交時(shí)間,e
3.OnErrRtnOrderInsert 報(bào)單錯(cuò)誤回調(diào)
OnErrRtnOrderInsert, 報(bào)單錯(cuò)誤編號(hào), 報(bào)單錯(cuò)誤信息, 交易所, 合約, EA報(bào)單編號(hào), 多空, 開(kāi)平, 報(bào)單價(jià)格, 報(bào)單手?jǐn)?shù), 賬號(hào)是投資還是套保, 報(bào)單有效期, 報(bào)單成交量類(lèi)型, 報(bào)單觸發(fā)條件, 報(bào)單報(bào)單止損價(jià), 報(bào)單最小成交量,e
4.OnErrRtnOrderAction 撤單錯(cuò)誤回調(diào)
OnErrRtnOrderAction,交易所,合約,EA報(bào)單編號(hào),CTP服務(wù)器報(bào)單編號(hào), 操作標(biāo)志,價(jià)格,錯(cuò)誤編號(hào),錯(cuò)誤信息,e
5.OnRspQryInvestorPosition 查詢(xún)倉(cāng)位回調(diào)
OnRspQryInvestorPosition,交易所,合約,倉(cāng)位多空,昨天持倉(cāng),總持倉(cāng),今天持倉(cāng),持倉(cāng)均價(jià),持倉(cāng)盈虧,凍結(jié),浮動(dòng)盈虧,開(kāi)倉(cāng)均價(jià),是否最后一個(gè)倉(cāng)位,e
6.OnRspQryTradingAccount 查詢(xún)資金回調(diào)
OnRspQryTradingAccount,期貨公司編碼,期貨交易賬號(hào),上次結(jié)算準(zhǔn)備金,占用保證金,手續(xù)費(fèi),平倉(cāng)盈虧,浮動(dòng)盈虧, 動(dòng)態(tài)權(quán)益,可用資金,e