Worüber wir hier hauptsächlich sprechen, ist die Implementierung von programmiertem Echtzeitcode für mittel- und niederfrequente Handelsstrategien.

Strategie

Die Entstehung einer quantitativen Handelsstrategie basiert im Allgemeinen auf der Beobachtung und dem Verständnis des Marktes, der Generierung einer Strategieidee, der anschließenden Gestaltung der spezifischen Details der Strategie und der anschließenden Rückprüfung verschiedener Datenarten, um die Wirkung spezifischer Parameterwerte zu ermitteln und zu überprüfen . Wenn die Wirkung gut ist und universell anwendbar ist, dann besteht der nächste Schritt darin, den realen Markt mit kleinen Mitteln zu testen. Wenn das reale Angebot außerhalb der Stichprobe realisierbar ist, können Sie schließlich die Mittel erhöhen und es über einen längeren Zeitraum betreiben.

Um eine Hebelwirkung zu verhindern, möchte ich erklären, dass es natürlich auch andere Methoden zur Generierung von Strategien gibt, wie z. B. Data Mining, Digging, Digging, Digging-Faktoren. Es gibt auch automatische Generierungsfaktoren wie maschinelles Lernen und verstärkendes Lernen. Es ist jedoch schwierig, diese Art von Black-Box-Methode während der Retracement-Phase der Strategie aufrechtzuerhalten, da Sie nicht wissen, wann und warum diese ausgegrabenen Faktoren versagen werden. Beim quantitativen Handel ist es am wichtigsten, auf festem Handel zu bestehen. Wenn der Markt nicht gut ist, können Sie Ihre Position verkleinern, aber nicht schließen. Niemand kann wissen, wann der große Markt ausbrechen wird. Wenn Sie es verpassen, ist Ihr vorheriges Retracement umsonst.

Eine Analogie besteht darin, dass das Design und das Backtesting von Strategien der „Tempelberechnung“ entsprechen, die in „Die Kunst des Krieges“ von Sun Tzu erwähnt wird: „Wer keine Schlacht hat, aber der Tempel ist der Gewinner, muss mehr berechnen; der Eine.“ Wer nicht gekämpft hat, aber der Tempel der Verlierer ist, muss rechnen: „Weniger ist mehr. Mehr bedeutet Sieg, weniger bedeutet weniger, und nichts zählt!“

Daher muss die Handelsstrategie von Anfang an gut geplant und sorgfältig berechnet werden, sonst verlieren Sie tatsächlich, bevor das eigentliche Angebot gemacht wird. Dieser Schritt ist der schwierigste. Obwohl der anschließende eigentliche Code nicht einfach ist, ist das meiste davon einfach mühsam. Wenn Sie mehr Zeit und Mühe aufwenden, können Sie ihn immer gut machen. Der Schlüssel zu einem verbindlichen Angebot ist die Risikokontrolle.

Handelsstrategien oder Handelsregeln ermöglichen es uns, „das Richtige zu tun“, und die konkrete Umsetzung des eigentlichen Angebots besteht darin, „das Richtige zu tun“. Oft ist es weitaus schwieriger, die richtige Richtung zu kennen, als die Strecke zu Fuß zurückzulegen. Genau wie bei dem Witz über das Reparieren von Geräten kostet das Zeichnen einer Linie tausend Yuan. Das Zeichnen der Linie selbst ist nur 1 Dollar wert, aber zu wissen, wo man sie ziehen muss, kostet 999.

Strategie + reales Angebot bilden zusammen ein Handelssystem. Bezüglich der Gestaltung eines Handelssystems können Sie sich auf den vorherigen Artikel beziehen: Sieben Elemente eines vollständigen Handelssystems. Das eigentliche Angebot hier sind tatsächlich die spezifischen Vorgänge der nächsten 4 Schritte des Handelssystems, „Eingabe und Ausstieg aus Gewinn und Verlust“. Die ersten drei Schritte werden grundsätzlich festgelegt, wenn der Strategieentwurf abgeschlossen ist.

