Fortsetzung der vorherigen drei Artikel zum programmatischen Handel mit echtem Code:
Harte Trockengüter – Details und Gedanken zum automatisierten Echtzeithandel quantitativer Handelssysteme (1. Probleme und Schwierigkeiten)
Quantitatives Handelssystem – Details und Überlegungen zum automatisierten festen Angebot (2. Zweck des festen Angebots)
Quantitatives Handelssystem – Automatisierte reale Angebotsdetails und Gedanken (3. Verarbeitungsfähigkeiten)
Hier werden wir weiterhin über das Multi-Strategie-Handelssystem und das Marktzentrum in der Gesamtstruktur des echten Angebotscodes sprechen.
Vorwort
In der Handelsbranche, insbesondere bei Terminkontrakten, tauchen von Zeit zu Zeit mehrere Handelsmeister mit hoher Hebelwirkung auf, und aus dem Kapital von 100.000 Yuan können leicht mehrere zehn Millionen werden. Doch fast alle dieser Menschen waren wie Meteore, die über den Nachthimmel rasten. Nach einem kurzen, blendenden Moment verschwanden sie lautlos.
Und eine andere Gruppe erfahrener Händler, die schon lange im Geschäft sind, ist den ganzen Tag unterwürfig und redet über die unbekannte Zukunft, aus Angst vor dem Markt und vor schwarzen Schwänen, die jederzeit auftauchen. Gleichzeitig nutzen sie eine sehr geringe Hebelwirkung Öffnen Sie Positionen und versuchen Sie, Fehler zu machen. Die Richtung ist wie Gras an der Wand und schwankt nach links und rechts, ohne die Entschlossenheit und den Mut eines Meisters. Aber aus irgendeinem Grund ist diese Gruppe von Menschen auf dem Markt aktiv. Obwohl die Hebelwirkung gering ist, sind ihre Positionen nicht gering.
In der menschlichen Natur der Handelswelt sind Sterne leicht zu finden, Geburtstagssterne jedoch schwer.
Als erfahrener quantitativer Trader denke ich, dass einer der wichtigeren Punkte beim Trading darin besteht, die Notwendigkeit mehrerer Strategien zu erkennen. Es ist immer noch schwierig, Multistrategien im subjektiven Handel umzusetzen, da die Arbeitskräfte begrenzt sind (es sei denn, es werden mehrere Händler wie eine Institution eingestellt) und der Markt rund um die Uhr läuft und es leicht ist, Einstiegspunkte zu verpassen. Allerdings ist der programmatische Handel relativ einfach umzusetzen. Durch die Programmierung geht die Fähigkeit des menschlichen Gehirns und der Augen verloren, Preistrendmuster zu erkennen, sie verfügt jedoch über eine stärkere Ausführungskraft und eine stärkere Fähigkeit, Strategien zu kopieren und Positionen zu verteilen, was Vor- und Nachteile hat.
Bei Multi-Target, Multi-Strategie und Multi-Parametern sind die Kapitalpositionen auf natürliche Weise verteilt. Es geht nicht mehr darum, einen einzelnen Gewinn oder Verlust aufregend zu eröffnen und zu schließen, sondern darum, die Kapitalkurve so weit wie möglich zu glätten.
Überblick
Das Bild unten ist das allgemeine Architekturdiagramm eines Satzes meines echten Codes.

