Startseite > Blog > Unsupported filling mode (MT5-Fehler 10030) endgültig gelöst

MT5MQL5FehlerProblemlösungEA

Unsupported filling mode (MT5-Fehler 10030) endgültig gelöst

Veröffentlicht: 2026-07-07Lesezeit: ca. 6 Min
This article reflects information as of its publish date. EA performance figures (PF, DD, annual return) change with live trading and re-validation — check the latest on the EA pages. See the latest EA results

Unsupported filling mode (MT5-Fehler 10030) endgültig gelöst

Ein EA, der bis gestern bei einem anderen Broker problemlos lief, wird auf ein neues Konto umgezogen – und plötzlich reihen sich im Experten-Tab Unsupported filling mode und OrderSend error 10030 aneinander, keine einzige Order geht mehr durch. Das ist eines der klassischsten Probleme beim Brokerwechsel im MT5-EA-Betrieb. Weder ist der EA defekt, noch liegt ein Problem mit dem Konto vor. Die angegebene "Ausführungsart" (Filling Mode) der Order wird für dieses Symbol beim neuen Broker schlicht nicht akzeptiert.

Dieser Artikel richtet sich sowohl an MT5-Anwender als auch an MQL5-Entwickler und fasst alles zu TRADE_RETCODE_INVALID_FILL (10030) zusammen: die eigentliche Ursache, die Bedeutung von FOK/IOC/RETURN, eine 30-Sekunden-Diagnose und die dauerhafte Lösung im Code. Eine Gesamtübersicht aller Fehlercodes findet sich im umfassenden Leitfaden zu MQL5-/MT5-Fehlercodes.

Dieser Artikel bezieht sich auf den Stand von MT5 (Build 4xxx-Reihe) im Juli 2026. Bezeichnungen und Anzeigen können je nach Broker und Build leicht abweichen.


Was ist 10030 (TRADE_RETCODE_INVALID_FILL)?

Das Ergebnis von OrderSend() wird in MqlTradeResult.retcode zurückgegeben. Der Code 10030 = TRADE_RETCODE_INVALID_FILL ist eine serverseitige Ablehnung, die bedeutet: "Die in der Anfrage angegebene type_filling (Ausführungsart) wird für dieses Symbol nicht unterstützt."

Bedeutung: Die angegebene Ausführungsart (filling type) wird nicht unterstützt
Konstante: TRADE_RETCODE_INVALID_FILL
Wert     : 10030
Anzeige  : Unsupported filling mode / Invalid order filling type
// Typisches Beispiel aus dem Log
2026.07.07 09:15:32.441 EA_NAME EURUSD,M15: OrderSend error 10030
2026.07.07 09:15:32.441 EA_NAME EURUSD,M15: failed market buy 0.10 EURUSD [Unsupported filling mode]

Wichtig ist: Kontostand, Lotgröße und Preis spielen dabei überhaupt keine Rolle. 10030 betrifft ausschließlich das einzige Feld MqlTradeRequest.type_filling in der Anfrage – sobald das korrigiert ist, geht dieselbe Order problemlos durch.

Die vier Ausführungsarten (type_filling)

Die MQL5-Enumeration ENUM_ORDER_TYPE_FILLING kennt vier Werte.

KonstanteBezeichnungBedeutung
ORDER_FILLING_FOKFill or KillWird nur ausgeführt, wenn die gesamte Menge ausgeführt werden kann. Ist bei einer Order über 1 Lot nur Liquidität für 0,7 Lot vorhanden, wird die gesamte Order storniert
ORDER_FILLING_IOCImmediate or CancelEs wird sofort so viel wie möglich ausgeführt, der Rest wird storniert. Bei 0,7 Lot Ausführung verfällt der restliche 0,3-Lot-Anteil
ORDER_FILLING_RETURNReturnDer ausführbare Teil wird ausgeführt, der Rest bleibt als Order im Orderbuch stehen (spätere Nachausführung möglich). Wird bei börsenbasierter Ausführung verwendet
ORDER_FILLING_BOCBook or CancelWird nur akzeptiert, wenn die Order passiv im Orderbuch platziert wird; bei einem Preis, der zu sofortiger Ausführung führen würde, wird sie abgelehnt. Nur für Limit-/Stop-Limit-Orders (in neueren Builds hinzugefügt)