Doch selbst wenn die Strategie gut ist, wird die Wirkung erheblich verringert, wenn die tatsächliche Umsetzung nicht erfolgt, und sogar die potenzielle Strategie, die ursprünglich gut war, wird gestoppt. Eine gute Strategie zu entwickeln ist nicht einfach, also versäumen Sie nicht, sie umzusetzen. Eine gute Idee muss am Ende fest umgesetzt werden.

Frage

1. Plötzliche Marktsituation

Diese Art von Strategie wird nur dann angewendet, wenn innerhalb des Balkens ein Signal vorhanden ist. Innerhalb des Balkens wird nicht der Schlusskurs oder Eröffnungskurs einer bestimmten K-Linie verwendet, sondern der Intraday-Preis wird zur Auslösung des Signals verwendet.

Hier ist ein Beispiel für ein Problem, das vor ein paar Tagen im echten Angebot aufgetreten ist. Ein mikroskopisches Beispiel eines Handelsmarktes. Es ist im Währungskreis durchaus üblich.

Das Bild unten zeigt die 10-Sekunden-K-Linie des unbefristeten BNB-Vertrags vor ein paar Tagen (2023.7.10 17:21) (ein Balken stellt die Bedeutung des OHLCV dar, der aus den Transaktionsdaten innerhalb von 10 Sekunden aggregiert wird).

Wie Sie sehen können, beträgt die Amplitude der großen positiven Linie 3,53 % und die Transaktion betrug etwa 30 Millionen Dollar. In 10 Sekunden erledigt. Vor dem Start dieses Marktes verlief die Entwicklung nahezu ereignislos.

Schauen Sie sich das Bild unten an, das die 1-Sekunden-K-Linie zu diesem Zeitpunkt zeigt. Sie können weitere Details erfahren.

Es dauert im Grunde etwa 4 Sekunden, bis es vollständig aufgegangen ist. Es stieg in der ersten Sekunde um mehr als 2 Punkte. Dabei handelt es sich im Wesentlichen um das Ergebnis von Hochfrequenzstrategien (ereignisgesteuert, Hochfrequenztrends, Market Making usw.) und algorithmischen Aufträgen, die im Voraus vereinbart werden können.

Schauen wir uns die 4-Stunden-K-Linie von BNB an. Die größte positive Linie ist der Zeitraum, in dem die Nachricht veröffentlicht wurde. Amplitude 4,05 %.

Wenn wir die K-Linien dieser Zeiträume vergleichen, können wir sehen, dass diese Art von nachrichtenbedingten Schwankungen (diesmal handelt es sich bei den Nachrichten um Binances neues IEO, ARKM), im Allgemeinen sofort abgeschlossen werden. Der Anstieg von 4 Stunden unterscheidet sich eigentlich nicht wesentlich von 10 Sekunden, und der tatsächliche Start dauert nur etwa 4 Sekunden. Diese Art von Schlachtfeld gehört zu den bis an die Zähne bewaffneten Hochfrequenzstrategien. Es kann sich jedoch auch auf Mittel- und Niederfrequenzstrategien auswirken und zu größerem Slippage führen.

Wir werden hier nicht auf Hochfrequenzstrategien eingehen. Was bedeutet das für Mittel- und Niederfrequenzstrategien? Mir fallen vor allem zwei Dinge ein:

1. Einige Trends treten sehr plötzlich auf und werden innerhalb kurzer Zeit abgeschlossen, sodass die Strategie nicht einfach so ausgesetzt werden kann. Das echte Angebot im Währungskreis muss garantiert 24 Stunden am Tag online sein, insbesondere wenn eine Position vorhanden ist, und es kann nicht getrennt werden.

