«

»

Jan 18

Arbitrage Trading in Forex

Was ist Arbitrage Trading und wie setzt man es in MetaTrader um?

Arbitrage (von franz. arbitrage, von lat. arbitratus „Gutdünken, freie Wahl, freies Ermessen“) bezeichnet das Ausnutzen von Preisunterschieden für gleiche Waren auf verschiedenen Märkten. … Diese, auf Wikipedia vorhandene Definition von Arbitrage Trading, ist für ein globales Verständnis sehr hilfreich, weshalb ich es hier unverändert direkt an den Anfang stelle.

Überträgt man diese Definition auf den Forex-Markt, kann man Waren durch FX-Symbole und Märkte durch Broker ersetzen.

Das einfache Arbitrage Trading, bitte nicht verwechseln mit triangularer Arbitrage, ist also das Ausnutzen von Preis-Ineffizienzen zwischen verschiedenen MT4/MT5 Brokern.
In ein konkretes Beispiel verpackt, besteht also gemäß Theorie die Möglichkeit, bei einem Broker A das Währungspaar X zu einem günstigeren Preis zu kaufen, als man es zum gleichen Zeitpunkt(!) bei einem Broker B verkaufen kann.
In Zahlen ausgedrückt, wäre das für EURUSD beispielsweise folgende Konstellation
MetaTrader-BROKER A: ASK / BID @ EURUSD
1.20500 / 1.20492

MetaTrader-BROKER B: ASK / BID @ EURUSD
1.20510 / 1.20504

In diesem Beispiel wäre es also möglich, bei Broker A EURUSD zu 1.20500 zu kaufen und GLEICHZEITIG bei Broker B zu 1.20504 zu verkaufen.
Eigentlich hat man also in Summe gar keine Position wenn man sein Gesamtvermögen betrachtet! Schaut man aber genau hin, hat man EURUSD teurer verkauft (1.20504) als man es gleichzeitig gekauft hat (1.20500).
Der Gewinn von 0.4 Punkten mag marginal erscheinen (ist es auch), aber es gibt eine, ganz wesentliche Eigenschaft von allen Arten des Arbitrage Tradings: Korrekt ausgeführt ist Arbitrage-Trading eine Art des Tradings mit 100% Trefferquote.

Warum gibt es Arbitrage Trading im Forex-Bereich?

Forex ist ein unregulierter Markt. Anders als beim DAX oder DOW Future gibt es keinen regulierten Markt und damit einheitlichen Preis zu dem alle Trader auf der Welt traden können.

Der Forexmarkt ist also kein Markt, der über eine Börse reguliert ist, sondern er ist ein Markt, in dem einige große Teilnehmer untereinander über Angebot- und Nachfrage den Preis regulieren. Diese großen Markt-Teilnehmer werden also sogenannte Liquiditprovider genannt, denn über Sie läuft die tatsächliche Umsetzung der Trades.

Jeder MetaTrader Broker ist also über den MetaTrader Server mit einem oder mehreren Liquiditätsprovidern (LP) verbunden.

Die LPs stellen die Preise; der Broker zeigt diese Preise in MetaTrader seinen Kunden; Kunde kauft / verkauft zum gezeigten Preis; der Broker routet diesen Preis an den LP (oder nimmt ihn ins eigene Buch, wenn es ein Dealing-Desk Broker ist).Der gesamte Ablauf der Abwicklung der Trades ist natürlich wesentlich komplizierter, aber für das grobe Verständnis, warum Arbitrage möglich ist, reicht das aus.

Eines der “Geheimnisse” des Arbitrierens liegt im Finden guter Broker-Kombinationen die an möglichst unterschiedliche LPs angeschlossen sind. Es macht wenig Sinn zwei STP-Broker zu wählen, die beide den selben LP (die selben LPs) verwenden. Wenn Sie erfolgreich Arbitrieren möchten, müssen Sie Broker finden, die an verschiedene LPs angeschlossen sind.

Bei ForexMagnates und bei Quotix gibt es jeweils ein kleine Übersicht über verfügbare LPs.

Wer es genauer wissen möchte wer die Big-Player im FX-Bereich sind, der kommt an Euromoney nicht vorbei. Dort gibt es eine jährliche Datenerhebung über alle gehandelten Volumen. Leider ist der Bericht recht teuer. Trotzdem finden Sie hier den Link zu euromoney und der Datenerhebung aus 2014.

Wie setzt man Arbitrage Trading in MetaTrader technisch um?