Bei typischen FX-EAs kommen praktisch nur FOK oder IOC zum Einsatz. RETURN ist bei börsenbasierter Ausführung (Exchange execution) für Aktien und Futures relevant, BOC dient dem speziellen Zweck, ausschließlich als Maker-Order zu agieren.

Warum wird die Order "abgelehnt"? – SYMBOL_FILLING_MODE

Welche Ausführungsarten akzeptiert werden, legt der Broker pro Symbol über ein Flag fest (SYMBOL_FILLING_MODE). In MQL5 lässt sich das so auslesen:

long flags = SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
// Ist das Flag SYMBOL_FILLING_FOK gesetzt, ist FOK erlaubt
// Ist das Flag SYMBOL_FILLING_IOC gesetzt, ist IOC erlaubt

SYMBOL_FILLING_MODE ist ein Bit-Flag, das angibt, ob FOK und/oder IOC erlaubt sind (bei Erlaubnis beider sind beide Flags gesetzt). RETURN ist in diesem Flag nicht enthalten – ob RETURN nutzbar ist, hängt vom Ausführungsmodus des Symbols ab (siehe unten).

Damit ist die Logik hinter 10030 denkbar einfach:

Vom EA gesendetes type_filling ∉ für dieses Symbol erlaubte Ausführungsarten → 10030

Mehr steckt nicht dahinter.


Warum tritt der Fehler ausgerechnet "am Tag des Brokerwechsels" auf?

10030 gilt als "der klassische Fehler beim Brokerwechsel" – aus folgenden Gründen:

  1. Welche Ausführungsarten erlaubt sind, unterscheidet sich je nach Broker und Symbol. Der eine Broker erlaubt für FX-Symbole nur FOK, ein anderer nur IOC, wieder ein anderer beide. Selbst innerhalb desselben Brokers unterscheiden sich die Einstellungen zwischen FX und CFDs/Aktien häufig.
  2. Viele EAs haben type_filling fest im Code hinterlegt. Ein EA mit request.type_filling = ORDER_FILLING_FOK; läuft bei Broker A, der FOK erlaubt, jahrelang problemlos. Da er in der Umgebung des Entwicklers funktioniert, wird das Problem nie als Bug erkannt und der EA so weiterverbreitet.
  3. Erlaubt der neue Broker B kein FOK, scheitert bereits die allererste Order. Im Backtest tritt der Fehler oft nicht auf (der Strategy Tester verhält sich nachsichtiger als ein echter Server), sodass sich das Problem erst "am Tag des Umzugs auf das Echtkonto" zeigt.

10030 ist also weniger ein Bug im EA als vielmehr eine offengelegte fest codierte Annahme über die Umgebung. Umgekehrt bedeutet das: Liest der EA die erlaubten Flags des Symbols aus und wählt dynamisch, funktioniert er bei jedem Broker (Code dazu weiter unten).

Zusammenhang mit dem Ausführungsmodus (SYMBOL_TRADE_EXEMODE)

Neben der Ausführungsart besitzt jedes Symbol auch einen Ausführungsmodus, der beeinflusst, welche Ausführungsarten überhaupt sinnvoll sind.

AusführungsmodusKonstanteTypisch fürTendenz bei der Ausführungsart
InstantSYMBOL_TRADE_EXECUTION_INSTANTManche FX-Broker (häufig bei DD)Ausführung zum angegebenen Preis. Welt von FOK/IOC + Requotes
MarketSYMBOL_TRADE_EXECUTION_MARKETViele FX/CFDs (NDD-Broker)Marktausführung. FOK oder IOC (je nach Brokereinstellung)
ExchangeSYMBOL_TRADE_EXECUTION_EXCHANGEAktien, FuturesAusführung über das Orderbuch. RETURN als Standard
RequestSYMBOL_TRADE_EXECUTION_REQUESTLegacyRequest-Ausführung (heute selten)