2. Der tatsächliche Schlupf kann 2 Prozentpunkte erreichen. Schauen Sie sich die 1-Sekunden-K-Linie oben an. Wenn Ihr Kaufsignal auf einem bestimmten Preis basiert und dieser Preis zufällig im unteren Teil der großen K-Linie herauskommt, dann ist der Preis nach Ihrer Eingabe egal Der Markt könnte um 2 bis 3 Prozentpunkte abrutschen. Das Schlimmste kann bis zu 4 Prozentpunkte betragen, und diese Kaufaufträge stehen auf der Kippe. Wenn Sie jedoch verkaufen, erzielen Sie Gewinne, die Ihre Erwartungen übertreffen. Nach Murphys Gesetz landet das fallende Brot jedoch immer auf der gebutterten Seite. Langfristig besteht eine hohe Wahrscheinlichkeit, dass es zu mehr Slippage kommt.

Das Gute daran ist jedoch, dass dies nur eine begrenzte Anzahl von Malen vorkommt. Solange die Strategie in Ordnung ist und der Slippage größer ist, handelt es sich lediglich um Gewinnmitnahmen und hat keinen Einfluss auf die langfristig positiven Renditen. Es ist, als würde man noch einen weiteren Schock und Abnutzungserscheinungen ertragen.

Eine Möglichkeit, dies zu mildern, besteht darin, Websocket zu verwenden, um den neuesten Preis zu erhalten. Das Dokument besagt, dass es alle 250 Millisekunden aktualisiert wird, aber manchmal erfolgt die Aktualisierung tatsächlich schneller, sodass eine sofortige Reaktion möglich ist. Ein weiterer Vorteil von Websocket besteht darin, dass es nicht die Frequenzgrenze der Restful API der Börse belegt. Dies wird später im Detail erwähnt.

2. Das Stundenangebot

Dies trifft bei vielen Trendstrategien zu, da die meisten von ihnen den Preis der Switch-Position zur Berechnung der Ein- und Ausstiegssignale verwenden. Sobald dann die Stunde verstrichen ist, fangen alle einer nach dem anderen an.

Auf die Stunde, insbesondere Vielfache von 8, denn egal, welchen Zyklus Ihre Strategie hat, diese drei Punkte sollten alle den gemeinsamen Teiler der Zeit erfüllen. Vielleicht werden alle automatisierten Strategien in Aktion treten und die hohen, mittleren und niedrigen Frequenzen werden zusammengedrückt erzeugen ihre eigenen Signale, die Rivalen des anderen.

Darüber hinaus muss die Börse zu diesem Zeitpunkt auch abgewickelt und geliefert werden. Obwohl der unbefristete Vertrag nicht geliefert wird, können andere Vorgänge zur Berechnung der Bereitstellungskapitalgebühr erforderlich sein. Ungefähr 6 Sekunden lang nach den drei Stunden des 08.08.16 hat der Websocket von Binance keine K-Line-Informationen übertragen, er hat aufgehört! Fragen Sie einfach, was zu tun ist? In der Realität gibt es oft keine Lösung.

Was noch schwerwiegender ist, ist, dass der Markt mitschwingen wird, insbesondere wenn der Markt fällt, und Panik ansteckender sein wird. Die Server der Börse sind noch ausgelasteter und viele kleine Münzen mit schwierigen Marktbedingungen sind nicht sofort ausgefallen, und alle sind 1001-Fehler. Wenn Sie in Eile eine Order aufgeben und Erfolg haben, können die an der Spitze des Pins gehandelten Orders Ihnen gehören.

Daher ist ein Ausrutschen wirklich unvermeidlich. Eine Überoptimierung des Codes wird nicht viel nützen. Wie bereits erwähnt, betrachten Sie es einfach als einen weiteren Stop-Loss.

Es gibt jedoch auch einige Tipps zum Teilen.