Rein technisch geht der Aufwand zur Programmierung einer solchen Anwendung deutlich über den normalen Expert-Advisor hinaus. MetaTrader ist nicht dafür konzipiert, mit anderen Applikationen / anderen MetaTrader Brokern “einfach so” zu kommunizieren. Man muss also eine Umgebung schaffen, in der es möglich ist, das zwei MetaTrader Broker in beide Richtungen miteinander kommunizieren.
Es reicht also nicht aus, Informationen über den aktuellen Preis von Broker A an Broker B zu senden, sondern Broker A, muss ebenfalls Informationen von Broker B erhalten um ggf. im Falle des Vorliegens einer Arbitragesituation reagieren und entsprechend traden zu können.
Wir bei ForexInnovation haben in den letzten Jahren verschiedene Kommunikationsmöglichkeiten in MetaTader programmiert. Viele davon, kommen für eine derartige Anwendung nicht in Frage, weil Sie einfach zu langsam sind.

  1. Eine Kommunikation über physisch vorhandene txt/csv/bin Files auf der Festplatte sind in der Regel viel zu langsam.
  2. Eine Kommunikation über das DDE Protokoll ist theoretisch durchaus möglich, aber es gibt schnellere & einfachere Möglichkeiten des MetaTrader Daten- und Informationsaustausches.
  3. Eine Kommunikation über RabbitMQ und das Advanced Message Queuing Protocol: die absolute High-End-Lösung. Geschaffen wurde dieses spezielle Protokoll unter anderem durch Bank of America, JPMorgan Chase, Barclays Bank, Goldman Sachs, Credit Suisse, Deutsche Börse und Red Hat, VMware, Microsoft, INETCO – Systems, IONA Technologies, Cisco Systems …Es ist also voll und ganz auf die Anforderungen der Finanzindustrie ausgelegt. Verglichen mit der letzten Möglichkeit die ich nennen möchte, hat RabbitMQ aber den Nachteil, eines deutlich höheren Aufwandes der Umsetzung. Im Sinne einer Kosten-Nutzen-Abwägung bleibt also nur:
  4. Eine Kommunikation über Pipes. Pipes sind der goldene Mittelweg. Sie sind extrem schnell, extrem robust und vor allen Dingen ohne zusätzliche DLLs. Sie können direkt in MT4/MT5 programmiert werden und sind über den sogenannten Duplex-Modus sogar für die Kommunikation von A nach B und zurück zu A geeignet.

In diesem Beitrag werde ich nicht weiter auf die Technik der Pipes eingehen. Es geht in diesem Beitrag erstmal nur um die grundsätzlichen Rahmenbedingungen und die technischen Möglichkeiten die es generell gibt. In einem Folgebeitrag werde ich eventuell etwas tiefer einsteigen in die Pipes-Programmierung in MQL und dort auch einige Beispiele zeigen.

Welche MetaTrader Broker kommen in Frage?

Grundsätzlich kommen nur MetaTrader Broker in Frage, die tatsächlich eine korrekte* Darstellung eines FX-Symbols vornehmen (*da es sich bei FX / Devisen um einen unregulierten Markt handelt, gibt es keinen absolut korrekten Preis). Broker die also an Ihrem Trading-Desk in “Freestyle Manier” die Preise darstellen wie es Ihnen “gerade passt” sind vollkommen unbrauchbar.

STP-Broker oder ECN-Broker, die tatsächlich mit einem FX Liquiditätsprovider (oder besser noch mehreren) verbunden sind, sind fast uneingeschränkt nutzbar. Es gibt aber auch sehr gute Dealing-Desk-Broker, die die Ausführung der Order zwar über das eigene Buch vornehmen, dafür aber durchaus die Möglichkeit haben, sogar schneller zu agieren als ein STP/ECN-Broker!
Warum ein Dealing-Desk Broker durchaus schneller als ein STP/ECN Broker ausführen kann: ein Dealing-Desk Broker muss vor der Ausführung des Trades nicht erst noch beim LP (Liquiditätsprovider) anfragen, ob der Preis noch steht und ggf. den Preis für den Kunden korrigieren. Ein DD Broker kann einfach den Preis füllen, den er dem Kunden gerade anzeigt. Ein STP/ECN Broker hat kein Orderbuch. Was der LP nicht ausführen kann, kann der Kunde nicht bekommen.
Eine kurze Ausführung warum DD-Broker sogar schneller als ECN/STP Broker ausführen können, findet sich beispielsweise in einem kurzen Artikel von Ron Finberg auf ForexMagnates. In diesem Beitrag geht es um die aktuelle Entscheidung der SNB den Preis des Franken nicht mehr an den EUR zu binden und die damit einhergehenden dramatischen Verwerfungen im FX-Markt. Den Artikel finden Sie hier Did Banks ‘Bucketshop’ Retail Forex Brokers? Winners and Losers from Swiss Franc Volatility

Voraussetzungen um Arbitrage Trading zwischen verschiedenen MT4/MT5 Brokern durchzuführen

1. Accounts die für Arbitrage Trading verwendet werden sollen, sollten in der selben Basiswährung geführt werden!

Wenn die AccountCurrency() ( = Schreibweise in MetaTrader) unterschiedlich ist, dann muss die Rechnung natürlich noch eine Umrechnungskomponente in eine der beiden Account-Währungen enthalten. Das führt in der Regel zu Rundungsproblemen, denn der Gewinn 5 oder  10 Pip ist so gering, dass eine Rundung beim Volumen es unmöglich machen kann, den Trade im Plus zu vollenden (ein Beispiel dazu folgt in einem späteren Blog-Eintrag in dem ich weiter auf die Mathematik des Arbitrage Tradings eingehe).