Die gesamte Architektur ist in zwei Teile gegliedert. Das eine ist ein unabhängiges Marktzentrum und das andere ist das Handelsprogramm, das für die Umsetzung der Strategielogik verantwortlich ist.
Normalerweise starte ich ein Programm mit einem Konto und ihre Richtlinienparameter und Kontoschlüssel werden durch Konfigurationsdateien unterschieden, sodass der Code vollständig gemeinsam genutzt werden kann und die Codeversion einfacher zu verwalten ist. Einige Parameter der Strategie können leicht unterschiedlich sein, vor allem, um bestimmte Vorgänge zeitlich zu versetzen, damit sie nicht plötzlich gleichzeitig ausgeführt werden.
Als es vorher nur wenige Strategien gab, habe ich mit jeder Unterstrategie ein Python-Programm gestartet, aber später stellte ich fest, dass der Serverspeicher nicht ausreichte. Denn ein Python-Programm allein belegt etwa 60 MB Speicher. Wenn es mehrere Strategien gibt und auf mehrere Konten kopiert wird, belegt es schnell viel Speicher. Obwohl Sie für einen leistungsstärkeren Server mehr bezahlen können, ist die Verwaltung und Wartung auch mühsam. Am Ende wurde es zu dem geändert, was es jetzt ist. Auf der Grundlage von Konten werden ähnliche Strategien für verschiedene Währungen (mehrere Währungen und mehrere Parameter) in einer Gruppe zusammengefasst, und dann wird eine Gruppe von Strategien zu einer Python-App. Nach der Ausführung habe ich das Gefühl, dass sich dieses Kombinationsmodell sehr gut für das Layout mehrerer Konten und mehrerer Strategien eignet. Es ist sehr praktisch für die Codeverwaltung sowie den Betrieb und die Wartung in Echtzeit.
Der Vorteil einer Unterstrategie für eine Python-App besteht darin, dass der Code viel einfacher sein kann. Stellen Sie sich jedoch vor, wenn Ihre Strategie auf den 40 wichtigsten Münzen basiert und dann auf jeder Münze drei verschiedene Strategien ausführt, dann sind es 120 Unterstrategien. Wenn Sie drei weitere Konten hinzufügen, sind es 360 Unterstrategien. Dieses Modell wäre nicht nachhaltig.
Wenn nur wenige Apps vorhanden sind, können Sie zunächst ein Terminal wie tmux verwenden, um Protokollinformationen in Echtzeit auszugeben, was für die Überwachung in den frühen Phasen des Programmbetriebs sehr praktisch ist. Nachdem der Code in der späteren Zeit stabil ist, wird für die Verwaltung Betriebs- und Wartungssoftware wie pm2 verwendet. Analysieren Sie die Protokolldatei in Zukunft einfach regelmäßig.
Bei mehreren Zielen und mehreren Strategien muss ein unabhängiges Marktzentrum Standard sein. Die verschiedenen erhaltenen Marktinformationen können zwischen mehreren Handelsprogrammen, also den Strategiemodulen auf der linken Seite des Bildes oben, geteilt werden.
Angebotscenter
Das Bild unten zeigt ein detaillierteres Bild des Market-Center-Moduls.