Der Signalauslauf kann n Sekunden vor der Stunde im Voraus berechnet werden. Zu diesem Zeitpunkt hat die Überlastung noch nicht begonnen, da die meisten automatisierten Strategien möglicherweise warten, bis der K-Linien-Schlusspreis für die Stunde herauskommt, bevor sie mit der Berechnung des Signals beginnen. Das durch diesen Vorgang verursachte Problem besteht jedoch darin, dass er möglicherweise falsche Signale erzeugt. Beispielsweise sollte der Preis nicht sofort zurückgehen und ein falsches Positiv auftreten. An dieser Stelle hängt es von Ihrer Entscheidung ab, ob Sie dies tun möchten oder nicht. Sie können jedoch einen bestimmten Schwellenwert hinzufügen und ihn bei Überschreiten auslösen, um Fehlsignale durch kurzfristige Preisrenditen zu verhindern. Der Schlupf kann etwas reduziert werden.

Es gibt auch eine Methode zur Verwendung von Offset-Signalen wie Zeitoffset oder Shift-K-Line, die keine stündlichen Signale generiert, sich nicht mit anderen verwickelt und ein Gedränge besser vermeidet. Es gibt auch Methoden wie TWAP.

Allerdings erfordern diese einige Fähigkeiten und machen den eigentlichen Code schwieriger.

festes Angebot

Eine grundlegende CTA-Strategie für mittlere bis niedrige Frequenzen. Im Allgemeinen ist der eigentliche Code sehr einfach. Es gibt nur eine Strategie für eine Sorte, es gibt keine Addition oder Subtraktion von Positionen und es werden keine Querinformationen miteinander vermischt. Dann muss der lokale Code keinen Status pflegen, da die Börse alles für Sie aufzeichnet. Ob eine Position vorhanden ist, wie viel Marge erforderlich ist, ob die Bestellung abgeschlossen ist usw. Da es sich um eine mittlere bis niedrige Frequenz handelt, können Sie die Kontoinformationen der Börse bei Bedarf jederzeit überprüfen, und zwar am unmittelbarsten und genauesten. Dadurch entfällt die Mühe, eine lokale Datenbank zum Aufzeichnen des Transaktionsstatus zu verwenden.

Diese einfache Strategie ist tatsächlich machbar, aber das Problem besteht darin, dass das Retracement möglicherweise größer und nicht ausreichend diversifiziert ist und das Risiko hoch ist. Ein einzelnes Produkt kann keinen Markt haben, schwanken und zurückgehen, ohne umzukehren, oder auf extreme Marktbedingungen stoßen, und ein weiteres großes Loch wird auf der Kapitalkurve entstehen. Wenn Sie es ernst nehmen, werden Sie Angst haben und Ihre Strategie aufgeben, wenn Sie es nicht ertragen. Wenn Sie es auf die leichte Schulter nehmen, wird das Handelserlebnis viel schlechter sein. Beachten Sie, dass dies alles unter den Bedingungen angemessener Positionen erfolgt. Andernfalls wird der Retracement gering ausfallen, wenn die Position zu gering ist, aber auch die Einnahmen werden reduziert, und Gewinn und Verlust werden aus derselben Quelle stammen, und es wäre schade, die Gelegenheit zu verpassen, wenn die Position gering ist Wenn es zu schwer ist, wird es ein Fehler sein und früher oder später wird es fertig sein.

Anfängern wird jedoch empfohlen, mit einer Echtzeit-Implementierung dieser Strategie zu beginnen. Nur durch Übung können Sie Ihr Handelsniveau schnell verbessern. Achten Sie jedoch darauf, Ihre Position niedrig zu halten, und die Hebelwirkung sollte geringer sein. Am besten verwenden Sie keine Hebelwirkung, damit Sie über einen längeren Zeitraum bestehen können.

