Einführung ins Trading
Das Traden hat in den letzten Jahren einen großes Wachstum erfahren. Mittlerweile handeln Millionen von Menschen mit Aktien, Cryptowährungen, Super Bowl, Kunstwerken oder Sammelfiguren. Gerade das Traden mit Cryptowährungen und NFTs ist mittlerweile Main-Stream und beim letzten Super-Bowl lief sogar Werbung für Coinbase, einer der größten Plattformen für den Handeln mit Kryptowährungen.
Aber wie funktionieren diese Trading Plattformen technisch? Und lassen sich diese mittels PHP Programmieren? In diesem Artikel gehe ich eine wenig auf die Hintergründe der Plattformen ein und wie diese sich technisch umsetzen lassen.
Hintergrund
Bei einer Trading-Platform geht es darum Nachfrage und Angebot zusammen zu bringen. Bei Börsen wie der deutschen Börse Xetra existiert ein Order-Buch, indem Käufer und Verkäufer ihre Angebot reinstellen. In dem Order-Buch stehen Kauf- und Verkaufsangebote drin.
Beispielsweise:
Verkaufen
- Person A möchte 200 Aktien von Volkswagen für mindestens 150 Euro verkaufen
- Person B möchte 100 Aktien von Volkswagen für mindestens 165 Euro verkaufen
Ebenfalls enthält das Order-Buch Kaufgesuche:
Kaufen
- Person C möchte 50 Aktien von Volkswagen für maximal 160 Euro kaufen
- Person D möchte 25 Aktien von Volkswagen für maximal 170 Euro kaufen.
Um nun den finalen Preis für die Aktie zu bestimmen, findet in regelmäßigen Intervallen eine Auktion statt. Hierbei wird der Preis so festgesetzt, dass die maximale Anzahl an Aktien den Besitzer wechseln. Im obigen Beispiel wären dies 160 Euro, so würde Person A 50 Aktien an Person C und 25 Aktien an Person D für je 160 Euro / Stück verkaufen.
Das Order-Buch wird fortlaufend fortgeschrieben. Dadurch sind Preise und Marktlage ständig in Bewegung. Aktive Trader beobachten die Marktlage und passen ihre Verkauf- und Kaufangebote entsprechend regelmäßig an um von den Schwankungen zu profitieren.
Wie funktioniert ein Orderbuch technisch?
Technisch lässt sich ein Orderbuch sehr einfach per MySQL erstellen. Als Tabellenstruktur lässt sich beispielsweise folgende Struktur nutzen:
- id: Eine autoincrement ID, die automatisch von MySQL für jede Order vergeben wird
- user_id: Die ID des Benutzers, der kaufen bzw. verkaufen möchte
- product_id: Eine ID für das Produkt (Aktie, Kryptowährung etc.) das gekauft / verkauft werden soll
- buy_sell_flag: Ein Flag, ob es sich dabei um einen Kauf oder einen Verkauf handelt
- price_limit: Der minimale Preis für einen Verkauf bzw. der maximale Preis für einen Kauf
- amount: Die Anzahl an z.B. Aktien die man verkaufen möchte
- time_limit: Bis wann die Order gültig ist
Diese Tabellen Struktur lässt sich um potentielle weitere Felder ergänzen, z.B. um Order-Zusätze dass man z.B. keinen Teilverkauf der Aktien haben möchte sondern die Order "ganz-oder-gar-nicht" ausgeführt werden muss.
In dieser Tabelle nimmt man alle Orders auf. In regelmäßigen Intervallen, z.B. jede Sekunde, schaut man ob wie der Preis gesetzt werden muss damit die maximale Anzahl an Aktien o.ä. ihren Besitzer wechseln. Findet sich dort ein Preis, so werden die Transaktionen durchgeführt und der Börsenpreis wird aktualisiert.
Autor: Nils Reimers