2. Um Slippage zu vermeiden, sollten Sie einen Trading-Server wählen, der am selben Standort ist wie der Server des Brokers über den das Trading abgewickelt wird.

Beide Broker sollten physisch Ihren Sitz im selben FX Rechenzentrum haben. Es ist praktisch ungleich schwerer (fast unmöglich) zwischen zwei Brokern zu arbitrieren, die nicht beide in New-York (meist NY4 Equinex) oder in London (meist LD4) Ihre Server haben.

3. Die erkannte Arbitrage Möglichkeit, muss sich auch traden lassen.

Das ist natürlich erstmal eine recht pauschale Aussage, aber Sie werden recht schnell merken, ob ein Broker ständig Slippage hat und Ihre gewünschten Gewinne in der Realität nicht existieren, weil Sie den notwendigen Preis nie erhalten. Extrem wichtig beim Aufbau eines Arbitrage EAs ist also das Tracking aller Informationen zu jedem Trade von jedem Account! Da Sie auf zwei unterschiedlichen Accounts traden und das ganze eventuell noch über verschiedene Währungspaare, fällt Slippage eventuell nicht direkt ins Auge. Da es beim Arbitrage Trading aber immer nur um Trades mit einer sehr geringen Gewinnspanne geht, ist es extrem wichtig alle Details jedes Trades zu kennen und ggf. Broker die ständig Slippage frühzeitig zu stoppen.

Typische Probleme des Arbitrierens

Neben technischen Problemen, sind regelmäßig die Broker das Hauptproblem, da sie dieser Art des Tradings einen Riegel vorschieben. Insbesondere Dealing-Desk Broker, die zwar sehr schnell ausführen, aber nach einer Weile merken, dass ein Kunde sie arbitriert, blockieren diese Art des Tradings (verständlicher Weise(aus der Sicht des Brokers )) regelmäßig.

Im Bereich des triangulären Arbitrage Tradings geht es sogar so weit, dass Broker oft einfach verbieten einen sogenannten Ringtausch durchzuführen. Es ist beispielsweise bei Dukascopy jahrelang nicht möglich gewesen einen Ring zu eröffnen. Der dritte Trade wurde einfach blockiert (da ich selber keinen Account mehr mit DC habe, weiß ich nicht, wie es in 2015 aussieht). Man kann in JAVA einen TriArb EA coden, der im Backtest über Jahre hinweg 100% Trefferquote hat, und ganz klar zeigt, dass selbst bei Dukascopy TriArb Trading theoretisch möglich ist. Praktisch ist es aber unmöglich, weil blockiert.

Ergänzende Informationen zu RabbitMQ

Es gibt eine sehr hilfreiche Webseite von Pivotal Software, dem Hersteller von RabbitMQ. Auf dieser Webseite (http://www.rabbitmq.com/) findet sich zu fast jeder Programmiersprache in der RabbitMQ verfügbar ist ein vollständiges Sample http://www.rabbitmq.com/devtools.html

C++ hat dabei den Vorteil, dass die DLL Implementierung wesentlich einfacher ist als bei .NET/C#.

Bei .NET/C# braucht man zur Kommunikation mit MetaTrader immer noch eine Wrapper-DLL, was die Sache weder einfacher, noch schneller macht.

Schaut man bei http://www.rabbitmq.com/devtools.html etwas detaillierter, findet man sowohl für .NET/C#, als auch für C++ vollständige Sample-Files.

.NET/C#: http://www.rabbitmq.com/dotnet.html

C++: https://github.com/alanxz/rabbitmq-c

 

Ich hoffe dieser Beitrag liefert einen interessanten Einstieg in die faszinierende Welt des Arbitrage Tradings. In Zukunft werden noch weitere Artikel folgen, die dann die Mathematik und auch die Algorithmen an praktischen Beispielen beleuchten.

bis dahin viel Spaß und viel Erfolg

Thomas

 

PS: bitte testen Sie jeglichen Code, egal ob von code4trading.com oder von anderen Anbietern / Webseiten / Links immer auf vollständige Funktionsfähigkeit!

2 comments

  1. Arnaud

    Hallo,
    vielen Dank für diesen aufschlussreichen Artikel. Ich habe mich bereits über die MQL4 Programmierung von Pipes informiert, das Thema erscheint mir jedoch sehr kompliziert und übertrifft meine Programmkerkenntnisse. Wäre es deshalb möglich, wie oben erwähnt, einen Artikel über die Pipe-Programmierung zu schreiben.
    Vielen Dank und freundliche Grüße
    Arnaud

    1. Thomas Rosenkranz

      Hallo Arnaud,

      Danke für das Feedback und sorry für die Verzögerung in der Antwort. Sommer halt.

      Gerne werde ich mal ein paar mehr Zeilen über Pipes schreiben, so dass man für die eigene Programmierung einen kleinen Einstieg hat.

      Pipes sind in der Tat sehr “mächtig” und man kann tolle Dinge damit anstellen in der Kommunikation zwischen einem oder auch mehreren / vielen MetaTrader Accounts …

      In Kürze mehr zur Technik der Pipes.

      Schöne Grüße
      Thomas

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*