Руками не надо, спроси у символа. Режим заполнения разрешается для символа, и у разных брокеров, а иногда у разных символов одного брокера, набор разный. На старом FOK был разрешён, на новом, видимо, только IOC. Я делаю так:
Код:
ENUM_ORDER_TYPE_FILLING PickFilling(const string sym)
{
long modes = SymbolInfoInteger(sym, SYMBOL_FILLING_MODE);
if((modes & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK) return ORDER_FILLING_FOK;
if((modes & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC) return ORDER_FILLING_IOC;
return ORDER_FILLING_RETURN;
}
И это значение в request.type_filling. Return оставлен на крайний случай, при некоторых режимах исполнения он не пройдёт, тогда смотри режим исполнения символа. Ещё момент: с IOC может прийти не весь объём, остаток просто снимается. Если советник считает, что открылся полным лотом, сверяй объём позиции после сделки. Коды возврата и разбор ответа тут:
https://www.mql5.com/ru/docs/trading/ordersend