Die genau erlaubten Kombinationen hängen von der Serverkonfiguration des Brokers ab, aber in der Praxis genügt die Faustregel: "Bei FX/CFD mit Market-Ausführung FOK oder IOC, bei börsenbasierten Symbolen RETURN." Auch der Ausführungsmodus lässt sich mit SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) abfragen.


Die 30-Sekunden-Diagnose

① Erlaubte Ausführungsart des Symbols prüfen (MT5-Oberfläche)

Marktübersicht → Symbol mit Rechtsklick → Spezifikation öffnen und die Zeile "Ausführung" (Filling) prüfen. Dort steht Fill or Kill / Immediate or Cancel oder beides. Sendet der EA eine hier nicht aufgeführte Ausführungsart, ist 10030 garantiert.

② Eingabeparameter des EA prüfen

Gut gebaute EAs bieten einen Eingabeparameter wie FillingType / Filling Mode. Ist das der Fall, genügt es, ihn auf die unter ① ermittelte erlaubte Ausführungsart einzustellen – ohne Codeänderung.

③ Per Code prüfen (für Entwickler)

long flags = SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
PrintFormat("%s filling: FOK=%s IOC=%s exemode=%d",
            _Symbol,
            ((flags & SYMBOL_FILLING_FOK) != 0) ? "yes" : "no",
            ((flags & SYMBOL_FILLING_IOC) != 0) ? "yes" : "no",
            (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE));

Führt man dies als Skript aus, zeigt eine einzige Zeile sofort die tatsächlich erlaubten Ausführungsarten für diesen Broker und dieses Symbol.


Dauerhafte Lösung – MQL5-Code zur automatischen Auswahl anhand der Flags

Die richtige Lösung für 10030 lautet nicht "bei jedem Umzug manuell anpassen", sondern: Der EA soll die erlaubten Flags des Symbols selbst auslesen und automatisch wählen. Im Folgenden eine bewährte, direkt einsetzbare Implementierung.

Funktion zur automatischen Erkennung

// Gibt die für dieses Symbol tatsächlich erlaubte Ausführungsart zurück
// Priorität: FOK → IOC → RETURN (Fallback für börsenbasierte Ausführung)
ENUM_ORDER_TYPE_FILLING GetFillingMode(const string symbol)
{
   long flags = SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);

   if((flags & SYMBOL_FILLING_FOK) != 0)
      return ORDER_FILLING_FOK;    // Nur ausführen, wenn die volle Menge möglich ist (keine Teilausführung)

   if((flags & SYMBOL_FILLING_IOC) != 0)
      return ORDER_FILLING_IOC;    // Nur den ausführbaren Teil ausführen, Rest stornieren

   return ORDER_FILLING_RETURN;    // Keine Flags gesetzt = z. B. börsenbasiert. Mit RETURN senden
}

Verwendung mit OrderSend

MqlTradeRequest req; MqlTradeResult res;
ZeroMemory(req); ZeroMemory(res);

req.action       = TRADE_ACTION_DEAL;
req.symbol       = _Symbol;
req.volume       = lots;
req.type         = ORDER_TYPE_BUY;
req.price        = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
req.deviation    = 20;
req.magic        = MagicNumber;
req.type_filling = GetFillingMode(_Symbol);   // ← nicht fest codieren

if(!OrderSend(req, res) || res.retcode != TRADE_RETCODE_DONE)
{
   if(res.retcode == TRADE_RETCODE_INVALID_FILL)   // 10030
      PrintFormat("Unsupported filling mode: sent=%d, allowed flags=%d",
                  (int)req.type_filling,
                  (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE));
   else
      PrintFormat("OrderSend failed: retcode=%d", res.retcode);
}

So funktioniert dieselbe Binärdatei sowohl bei Brokern, die nur FOK erlauben, als auch bei solchen, die nur IOC erlauben – ganz ohne manuelle Anpassung bei jedem Wechsel.

Bei Verwendung von CTrade