Wenn Sie professioneller vorgehen und Einzelpunktrisiken reduzieren möchten, wird die Kapitalkurve glatter und Sie müssen sich weniger Sorgen machen, wenn das Angebot unterbreitet wird (wie bereits erwähnt, ist dies bei vernünftigen Positionen tatsächlich sehr wichtig, weil es Es ist einfacher, an der Strategie festzuhalten und zu warten, bis das Risiko eintritt.) ist im Allgemeinen ein Modell mit mehreren Sorten, mehreren Strategien und mehreren Parametern, und dann gibt es Additionen und Subtraktionen von Positionen. Dies bedeutet nicht unbedingt das Hinzufügen oder Entfernen von Positionen bei einer Strategie, sondern kann auch durch mehrere Unterstrategien erreicht werden, um den Effekt des Hinzufügens oder Entfernens von Positionen zu erzielen. In diesem Fall wird die Strategie jedoch überfüllter sein. Wenn Sie auch den Schlupf der Eröffnungs- und Schlusspositionen minimieren möchten, wird die Codekomplexität sprunghaft ansteigen.

Lassen Sie uns über die Schwierigkeiten sprechen, die dieses Modell mit mehreren Sorten, mehreren Strategien und mehreren Parametern verursacht.

Schwierigkeit

1. API-Häufigkeitsbegrenzung

Die erste Schwierigkeit bei mehreren Strategien ist die API-Häufigkeitsbegrenzung. Es gibt viele Varianten und Strategien, um in Echtzeit Preise, Positionen, Bestellungen und andere Informationen zu erhalten. Sie müssen die Börse ständig besuchen. Wie bereits erwähnt, ist der erhaltene Preis möglicherweise nicht der aktuellste, wenn die Frequenz niedrig und langsam ist, und der Slippage kann viel größer sein.

Die Serverressourcen der Börse sind begrenzt, daher ist die Zugriffshäufigkeit der API begrenzt. Das Limit von Binance liegt bei 2.400 pro Minute, und dann gibt es ein 10-Sekunden-Limit, und es gibt andere sogenannte maschinelle Lernmodi, um bösartiges Verhalten zu erkennen. Wie auch immer, es wird definitiv nicht funktionieren, wenn es zu häufig auftritt Es funktioniert nicht, die Börse hat das letzte Wort. In diesem Fall gibt es keine Formel.

Obwohl es 2400 sein soll, habe ich es beiläufig mit Parallelität getestet, selbst wenn es jeweils die kürzesten 99 Zeilen sind (API-Gewicht ist 1), wenn ich dann etwa 75 Münzen gleichzeitig anfordere , ich werde für ein paar Minuten gesperrt. Daher kann man die Grenzen nicht einfach in Frage stellen.

Wenn Sie dagegen verstoßen, erhalten Sie 429, 418-Fehler und Ihre IP wird für einige Minuten bis einige Tage gesperrt. Wenn Sie zu diesem Zeitpunkt eine Position haben, wird es miserabel sein (es gibt keine Einschränkungen für die Auftragserteilung). , insbesondere die Liquidierung bestehender Positionen, aber Sie haben keine Preisinformationen, es sei denn, es gibt auch einen Websocket.

Die Lösung für dieses Problem besteht darin, Websocket zum Abrufen von Daten zu verwenden, sodass der Austausch diese zeitnah aktiv übertragen kann, ohne die API zu belegen. Kann etwas Schlupf reduzieren. Das Problem besteht darin, dass Sie ein weiteres WebSocket-basiertes Marktzentrum unterhalten müssen. Der Schwierigkeitsgrad von Live-Code hat zugenommen und ist komplizierter geworden. Es darf 24 Stunden lang nicht getrennt werden, und wenn es getrennt wird, muss es rechtzeitig automatisch wieder verbunden werden usw.

2. Strategiestatus

Wie bereits erwähnt, müssen Sie den Status jeder Strategie aufzeichnen, wenn die Strategien komplexer werden. Andernfalls wissen die Positionen der Börse nicht, welche Strategie geöffnet wurde, wie viel jede geöffnet hat usw. Und wenn Sie es später überprüfen möchten, müssen Sie weitere Daten aufzeichnen.

