Expert Advisors – immer zuverlässig?
Nun möchte ich auf die möglichen Ausführungsfehler eingehen, die neben
Datenqualität (siehe Leitartikel Warum MT4-Backtests vom realen EA-Handel abweichen),
variablem Spread (siehe Blogpost Welche Auswirkungen hat ein variabler Spread auf mein EA Trading und meine MT4-Backtests?) und
Ausführungsqualität bzw. Slippage (siehe auch Blogartikel Heute ist NFP-Freitag: was Sie vor dem Live-Schalten eines Expert Advisors über Ausführungsqualität und „Slippage“ wissen sollten)
den realen Verlauf eines Expert Advisors (EA) unterscheiden lassen werden von dem, was ein Backtest im Strategietester des MetaTraders (MT4/MT5) machen würde.
Im Backtest werden immer alle Deals komplett korrekt ausgeführt, sofern der EA richtig programmiert ist. Wenn wir nun im laufenden Handel unterwegs sind, dann können verschiedene Fehlermeldungen vorkommen.
Eine der üblichsten Fehlermeldung ist, dass der Trade-Kontext "busy" ist. Die MT4-Fehlermeldung dazu lautet "Trade context is busy" und der Fehlercode ist 146. Das ist wie eine belegte Leitung am Telefon: der Trade Server des Brokers ist einfach schon von einem anderen EA oder vom manuellen Trading in Ihrem Metatrader gerade eine Aktivität empfangen und muss diese erst verarbeiten.
Es ist in diesem Zusammenhang wichtig zu wissen, dass der MT4 nur eine Leitung zum Trade Server Ihres Brokers hat. Wenn Sie ein und denselben EA auf 20 verschiedenen Währungspaaren oder CFDs laufen haben und wir nehmen an, dass Signale alle zu einem Kerzenbeginn (also per Schlusskursbetrachtung) generiert und ausgeführt werden, dann kann es natürlich vorkommen, dass mehrere, eben bis zu 20 verschiedene Orders gleichzeitig eröffnet, geschlossen oder angepasst werden sollen.
Ihr MT4 muss diese Orderanfragen sequentiell, also nacheinander, Stück für Stück, eine nach der anderen abarbeiten. Wenn nun alle 20 Charts einen Dealvorgang übermitteln wollen, kommt nur einer dieser EAs zum Tradeserver des Brokers durch. Die Versuche der anderen sind dann wahrscheinlich eine Millisekunde später dran und bekommen die Fehlermeldung zurückgemeldet, dass der Trader Server "busy" ist, die Leitung also belegt ist.
Wie ein EA mit einer solchen Fehlermeldung umgeht kommt ganz darauf an, wie er programmiert ist. Wenn Sie als Auftraggeber einen EA programmieren lassen, dann müssten sie sich auch am besten überlegen, welche Umgangsweise bei solchen Fehlern für Ihre Strategie die passende ist: z.B. kann man dem EA über entsprechende Gestaltung des Codes sagen, "okay, wenn ein Fehler kommt, dann
probiere es einfach so lange erneut bis das Signal wirklich ausgeführt ist;
oder probiere es nur ein einziges Mal, und wenn dieses eine Mal eine Fehlermeldung kommt, oder diese spezielle Fehlermeldung generiert wird, dann lösche das Signal;
oder aber etwas in zwischendrin, dass z.B. 60 Sekunden lang oder für 50 Kursticks Neuversuche unternommen werden.
Das ist alles programmierbar und kann für jeden einzelnen der möglichen MT4-Fehlermeldungen auch separat programmiert werden. Damit wird der Umgang mit Ausführungsfehlern wirklich ganz speziell für Sie, Ihre Vorlieben und Ihr Handelssystem speziell abgestimmt.
Die am häufigsten vorkommenden Fehler sind
Trade-Kontext is busy, Leitung des MT4 zum Tradeserver des Brokers ist belegt (Fehler Code 146: "Trade context is busy.")
Der Preis hat sich zu stark seit Anfrage verändert (Fehler Code 135: "Price changed.")
Der Broker macht einen Requote (Fehler Code 138: "Requote.")
Es kann sein, dass nicht genügend Geld, nicht genügend Kapital für einen Deal vorhanden ist, insbesondere wenn Sie mit hohem Hebel arbeiten (Fehler Code 134: "Not enough money.")
Es kann sein, dass das Symbol für temporär oder dauerhaft vom Broker gesperrt, z.B. nach Fälligkeit eines Futures (Fehler Code 133: "Trade is disabled.")
Es kann sein, dass ein falsches Handelsvolumen errechnet oder eingestellt wurde, dass es zu klein oder zu groß ist oder auf zu viele Nachkommastellen gerundet wurde (Fehler Code 131: "Invalid trade volume.")
Rundungsfehler können auch für Stop- und Limit-Preise geschehen und eine Fehlermeldung auslösen (Fehler Code 130: "Invalid stops."). Dieser Fehler Code wird auch bei zu engen Stop- oder Limitabständen ausgegeben.
Diese Auflistung benennt nur die häufigsten Fehlerquellen. Weitere sind möglich, siehe diese Auflistung in der MQL4-Dokumentation. Möglichst viele dieser Szenarien müssen bedacht werden. Denn ein EA ist grundsätzlich nur so schlau wie er programmiert ist. Nur wenn er mit solchen Fällen bestückt wird, weiß er, wie er damit speziell umzugehen hat.
Genau diese Szenarien kommen in der Realität ganz einfach vor. Im Strategietester kommen sie dagegen nicht vor. Das führt zu Abweichungen zwischen dem theoretischen Backtest und der wirklich erzielten Performance.
Daher ist es auch so wichtig, in regelmäßigen Abständen die Funktionalitäten und Deals des Expert Advisors zu prüfen und am Rechner zu sein. Es gilt also auch aus dieser Sicht:
Ein EA ersetzt den Trader nicht. Er macht aber einen ernsthaften, guten Trader zu einem noch besseren Trader.
Auf beste Deals
Cristof Ensslin von mindful FX, Ihrem EA Programmierer