Die Standardbibliothek CTrade stellt die Methode SetTypeFillingBySymbol() bereit, die die Ausführungsart automatisch anhand der erlaubten Flags des Symbols setzt.

#include <Trade/Trade.mqh>
CTrade trade;

int OnInit()
{
   trade.SetExpertMagicNumber(MagicNumber);
   trade.SetTypeFillingBySymbol(_Symbol);   // Erlaubte Flags auslesen und automatisch setzen
   return INIT_SUCCEEDED;
}

EAs, bei denen 10030 durch die alte, fest codierte Variante trade.SetTypeFilling(ORDER_FILLING_FOK); verursacht wird, lassen sich durch diese eine Zeile beheben. Wer die Auswahl manuell steuern möchte, kann auch das Ergebnis der oben gezeigten GetFillingMode() an SetTypeFilling() übergeben – mit demselben Effekt.

Hinweis zur Verwendung von Limit-Orders (BOC)

ORDER_FILLING_BOC (Book or Cancel) ist ausschließlich für Limit- und Stop-Limit-Orders gedacht und wird abgelehnt, wenn der angegebene Preis zu einer sofortigen Ausführung führen würde. Bei Market-Orders ist die Angabe falsch – bei EAs mit Market-Ausführung muss BOC daher nicht als Option berücksichtigt werden.


Hinweise zum Broker (erneute Prüfung beim Wechsel)

  • Die erlaubten Ausführungsarten unterscheiden sich nicht nur zwischen Brokern, sondern auch innerhalb desselben Brokers zwischen Symbolgruppen. Es ist völlig normal, dass FX IOC erlaubt, Aktien-CFDs hingegen nur RETURN.
  • Auch ein Kontotyp- oder Serverwechsel kann die Einstellung verändern. Nicht nur ein Brokerwechsel, sondern auch eine Servermigration, ein Kontotypwechsel oder eine Änderung der Symbolspezifikation innerhalb desselben Brokers kann dazu führen, dass 10030 plötzlich auftritt.
  • Als Betriebsregel empfiehlt es sich daher, "bei jeder Änderung von Konto, Server oder Symbol die Ausführungsart erneut in der Spezifikation (oder per Skript) zu prüfen" zur Gewohnheit zu machen. Bei einem EA mit automatischer Erkennung im Code entfällt diese Prüfung ohnehin.

Angaben wie "bei diesem Broker ist für dieses Symbol nur FOK erlaubt" veralten schnell durch Änderungen der Serverkonfiguration und werden in diesem Artikel daher nicht aufgelistet. Prüfen Sie dies unbedingt anhand der Symbolspezifikation Ihres eigenen Kontos.


Prioritäten-Checkliste

PrioritätPrüfungMaßnahme
🚨 ZuerstStimmt das Feld "Ausführung" in der Symbolspezifikation mit der Angabe des EA überein?An die erlaubte Ausführungsart anpassen
🚨 ZuerstBesitzt der EA einen FillingType-Eingabeparameter?Löst sich allein durch Ändern des Parameters (kein Code nötig)
⚠️ DanachIst type_filling im EA-Code fest codiert?Durch GetFillingMode() / SetTypeFillingBySymbol() ersetzen
⚠️ DanachWurde Broker, Server oder Kontotyp gewechselt?Nach jeder Änderung die Spezifikation erneut prüfen
✅ PrüfenUnterschied im Ausführungsmodus (Instant/Market/Exchange)Bei börsenbasierten Symbolen gilt RETURN als Standard
🛠 EntwicklungWird 10030 anhand des retcode gezielt behandelt?Gesendete Ausführungsart und erlaubte Flags loggen

