期货的交易机制会出现报单部分成交的情况。
EA是通过调用mt5ctp.dll进行期货交易,该DLL提供了接口函数可以指定如何处理报单部分成交的情况, 开发者可以根据自己的策略去选择如何处理不同的报单部分成交。
mt5ctp.dll的头文件mt5ctp.mqh提供了以下报单接口函数:
int sendOrderLimit(string symbol, ENUM_CTP_ORDER buySell, ENUM_CTP_POSITION openClose, double price, int volume, string orderRef, ENUM_CTP_ACCOUNT_TYPE hedge); //全部交易所都支持 all exchanges support
该接口函数是报限价单,举例当报单10手的时候,如果交易所只能撮合其中的6手,剩下4手会成为挂单。
int sendOrderLimitFAK(string symbol, ENUM_CTP_ORDER buySell, ENUM_CTP_POSITION openClose, double price, int volume, string orderRef, ENUM_CTP_ACCOUNT_TYPE hedge); //全部交易所都支持(FAK任意成交数量 without min fill quantity)
该接口函数是报限价FAK单, FAK就是Fill And Kill缩写,就是报单能成交多少就成交多少,其余不能成交的手数则全部撤单。举例当报单10手的时候,如果交易所只能撮合成交其中的6手,剩下的4手会撤单。
int sendOrderLimitFAKMinVolume(string