MT5 EA交易期貨-獲得持倉

本例子演示了EA如何獲得期貨的持倉。

EA是通過調(diào)用mt5ctp.dll進行期貨交易,所以EA需要先引用mt5ctp.dll,該DLL頭文件mt5ctp.mqh在\MQL5\Include目錄下。
EA通過mt5ctp.dll得到交易所的各種回調(diào)(如報單回調(diào),成交回調(diào),撤單回調(diào),錯誤回調(diào),倉位回調(diào),資金回調(diào)),然后會把這些回調(diào)作為MQL圖表事件發(fā)送給全部圖表,EA 通過MQL中的圖表事件響應函數(shù)OnChartEvent得到這些回調(diào),所以EA需要在OnChartEvent函數(shù)中只處理ID是3000的事件。
EA通過OnChartEvent函數(shù)的sparam參數(shù)獲得MQL圖表事件中的倉位回調(diào),倉位回調(diào)是一個字符串,格式如下:
OnRspQryInvestorPosition, 交易所, 合約, 倉位多空, 昨天持倉, 總持倉, 今天持倉, 持倉均價, 持倉盈虧, 凍結, 浮動盈虧,開倉均價,是否最后一個倉位,e
把sparam參數(shù)對應的字符串按逗號拆分后保存到字符數(shù)組chartEvents[],這樣chartEvents[0]就等于"OnRspQryInvestorPosition"。因為在OnChartEvent函數(shù)中ID是3000的事件包括了交易所的各種回調(diào)(如報單回調(diào),成交回調(diào),撤單回調(diào),錯誤回調(diào),倉位回調(diào),資金回調(diào)), 所以EA需要先根據(jù)chartEvents[0]=OnRspQryInvestorPosition找出其中的倉位回調(diào)。
然后遍歷chartEvents數(shù)組,得到倉位回調(diào)中的各項數(shù)據(jù):
chartEvents[2]是合約
chartEvents[3]是2(多)或3(空)
chartEvents[4]是昨倉
chartEvents[5]是昨倉+今倉
chartEvents[6]是今倉
chartEvents[7]是持倉均價
chartEvents[8]是持倉盈虧
chartEvents[9]是凍結
chartEvents[10]是浮動盈虧
chartEvents[11]是開倉均價
chartEvents[12]是否最后一個倉位