MQL5

Detecting the supported filling mode (FOK/IOC)

Reads the SYMBOL_FILLING_MODE mask to pick a filling type the server accepts — sending an unsupported mode is one of the most frequent causes of "Unsupported filling mode".

Prerequisites

MetaTrader 5, MQL5

MQL5
ENUM_ORDER_TYPE_FILLING PickFillingMode(string symbol)
{
   long mask = SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);

   if((mask & SYMBOL_FILLING_FOK) != 0)
      return ORDER_FILLING_FOK;    // tout ou rien
   if((mask & SYMBOL_FILLING_IOC) != 0)
      return ORDER_FILLING_IOC;    // exécution partielle possible

   return ORDER_FILLING_RETURN;    // mode marché/échange par défaut
}

// Utilisation avec une MqlTradeRequest manuelle
MqlTradeRequest req = {};
req.action       = TRADE_ACTION_DEAL;
req.symbol       = _Symbol;
req.type_filling = PickFillingMode(_Symbol);

Result

2026.06.10 08:00:01.205  FillProbe (EURUSD,M15)  SYMBOL_FILLING_MODE = 3 (FOK|IOC)
2026.06.10 08:00:01.206  FillProbe (EURUSD,M15)  Mode retenu : ORDER_FILLING_FOK (tout ou rien)
2026.06.10 08:00:01.310  FillProbe (US500,M15)  SYMBOL_FILLING_MODE = 2 (IOC) -> ORDER_FILLING_IOC
2026.06.10 08:00:01.412  FillProbe (BTCUSD,M15)  Aucun flag -> repli ORDER_FILLING_RETURN (mode échange)
2026.06.10 08:00:01.413  FillProbe (EURUSD,M15)  « Unsupported filling mode » impossible chez ce broker
Filling ModeFOKIOCCompatibilité Broker

Related snippets

Back to the Data Lab