Der Handel mit Kryptowährungen, der Kauf von Aktien und dergleichen ist heutzutage äußerst beliebt – es wird als einfacher Gewinn angesehen. Die Preise steigen derzeit, aber wir können nicht wissen, wann sich das ändern wird. Andererseits wissen wir, dass es irgendwann passieren wird. Aber wir sind nicht hier, um finanzielle Vorhersagen zu machen. Stattdessen sprechen wir über ein Datenmodell, das verwendet werden kann, um den Handel mit Kryptowährungen und Finanzinstrumenten wie Aktien oder Fondsanteilen zu unterstützen.
Was Sie über den Handel mit Währungen und Aktien wissen müssen
Technologische Verbesserungen in den letzten Jahrzehnten hatten einen erheblichen Einfluss auf den Handel. Es gibt jetzt viele Online-Handelsplattformen, die Sie verwenden können. Der Großteil des heutigen Handels wird virtuell abgewickelt – Sie können Papieraktien in Museen sehen, aber Sie werden die Aktien, die Sie kaufen, wahrscheinlich nicht in Papierform sehen. Und Sie müssen nicht Ihre Koffer packen und zur Wall Street oder einer anderen Börse gehen, um einen Handel zu tätigen. Bequem von Ihrem eigenen Computer oder Mobilgerät aus können Sie Finanzderivate (wie Anleihen, Aktien oder Rohstoffe) kaufen oder verkaufen.
Die meisten Trades (Verkäufe von Finanzderivaten) folgen denselben Regeln. Es gibt Verkäufer und Käufer. Wenn sie sich auf einen Preis einigen, findet der Handel statt. Nach dem Handel wird der Preis dieses Finanzderivats neu berechnet und der Prozess wird mit neuen Händlern fortgesetzt. Aktien und andere Derivate funktionieren auf die gleiche Weise.
Was ist Kryptowährung? Sie haben wahrscheinlich schon von Bitcoin und anderen Kryptowährungen gehört. Aber was sind sie? Kryptowährungen sind wie virtuelle Währungen, aber sie sind nicht an reale Währungen (wie Euro oder Dollar) gebunden. Stattdessen können Benutzer Kryptowährungen wie Token untereinander handeln. Sie können dann einen Verkauf aushandeln, der ihre Token in echtes Geld verwandelt. Diese Verkäufe funktionieren genauso wie die oben beschriebenen Aktien- und Anteilsgeschäfte.
Dieses Thema ist komplex und wir könnten viele Details in unserem Modell haben (z. B. Aufzeichnungen von Dokumenten und Transaktionen). Ich werde es einfach halten; Ich werde keinen automatischen Handel oder Formeln implementieren, um nach einem Handelsereignis neue Preise zu generieren.
Werfen wir also einen Blick auf dieses einfache Handelsmodell.
Das Datenmodell
Das Datenmodell besteht aus drei Themenbereichen:
Currencies
Items
Traders
Wir stellen jeden Themenbereich in der angegebenen Reihenfolge vor.
Währungen
Die Currencies
Themengebiet ist einfach. Es enthält vier Tabellen, in denen alle von uns verwendeten Währungen und deren Wechselkurse gespeichert sind. Währungen sind aus folgenden Gründen wichtig:
- Wir verwenden eine Währung, die als Basiswährung bezeichnet wird , zum Handeln. Eine Online-Aktienhandelsplattform wird wahrscheinlich den US-Dollar (USD) als Basiswährung verwenden, unabhängig von den tatsächlichen Regionen der Händler. Alle Transaktionen werden in die Basiswährung umgerechnet.
- Wir können auch Nicht-Basiswährungen oder lokale Währungen verwenden für alle Länder, in denen unsere Handelsplattform verfügbar ist. Dies würde es uns ermöglichen, Preise in der lokalen Währung anzuzeigen, aber dennoch Trades in der Basiswährung durchzuführen.
Die restlichen zwei Tabellen beziehen sich auf Währungen und Länder.
Die wichtigste Tabelle in diesem Themenbereich ist die currency
Tisch. Hier speichern wir alle Währungen, die wir jemals für den Handel verwendet haben, einschließlich Kryptowährungen. Ob eine Währung in dieser Tabelle enthalten ist, hängt davon ab, ob diese Währung zur Bezahlung der gehandelten Artikel verwendet wird. Für jede Währung speichern wir:
code
– Ein Code, der verwendet wird, um diese Währung EINZIGARTIG zu bezeichnen. Bei nationalen Währungen ist dies der ISO 4217-Code (z. B. USD für US-Dollar) oder ein anderer offizieller Code. Wir könnten auch ISO 4217 für Kryptowährungen verwenden; XBT ist der ISO-Code von Bitcoin. Allerdings verwendet Bitcoin informell auch den Code BTC.name
– Der EINZIGARTIGE Name dieser Währung (z. B. US-Dollar).is_active
– Wenn die Währung derzeit in unserem System aktiv ist.is_base
– Wenn diese Währung die Basiswährung unseres Systems ist. Normalerweise haben wir jeweils nur eine Basiswährung. Es ist möglich, dass wir mehr als einen haben, z. B. Euro für EU-Staaten und US-Dollar für andere Gebiete verwenden. In diesem Fall können wir mit diesem Attribut jedem Land eine Basiswährung zuweisen.
Die nächste Tabelle speichert aktuelle und historische Kurse zwischen Währungspaaren. Im currency_rate
Tabelle speichern wir die currency_id
wir wollen mit einer base_currency_id
vergleichen sowie der rate
wann dieses Paar gespeichert wurde (ts
). Da wir die Kurse zu verschiedenen Zeitpunkten speichern, speichert diese Tabelle sowohl historische als auch aktuelle Daten.
Eine Liste aller relevanten Länder ist im country
Wörterbuch. Neben dem Primärschlüssel (id
), enthält es ein Attribut, das einen EINZIGARTIGEN Länder-name
enthält .
Die letzte Tabelle in diesem Themenbereich ist currency_used
Tisch. In den meisten Fällen verwendet ein Land immer dieselbe Währung. Dennoch kann es zu Änderungen kommen, beispielsweise als viele EU-Länder ihre nationalen Währungen durch den Euro ersetzten. Um einen solchen Fall abzudecken, speichern wir eine Historie aller Währungen, die wir verwendet haben. Für jeden Datensatz in dieser Tabelle speichern wir Verweise auf das country
Tabelle (country_id
), die currency
Tabelle (currency_id
) und wann diese Währung verwendet wurde (date_from
und date_to
). Wenn date_to
NULL ist, wird diese Währung derzeit verwendet. Natürlich sollte pro Land nur eine Währung verwendet werden. Wir werden diese Prüfung nicht im Modell implementieren; Stattdessen führen wir eine Überprüfung durch, wenn ein Datensatz in dieser Tabelle hinzugefügt oder aktualisiert wird.
Artikel
Tabellen in den Items
Sachgebiete definieren alle zum Handel verfügbaren Artikel und deren aktuellen Status. Es zeichnet auch alle Änderungen auf, die an diesen Elementen im Laufe der Zeit vorgenommen wurden.
Das item
Tabelle listet alle Gegenstände auf, die Händler kaufen oder verkaufen können (oder die sie gekauft oder verkauft haben). Dies können Aktien, Fonds oder Kryptowährungen sein. Jeder Handel mit diesen Finanzinstrumenten verwendet fast genau denselben Prozess, sodass wir für alle dieselbe Struktur verwenden können. Für jeden Artikel speichern wir:
code
– Ein EINZIGARTIGER Textcode für diesen Artikel, ähnlich dem, den wir für Aktien verwenden (z. B. verwendet NASDAQ den Code „AAPL“ für Apple Inc).name
– Der vollständige Name des Unternehmens (für Aktien), des Fonds oder der Kryptowährung.is_active
– Ob dieser Gegenstand handelbar ist oder nicht.currency_id
– Verweist auf diecurrency
als Basiswährung für diesen Artikel verwendet.details
– Alle weiteren Angaben (zB Anzahl der ausgegebenen Aktien) in Textform.
Der price
Tabelle verfolgt alle Preisänderungen im Laufe der Zeit. Sobald eine Änderung aufgetreten ist, speichern wir die Uhrzeit (ts
) und buy
und sell
Preis für den Artikel (item_id
) beteiligt. Wir speichern auch einen Verweis auf die currency
Tabelle, die uns die Währung angibt, die verwendet wurde, um den Wert dieses Artikels zu diesem Zeitpunkt festzulegen. Beachten Sie, dass sich die bevorzugte Währung für jeden Artikel ändern kann.
Die letzte Tabelle in diesem Themenbereich ist der report
Tisch. Die Idee ist, regelmäßige (d. h. tägliche) Berichte für jeden Artikel zu speichern. Dieser Bericht basiert auf dem Handel während dieses Zeitraums und enthält finanzielle Details an einem Ort. Dies sind redundante Daten, aber sie können sich als sehr nützlich erweisen, wenn historische Preise abgefragt werden (was häufig vorkommt, da Händler äußerst an Trends interessiert sind). Für jeden Datensatz in dieser Tabelle speichern wir:
trading_date
– Das Datum dieses Berichts. Wenn wir Berichte öfter als einmal am Tag erstellen müssen, müssen wir Änderungen am Modell vornehmen – z. Hinzufügen von Zeitstempeln, die angeben, wann eine Handelsperiode begann und endete.item_id
undcurrency_id
– Verweist auf das zugehörigeitem
und diecurrency
verwendet.first_price
,last_price
,min_price
,max_price
undavg_price
– Der erste, letzte, maximale, minimale und durchschnittliche Preis für diesen Artikel in diesem Zeitraum.total_amount
– Der Gesamtbetrag, der für diesen Artikel während des Berichtszeitraums gezahlt wurde.quantity
– Die Anzahl (Menge) der in diesem Berichtszeitraum gehandelten Artikel. Bitte beachten Sie, dass austotal_amount
ein Durchschnittspreis berechnet werden kann undquantity
, aber ich ziehe es vor, „total_amount“ getrennt zu halten. Dies vereinfacht die Situation, wenn wir einen Bericht für einen längeren Zeitraum erstellen, z. B. wöchentlich. In diesem Fall könnten wir den gesamtentotal_amount
hinzufügen Attribute und teilen Sie diese durch die Summe allerquantity
Attribute, um einen wöchentlichen Durchschnittspreis zu erhalten.
Alle Attribute in dieser Tabelle (außer dem Primärschlüssel und den Fremdschlüsseln) können NULL sein. Dies wird der Fall sein, wenn wir einen Datensatz für eine neue Handelsperiode einfügen – es gibt bisher keine Trades. Zu Beginn jedes Datums können wir davon ausgehen, dass wir für jeden Artikel einen Datensatz einfügen und diese Werte im Laufe des Tages aktualisieren. Der letzte aktualisierte Wert ist auch der Abschlussbericht für diesen Tag.
Händler
Die Traders
Der Themenbereich ist der letzte, den wir besprechen werden, aber er ist der wichtigste Bereich im Modell. Seine vier Tabellen (ohne country
und item
Tabellen, die wir bereits behandelt haben) speichern Informationen über Händler, ihre Bestände und ihre Aktionen. Beachten Sie, dass die currency
Die hier verwendete Tabelle ist nur eine Kopie. Es wird verwendet, um das Modell zu vereinfachen und zu vermeiden, dass sich Beziehungen überschneiden.
Die zentrale Tabelle ist der trader
Tisch. Für jeden Händler speichern wir:
first_name
undlast_name
– Vor- und Nachname des Händlers.user_name
undpassword
– Der vom Händler gewählte Benutzername und das Passwort (Hash). Deruser_name
-Attribut kann nur EINZIGARTIGE Werte speichern.email
– Die E-Mail-Adresse des Händlers. Diese wird verwendet, um den Registrierungsprozess abzuschließen und für alle nachfolgenden Kontakte mit dem Händler. Es kann auch nur EINZIGARTIGE Werte enthalten.confirmation_code
– Der Code, der an den Benutzer gesendet wird, um den Registrierungsprozess abzuschließen.time_registered
undtime_confirmed
– Zeitstempel, wann sich der Händler registriert und wann er den Registrierungsprozess abgeschlossen hat.country_id
– Dascountry
wo der Händler wohnt.preferred_currency_id
– Diecurrency
in denen der Händler Preise angezeigt haben möchte.
Die Liste aller Gegenstände, die ein Händler derzeit besitzt, wird im current_inventory
Tisch. Für jede EINZIGARTIGE trader_id
– item_id
Paar speichern wir die quantity
der Händler derzeit besitzt.
Die verbleibenden zwei Tabellen beziehen sich direkt auf Angebote und Trades. Wir gehen davon aus, dass jeder Händler ein Angebot zum Kauf oder Verkauf von Artikeln zu einem bestimmten Preis abgeben kann. Wenn ein passendes Angebot erscheint, findet das Handelsereignis statt. (Auf börsenspezifische Details, bei denen ein Broker als Vermittler fungiert, gehen wir nicht ein.)
Wir erfassen alle Angebote im offer
Tisch. Jeder Händler kann ein Angebot zum Kauf oder Verkauf von Artikeln abgeben. Dazu müssen wir folgende Angaben speichern:
trader_id
unditem_id
– Verweist auf dentrader
wer dieses Angebot und denitem
sie kaufen oder verkaufen möchten.quantity
– Die Menge, die sie kaufen oder verkaufen möchten.buy
undsell
– Wenn es sich bei diesem Angebot um einen Kauf oder Verkauf handelt. Es kann immer nur ein Attribut gesetzt werden.rate
– Der gewünschte Kauf- oder Verkaufspreis. Dies ist nicht erforderlich, da ein Händler unabhängig vom Preis kaufen oder verkaufen möchte.ts
– Der Zeitstempel, als dieser Datensatz eingefügt wurde.is_active
– Ob dieses Angebot noch aktiv ist. Es könnte inaktiv werden, a) wenn der Händler es auf inaktiv setzt oder b) wenn der Handel stattgefunden hat.
Die letzte Tabelle in unserem Modell enthält Daten im Zusammenhang mit dem Handelsereignis. Der Handel findet zwischen zwei Benutzern statt, nachdem beide ein Angebot abgegeben haben. Der verwendete Preis kann der erste angebotene Preis oder der aktuelle Preis sein, je nachdem, was wir in unserer Anwendung implementieren möchten. Für jeden trade
Veranstaltung speichern wir:
item_id
– Bezieht sich auf denitem
gehandelt.seller_id
undbuyer_id
– Beide referenzieren dentrader
Tabelle und bezeichnen die am Handel beteiligten Benutzer.quantity
– Wie viel von diesem Artikel in dieser Transaktion gehandelt wurde.unit_price
– Der Stückpreis, der für diesen Artikel in diesem Handel verwendet wird.description
– Alle weiteren Details im Textformat.offer_id
– Die ID desoffer
die diesen Handel initiiert haben. Hinweis:Das erste Angebot initiiert einen Handel, also speichern wir diese ID hier.ts
– Der Zeitstempel, als dieser Handel stattfand.
Was denken Sie?
Wir haben gerade ein Datenmodell in Betracht gezogen, um den Online-Handel mit Kryptowährungen, Aktien und anderen Finanzderivaten zu erleichtern. Dies sind nur die nackten Knochen des Modells; Es gibt eine Reihe weiterer Details, die wir hinzufügen könnten. Ich denke an Dokumente im Zusammenhang mit Händlern und eine Möglichkeit, Zahlungsinformationen zu speichern. Was würden Sie hinzufügen? Oder vielleicht entfernen? Bitte teilen Sie uns dies in den Kommentaren mit.