Zu diesem Zeitpunkt müssen Sie eine Datenbank einführen (natürlich können Sie auch Dateidatensätze verwenden, die gleiche Idee).

Die Einführung einer Datenbank bringt die Probleme der Datenbank mit sich. Dies ähnelt jedoch der Softwareentwicklung in anderen Branchen und ist nichts Neues. Gerade in der E-Commerce-Branche, wo es um Guthaben, Auftragsverwaltung und Ähnliches geht, können solche Bücher und Artikel auch von Unerfahrenen gelesen werden.

Es ist zu beachten, dass bei vielen Schritten atomare Operationen ähnlich wie bei Datenbanktransaktionen durchgeführt werden müssen, d.

Da es sich schließlich um eine echte Geldtransaktion handelt, ist es für Datenbankoperationen von Bestellinformationen am besten, die höchste der vier Isolationsstufen Serialisierbar zu verwenden, um die Möglichkeit aller schmutzigen Lesevorgänge, nicht wiederholbaren Lesevorgänge usw. auszuschließen Phantom liest. Das heißt, es wird keine Parallelität, kein Multithreading oder gar eine asynchrone Verwendung zum Lesen und Schreiben von Schlüsselinformationen der Datenbank verwendet. Alle Vorgänge werden in einem Thread abgeschlossen. Durchführung von Operationen.

Nehmen Sie die Herausforderung der gleichzeitigen Programmierung nicht auf die leichte Schulter. Wenn bei einem solchen System ein Problem auftritt, ist es wahrscheinlich unmöglich, es zu beheben. Dies ist der am schwierigsten zu findende Fehler in der Softwareentwicklung. Diejenigen, die diese Art von Arbeit ordentlich erledigen können, sind Programmierer mit einem Monatsgehalt von über 50.000.

Mir fallen nicht viele ein, die Multithreading oder asynchron verwenden (Multithreading und asynchron, es wird empfohlen, Multithreading zu verwenden, da asynchron in Python wie eine Infektionskrankheit ist. Sobald es verwendet wird, muss es verwendet werden Eine Anrufkette) Was wirklich nützlich ist, ist das Senden von DingTalk-Warnsignalen und dergleichen. Da sich der DingTalk-Dienst in China befindet und sich die Währungsumtauschserver im Ausland befinden, sollte Ihr Codeserver im Ausland, näher an der Börse, bereitgestellt werden. Wenn Sie also DingTalk senden, dauert es manchmal mehrere Sekunden, bis er zurückkommt, und manchmal ist er sogar blockiert dauert länger als zehn Sekunden.

zu guter Letzt

Tatsächlich spielt es keine Rolle, wenn Sie viele Dinge nicht tun können. Solange man das Bewusstsein hat, einen größeren Slippage in Kauf zu nehmen, ist es möglich, fast 1/5 oder sogar mehr Gewinne auszuspucken. Das Wichtigste ist die Strategie. Positive Renditen zu erwarten und ohne Ausfallzeiten arbeiten zu können, ist der Schlüssel.

Kurz gesagt besteht die erste Priorität eines festen Angebots darin, die etablierte Logik der Strategie fortzusetzen und stabil umzusetzen. Slippage ist Teil des Tradings. Versuchen Sie einfach, ihn zu reduzieren, solange er Ihnen nicht die Muskeln bricht.

Erstklassige Strategie, 2 und 3 Streams sind umgesetzt, es gibt kein großes Problem. Aber wenn die Strategie nicht dem Standard entspricht, hilft der Top-Real-Trading-Code nicht weiter und der Verlust wird immer noch ein Verlust sein. Daher reicht das bloße Schreiben von gutem Code nicht aus, um den quantitativen Handel erfolgreich zu gestalten. Die Strategie ist gut und der Live-Code ist robust. Natürlich ist er der Beste. Wenn die Zeit jedoch begrenzt ist, konzentrieren Sie sich auf die Strategie.

Fortgesetzt werden