Zunächst können Sie die zu erhaltenden K-Linien-Symbole über die Konfigurationsdatei festlegen, sodass Sie den Typ in Zukunft einfacher ändern können.
Wenn es sich um mehrere Perioden handelt, können Sie die k-Linie der gemeinsamen Teilerperiode erhalten, und dann kann jede Strategie entsprechend ihren eigenen Anforderungen neu abtasten.
Wenn Sie die Dinge ein für alle Mal vereinfachen möchten, dann ist es am besten, direkt die 15-Minuten-K-Linie zu erhalten, denn mittel- und niederfrequente Strategien, insbesondere Trendfolgen, mit einem Zyklus von weniger als 15 Minuten sind grundsätzlich geeignet Es ist schwierig, auf lange Sicht Geld zu verdienen.
Wenn Sie beispielsweise eine 15-Minuten-, 1-Stunden- oder 4-Stunden-Strategie haben, muss das Marktzentrum nur die 15-Minuten-K-Linie erhalten. Wenn die k-Linienlänge des großen Zeitraums nach dem Resampling nicht ausreicht, müssen Sie beim Start weitere k-Linien von 15 Minuten in der Datenbank speichern.
Da WebSocket nur die neuesten aktualisierten K-Line-Informationen überträgt, sind es 600 Stunden (25 Tage) Daten, wenn Ihre Strategie einen relativ großen K-Line-Zyklus und eine lange Lookback-Zeit verwendet, z. B. 4 Stunden bei ma150, 15 Wenn eine k-Leitung pro Minute benötigt wird, sind 2.400 erforderlich. Dies hängt von der einmaligen Erfassung und Speicherung durch die Rest-API beim Start des Market Centers als Grundlage für spätere kontinuierliche Updates ab.
Ich habe das gesamte Marktcenter in zwei Apps aufgeteilt. Tatsächlich kann es auch in einer App zusammengefasst werden, es ist jedoch robuster, sie zu trennen. Lassen Sie uns zunächst über den sekundären Plan B sprechen.
Plan B
Wie in mehreren früheren Artikeln erwähnt, dient dies hauptsächlich dazu, zu verhindern, dass die Verbindung zum Websocket von PlanA unterbrochen wird. Es dient als temporäres Backup, insbesondere im Ausstiegszeitpunkt der Strategie, um zu verhindern, dass sich der Preis für eine bestimmte Distanz und den Ausstieg bereits umgekehrt hat Die Position wurde nicht verlassen, was zu weiteren unerwarteten Verlusten führte.
PlanB ist sehr einfach. Es verwendet hauptsächlich die Funktion public_get_ticker_price, um die neuesten Preise aller unbefristeten Verträge auf einmal zu erhalten. Dies sind auch die neuesten Preisinformationen, die von B An selbst zusammengestellt wurden.
Derzeit verfügt B'an über mehr als 200 unbefristete Verträge. Wenn wir die neuesten Preise einzeln erhalten, müssen wir sicherstellen, dass der Preis für jedes Produkt alle 3 Sekunden aktualisiert wird. Die API wird mehr als 4.000 Mal in einer Minute aufgerufen. die den Grenzwert überschreiten muss. Das API-Gewicht der zuvor erwähnten Funktion beträgt jedoch nur 2. Wenn sie alle 3 Sekunden verwendet wird, verbraucht sie nur 40 API-Kontingente pro Minute. Es besteht kein Grund zur Sorge, dass das Kontingent überschritten wird.
Nach meinem Test aggregiert Binance grundsätzlich die Preise aller Kontrakte einmal in etwa 1 bis 2 Sekunden, sodass für den Backup-Preis von Mittel- und Niederfrequenzstrategien eine Verzögerung von etwa 5 Sekunden völlig ausreichend ist.
Wenn Ihre Anforderungen nicht hoch sind, können Sie damit sogar grobe K-Linien für alle Verträge synthetisieren und so die Verwendung von WebSocket vollständig vermeiden. Auch wenn diese Art von K-Linie nicht für den Handel verwendet werden kann, kann sie auch zum Scannen der gesamten Marktinformationen und zur Bereitstellung von Einstiegspunkten für subjektive Händler auf der Grundlage ihrer eigenen entwickelten Strategiealgorithmen, wie z. B. Divergenz und Konvergenz des gleitenden Durchschnitts, verwendet werden. einfache Mustererkennung usw. Signal. Wie könnte man sonst so viele Münzen sehen? Wenn Sie einen guten Daytrader haben, kann dieses Tool hilfreich sein, um Sie beim Handel zu unterstützen. Ich habe schon früher ähnliche Tools für andere geschrieben. Es ist wirklich gut, wenn der Markt gut ist, aber der Markt war in letzter Zeit nicht gut.
Natürlich ist diese Lösung nur beim Handel mit vielen Coins von praktischem Nutzen. Andernfalls ist es besser, den Handicap-BBO-Preis jeder Sorte direkt zu erhalten.
Beachten Sie auch, dass die Backup-Preisinformationen häufig im Hauptcode verwendet werden müssen. Sie werden beispielsweise zur Berechnung der der Position entsprechenden Fiat-Mittel und der ungefähren Gewinn- und Verlustrate verwendet, wofür keine sehr genauen Daten erforderlich sind. Denn Codefragmente und Informationen, die nicht häufig verwendet werden, sind möglicherweise schon vor langer Zeit kaputt gegangen und Sie wissen sie möglicherweise erst, wenn sie verwendet werden. Jeder, der viel Code geschrieben hat, weiß, dass diese Art von Anhangcode leicht versehentlich geändert werden kann, ohne es zu merken.
Plan A
Der Hauptcode des Marktzentrums. Diese App hat 4 Hauptfunktionen.
Holen Sie sich Kerzenhalter mit historischer Basis. Wie bereits in diesem Artikel erwähnt, müssen Sie jedes Mal, wenn Sie beginnen, sicherstellen, dass jede für alle Strategien erforderliche K-Linie vorhanden ist.
Websocket-Verwaltung. Dieses Modul ist etwas komplizierter und muss verschiedene Trennungssituationen, Wiederverbindungen usw. bewältigen. Jedes Mal, wenn die Börse neue K-Linien-Daten überträgt, werden die Daten des neuesten Balkens der K-Linie in der Datenbank aktualisiert.
Zusätzlich zu den K-Line-Daten habe ich auch die Genauigkeitsinformationsaktualisierungen jeder Sorte im Marktzentrum abgelegt. Das heißt, die Funktion public_get_exchangeinfo ermittelt die verschiedenen Bestellpreise und die Mindestgenauigkeit der Bestellmenge und wandelt sie dann in einen praktischen Wörterbuchtyp um. Auf diese Weise können alle Strategien geteilt werden.
Der letzte Schritt ist die Überprüfung, eine einfache Plausibilitätsprüfung reicht aus. Überprüfen Sie, ob die erhaltenen K-Linien kontinuierlich sind und keine Auslassungen vorliegen, und vergleichen Sie sie dann regelmäßig einzeln mit den von der Rest-API erhaltenen K-Linien, ob der Preisunterschied zu dem von PlanB erhaltenen Preis zu groß ist usw. Kurz gesagt: Es geht lediglich um Vergleiche und Inspektionen, um Fehler frühzeitig zu erkennen.
Dies ist wahrscheinlich die Kernstruktur meines Strategiemarktes mit mittlerer bis niedriger Frequenz. Bei Bedarf können die Kontoaktualisierungsinformationen auch über Websocket abgerufen werden. Dies ist jedoch etwas mühsamer und wird die meiste Zeit nicht verwendet.