Datentypen in qteasy
Ein Datentyp ist ein Kernkonzept in qteasy, er repräsentiert die in einer Handelsstrategie verwendeten Informationen, z.B. historische Handelsdaten, makroökonomische Daten etc. Informationen sind nicht dasselbe wie Daten, und in früheren Versionen von qteasy wurde ein Datentyp als eine Datenspalte in einer DataSource-Tabelle definiert, aber das ist keine gute Art, ihn zu definieren: Informationen sind nicht dasselbe wie Daten. Die Gründe dafür sind:
Einige Daten sind für sich genommen nicht aussagekräftig genug und müssen mit anderen Daten kombiniert werden, um ausreichende Informationen zu erhalten.
Einige Daten enthalten mehrere Informationen, die aus verschiedenen Blickwinkeln extrahiert werden können, so dass in vielen Fällen die Daten selbst genügend Informationen enthalten.
Die Definition von Informationen ist ebenfalls dynamisch, und dieselben Daten können auf unterschiedliche Weise interpretiert werden.
Es ist daher voreilig, Informationen mit Daten gleichzusetzen, denn logischerweise sind Daten nur ein Träger von Informationen und nicht die Informationen selbst.
In der neuen Definition von qteasy sind Datentypen die verschiedenen Arten von Informationen, die wir aus Datenhaufen extrahieren wollen, von denen einige z.B. direkt aus einer Datentabelle gelesen werden können:
Der Eröffnungskurs einer Aktie, der direkt aus der Kurstabelle abgelesen werden kann
Einige Daten müssen jedoch über verschiedene Daten in verschiedenen Tabellen gelesen werden, indem sie z. B. kombiniert werden:
Für den Aufzinsungspreis einer Aktie muss der Kurs der Aktie abgelesen werden, dann muss der Aufzinsungsfaktor des Aktienkurses abgelesen und berechnet werden, um den
So kann es vorkommen, dass aus ein und derselben Datenspalte unterschiedliche Informationen ausgelesen werden können:
Der gestrige Schlusskurs und der Tagesgewinn sind unterschiedliche Informationen, die jedoch beide aus derselben Aktienkurstabelle extrahiert werden können
Aus diesem Grund hat qteasy die Datentypen neu definiert und sie als die Informationen definiert, die wir brauchen, und eine einfach zu bedienende API zur Verfügung gestellt, die es den Nutzern ermöglicht, schnell die Informationen zu extrahieren, die sie aus der Datentabelle benötigen, und die es den Nutzern ermöglicht, benutzerdefinierte Datentypen zu erstellen, um die Informationen zu extrahieren, an denen sie interessiert sind. Darüber hinaus ermöglicht die von den Datentypen bereitgestellte API die einfache Erstellung von Diagrammen, den Vergleich, die Gegenüberstellung und die statistische Analyse der extrahierten Informationen.
Die Definition der Datentypen sollte durch eine Klasse implementiert werden, so dass eine Anpassung durch den Benutzer leicht möglich ist. Gleichzeitig sollte qteasy einen ziemlich vollständigen Satz eingebauter Datentypen bereitstellen, um den Umfang der erforderlichen Anpassungen zu verringern, und möglichst viele Datentabellen abdecken, um sicherzustellen, dass die heruntergeladenen Daten sinnvoll genutzt werden.
Logischerweise muss die Definition eines Datentyps die folgenden Schlüsselelemente enthalten:
Datenquelle: Aus welchen Datenfeldern in diesen Datentabellen stammen die Informationen?
Datenzugang: Wie kann man diese Informationen extrahieren?
Angesichts der großen Anzahl von eingebauten Datentypen, die definiert werden müssen, ist es wichtig, dass die Definitionen dieser Datentypen einfach und parametrisch sind. Glücklicherweise sind die Datentypklassen nicht übermäßig komplex und es sollte einfach sein, parametrische Definitionen zu implementieren.
Verwendung und Ausgabe Erstens sieht es so aus, als ob die Verwendung und Ausgabe der Datentypen in zwei APIs vereinheitlicht werden sollte:
API1: data_type.get(start, end, frequency): holt die einzelnen Frequenzdaten innerhalb des Intervalls des Typs unabhängig von einzelnen Beständen, Ausgabe als serienartige Daten.
API2: data_type.get(shares, start, end, frequency): Ermittelt die einzelnen Häufigkeitsdaten des Typs in dem Intervall, das sich auf die angegebenen einzelnen Aktien bezieht
Und vielleicht eine dritte API: data_type.get(shares, start, end, frequency, **kwargs)
Die oben genannten APIs sollten völlig einheitlich sein und Daten im gleichen Format zurückgeben, unabhängig davon, ob es sich um einen eingebauten oder benutzerdefinierten Typ handelt.
Arten von Datentypen Der nächste Punkt, der untersucht werden sollte, sind die Arten von Datentypen, wie viele verschiedene Arten von Datentypen gibt es? Die Art hängt natürlich von der Art und Weise ab, wie die Daten aus der Datentabelle und der Ausgabe gewonnen werden. Aktienkursdaten und Inhaltsdaten werden auf unterschiedliche Weise gewonnen, erstere werden direkt aus der Tabelle mit Hilfe von Datenetiketten gelesen, während letztere aus der Tabelle gefiltert werden müssen und dann durch Zeilen- und Spaltentransformationen gewonnen werden. Natürlich gibt es noch weitere Möglichkeiten, z. B. durch eine Mehrtabellenabfrage wie z. B. eine Preiszusammensetzung oder eine Mehrdatenberechnung. Hier sei nur gesagt, dass offensichtlich verschiedene Datentypen ihre eigenen Merkmale haben, eine Klasse muss separat behandelt werden.
Wenn man die Datentypen der Klasse der Mehrdatenberechnungen nicht berücksichtigt (weil Mehrdatenberechnungen in einer Strategie implementiert werden können, aber der spezielle Typ der Doppeldatenberechnungsart: geklammerter Preis wieder aufgenommen werden sollte), sind die Arten von Datentypen vielleicht die folgenden:
Diese Datentypen können symbolisierte oder unsymbolisierte Daten ausgeben und unterstützen die Ausgabe von Perioden und Zeitstempeln:
Bei der Angabe eines Datentyps werden die Ausgabetypen, die von diesem Datentyp unterstützt werden können, in der Datentypdefinition festgelegt und können nicht geändert werden.
- ‚basics‘:
‚basics‘, Basisdatentyp. Diese Daten sind zeitunabhängig und sind im Prinzip nicht Teil der historischen Daten, sondern werden nur als Information aufgerufen. Diese Art von Daten erfordert nur einen Tabellennamen und einen Spaltennamen als Parameter für die kwargs zum Lesen.
- ‚direct‘:
‚direct‘, direkt gelesener Datentyp. Das heißt, nach dem Intervall Band direkt aus der Datentabelle, um die Daten direkt zu lesen, wie Preise oder Indikatoren dieser Art von Datentyp müssen nur Daten aus einem Tabellennamen und Spaltennamen gelesen werden kann, so lesen Sie die Parameter nur einen Tabellennamen und Spaltennamen
- ‚adjustment‘:
‚adjustment‘, Art der Datenkorrektur. Aus einer Tabelle, um Daten A zu lesen, eine andere Tabelle, um Daten B zu lesen, und mit B korrigierte Ausgabe, wie z. B. zusammengesetzter Preis Diese Art von Daten muss aus zwei Tabellen gelesen werden, so dass Leseparameter zwei Tabellennamen und Spaltennamen haben
- ‚relations‘:
‚relations‘ Datenassoziationstyp. Liest Daten A und B aus zwei Tabellen und gibt eine Art von Beziehung zwischen ihnen aus, z. B. eq/ne/gt/or/nor, usw.
- ‚operation‘:
‚operation‘ Datenberechnungsart. Liest Daten A und B aus zwei Tabellen und gibt das Ergebnis der Berechnung zwischen ihnen aus, z. B. +/-/*//
- ‚event_status‘:
‚event_status‘, event_status type. Fragt das Datum des Ereignisses aus der Tabelle ab und füllt das Ereignisauswirkungsintervall mit verschiedenen Status, wie Aussetzung, Namensänderung usw.
- ‚event_multi_stat‘:
‚event_multi_stat‘, Multi-Ereignis-Status-Typ. Fragt das Datum des Auftretens mehrerer Ereignisse aus einer Tabelle ab und füllt das Ereignisauswirkungsintervall mit mehreren verschiedenen Zuständen, z. B. Verwaltungslisten usw.
- ‚event_signal‘:
‚event_signal‘ Ereignis-Signaltyp. Fragt das Datum des Ereignisses aus der Tabelle ab und erzeugt Signale, wenn das Ereignis eintritt, z. B. Haltestellen nach oben und unten, auf dem Brett auf der Liste, Dividendenausschüttung usw.
- ‚composition‘:
成份查询型。从成份表中筛选出来数据并行列转换 另外还应该有一些特殊类型,由特殊的过程实现
- ‚compound‘:
‚compound‘ Zusammengesetzter Typ für einen einzelnen Zeitpunkt. Findet mehrere Daten, die zu einem bestimmten Zeitpunkt verfügbar sind, und kombiniert sie für die Ausgabe, z. B. Finanzberichte für eine Aktie zu einem bestimmten Zeitpunkt.
Ausgangstyp
- ‚symbolised‘:
‚symbolised’: Diese Datenstruktur ähnelt einem DataFrame mit Zeilen für Zeiträume und Spalten für Tickersymbole.
- ‚un-symbolised‘:
‚un-symbolised’: unsymbolisierte Daten in Form von Zeiträumen; diese Datenstruktur ähnelt einer Reihe, die als Zeitraum fungiert und nur eine einzige Datenspalte enthält
Definition der Datentypklasse Die Definition des Typs sollte der Einfachheit halber parametrisiert werden, sofern die Parameter gesetzt sind, werden der Lesemodus und die Lesezieltabelle bestimmt.
Die einzige Methode der Klasse, die extern aufgerufen werden kann, ist nur eine, und diese Methode ruft verschiedene Methoden auf, je nachdem, wie sie gelesen wird, liest die Daten aus der Zieltabelle und bereinigt sie für die Ausgabe.
Es können sogar verschiedene Datenmerkmale im Typ definiert werden, z.B. kann open im letzten Zyklus verwendet werden, während close nicht verwendet werden kann.
Aus Gründen der Erweiterbarkeit kann in der Klasse auch eine Leerfunktion für spezielle Fälle definiert werden, in denen benutzerdefinierte Daten nach dem Umschreiben gelesen werden
Es gibt viele eingebaute Datentypen in qteasy. Um die Erstellung dieser Klassen zu erleichtern, wird eine Datentyp-Mapping-Tabelle erstellt, die alle Datentypen auf ihre Schlüsselparameter abbildet, so dass eine Datentypklasse mit einem einfachen Funktionsaufruf erstellt werden kann.
1, DATA_TYPE_MAP.
DATA_TYPE_MAP: Definiert die Korrespondenz zwischen Datentypen und Datentabellen, um abzufragen, welche Art von Daten in welcher Tabelle zu finden ist. Jeder Datentyp hat eine eindeutige ID, und jeder Datentyp hat nur einen eindeutigen Speicherort.
Die Bedeutung der Spalten in der Datentabellenabbildung ist wie folgt: htype_name(key): Datentypname (Primärschlüssel)
freq(key): Häufigkeit der Datenverfügbarkeit (Primärschlüssel) min - Minutendaten d - tägliche Daten w - wöchentliche Daten m - monatliche Daten q - vierteljährliche Daten
asset_type(key): die Art der Finanzanlage, der die Daten entsprechen: E - Aktien IDX - Index FT - Futures FD - Fonds OPT - Optionen THS - Flush Index SW - Shenwan Industry Indexes
Beschreibung: detaillierte Beschreibung der historischen Daten, kann für die Spaltensuche verwendet werden
acquisition_type: Wie die Daten erfasst wurden
table_name: Name der Tabelle, in der sich die historischen Daten befinden
Spalte: der Name der Spalte in der Tabelle, in der sich die historischen Daten befinden
„““