Fazit

  • Unsupported filling mode (10030 / TRADE_RETCODE_INVALID_FILL) ist eine serverseitige Ablehnung, wenn das type_filling (FOK / IOC / RETURN / BOC) einer Order für dieses Symbol nicht erlaubt ist. Kontostand und Lotgröße spielen keine Rolle.
  • Da die erlaubten Ausführungsarten je nach Broker und Symbol unterschiedlich sind, werfen EAs mit fest codiertem type_filling am Tag des Brokerwechsels reihenweise 10030 – das klassische Muster dieses Fehlers.
  • Anwender lösen das Problem sofort durch "Feld 'Ausführung' in der Symbolspezifikation prüfen → EA-Eingabeparameter anpassen". Entwickler erreichen eine dauerhafte Lösung, indem sie die Flags von SymbolInfoInteger(SYMBOL_FILLING_MODE) auslesen und automatisch wählen (oder CTrade::SetTypeFillingBySymbol() verwenden).

Eine Gesamtübersicht aller Fehlercodes findet sich im umfassenden Leitfaden zu MQL5-/MT5-Fehlercodes. Die von FXEA365 vertriebenen EAs implementieren die automatische Erkennung der Ausführungsart und funktionieren unabhängig vom Broker (EA-Übersicht).


FAQ

F: Ein EA, der bis gestern lief, platziert nach dem Brokerwechsel wegen 10030 überhaupt keine Orders mehr. Ist der EA defekt?

Nein, der EA ist nicht defekt. Die vom EA angegebene Ausführungsart (z. B. FOK) wird für dieses Symbol beim neuen Broker einfach nicht akzeptiert. Prüfen Sie das Feld "Ausführung" in der Symbolspezifikation, passen Sie den EA-Eingabeparameter (z. B. FillingType) entsprechend an, oder stellen Sie den Code auf automatische Erkennung um – dann funktioniert alles wie zuvor.

F: Sollte man FOK oder IOC verwenden?

Erlaubt das Symbol beide, zeigt sich der Unterschied im Verhalten nur bei "unzureichender Liquidität". FOK storniert die gesamte Order, wenn nicht die volle Menge ausgeführt werden kann (keine halbfertigen Positionen), IOC hält, was tatsächlich ausgeführt wurde (Teilausführungen sind möglich). Bei den üblichen Lotgrößen im privaten FX-Handel ist Liquiditätsmangel ohnehin selten, sodass es in der Praxis kaum einen Unterschied macht. Wie im Code zur automatischen Erkennung ist eine Priorisierung von FOK unproblematisch.

F: Im Backtest tritt 10030 nicht auf, aber auf dem Echtkonto schon.

Die Ausführungslogik des Strategy Tester bildet die Servereinstellungen nicht vollständig ab, sodass eine falsche type_filling-Angabe im Test möglicherweise nicht zutage tritt. Prüfen Sie beim ersten Einsatz auf einem Echt- oder Demokonto zunächst das Feld "Ausführung" in der Symbolspezifikation.

F: Beim selben Broker tritt 10030 je nach Symbol mal auf, mal nicht.

Das ist normales (und mögliches) Verhalten. Die erlaubten Ausführungsarten werden pro Symbol festgelegt, sodass sich Symbolgruppen unterscheiden können – etwa FX-Paare mit erlaubtem IOC, Aktien-CFDs hingegen nur mit RETURN. EAs, die mehrere Symbole handeln, müssen SYMBOL_FILLING_MODE unbedingt für jedes Symbol einzeln auslesen.

F: Ich kann den EA-Code nicht ändern (nur .ex5 vorhanden). Was tun?

Prüfen Sie zunächst, ob der EA einen Eingabeparameter vom Typ FillingType besitzt. Ist das nicht der Fall, lässt sich dieser EA beim aktuellen Broker für dieses Symbol nicht verwenden. Wenden Sie sich an den Entwickler, oder betreiben Sie den EA bei einem Broker bzw. Kontotyp, der die vom EA vorausgesetzte Ausführungsart erlaubt.

📧 Preis-Alarm vor Erhöhungen + kostenloser 5-Tage-E-Mail-Kurs

Alle EAs sind zum Einführungspreis erhältlich und steigen stufenweise mit den Verkäufen. Erhalten Sie vor jeder Erhöhung eine Benachrichtigung, plus täglich eine E-Mail zu Algo-Trading, Backtest-Lektüre und Brokerwahl.

* Datenschutz streng geschützt. Sie können jederzeit kündigen.

Kommentare & Fragen