Lineare Strategie für den Auftragsfluss, die auf der Grundlage der Datenwiedergabefunktion entwickelt wurde

Schriftsteller:Lydia., Erstellt: 2022-12-23 20:06:04, Aktualisiert: 2023-09-20 09:41:28

img

Lineare Strategie für den Auftragsfluss, die auf der Grundlage der Datenwiedergabefunktion entwickelt wurde

Vorwort

Es wird oft gesagt, dass der Handel eine Kunst ist, und Kunst kommt von Inspiration.

Inspiration und Marktgefühl des Handels

Was wir normalerweise Inspiration nennen, bezieht sich auf den kreativen Zustand, den Menschen im Denkprozess erzeugen. Für Trader hat unsere linke Hirnhälfte die Formulierung einer Reihe von Regeln wie Strategieschreiben, Kapitalzuweisung und Parameterstellung abgeschlossen. Die Inspiration und das Marktgefühl des Handels kommt von der rechten Hirnhälfte.

Viele Menschen haben von dem Wort Marktgefühl gehört, das eine Art vages Gefühl ist, genau wie ein Déjà Vu dessen, was im Moment passiert. Obwohl dieser sechste Sinn wie Intuition im Handel nicht logisch begründet und analysiert wird, wird die Vorhersehbarkeit des zukünftigen Markttrends Händler dazu veranlassen, Kauf- oder Verkaufsentscheidungen zu treffen.

Wie man sich inspirieren lässt

In den Augen eines Laien ist das Marktgefühl geheimnisvoll. Es ist ein geheimnisvolles Talent. Mit ihm kannst du auf dem Markt stehen. In der Tat ist es eine Zusammenfassung subjektiver Handelserfahrung durch das Gehirn. Es ist ein vages Vorurteilsgefühl, das durch Jahre des Beobachtens des Marktes realisiert wurde.

Obwohl streng genommen, Inspiration ist nicht genau das gleiche wie das Gefühl des Marktes, wir glauben, dass nach Tausenden von Zeiten der Marktverfeinerung, werden wir ein tieferes Verständnis des Marktes haben, und wir werden in der Lage sein, Strategien mit Leichtigkeit zu entwickeln.

Inländische Rohstoff-Futures und Aktien haben jedoch nur wenige Stunden Handelszeit pro Tag, so dass es überwältigend wäre, die Erfahrung beim Beobachten des Marktes zu verbessern, eigene Gewinnmuster und Handelsregeln zu bilden und die konditionierten Reflexen nur aus dem Live-Handel zu trainieren.

Datenwiedergabe

Die Datenwiedergabefunktion kann unabhängig von den Handelszeiten der Börse trainiert werden und unterstützt eine Vielzahl von Rohstoff-Futures und digitalen Währungsvarianten. Der Markt kann manuell oder automatisch wiedergegeben werden, und die Start- und Endzeit und Wiedergabegeschwindigkeit des historischen Marktes kann frei eingestellt werden. Im Vergleich zu anderen Softwares wird der K-Line-Datenwiedergabe-Modus weit verbreitet, während FMZ Quant den Datenwiedergabe-Modus auf Tick-Ebene übernimmt, der der Backtestumgebung des realen Handelsbots wirklich nahe kommt und die Preisvolumendaten des Marktes reproduziert, so dass sich Händler in die reale Welt eintauchen können.

Öffnen Sie die offizielle Website des FMZ Quant (fmz.com) registrieren und sich anmelden, und klicken Sie dann auf die Datenbank im Dashboard, um die Datenwiedergabefunktionsseite anzuzeigen. Es gibt vier Optionsfelder und einen Auswahlknopf. Klicken Sie zunächst auf die Auswahlknopf, um nur die Varianten anzuzeigen, die echte Botwiedergabe unterstützen, wählen Sie dann die Varianten, die oben links wiedergegeben werden sollen, wählen Sie dann die Start- und Endzeit der Daten in den nächsten beiden Optionsfeldern, wählen Sie dann den Zeitraum der Daten als echte Botwiedergabe, und schließlich klicken Sie auf die Go-Taste ganz rechts, um die Datenwiedergabefunktion zu starten.

img

Es gibt drei Abschnitte unter dem Datenetikett. Auf der linken Seite befindet sich die Handelsgeschichte, in der alle geschlossenen Aufträge in chronologischer Reihenfolge angezeigt werden. In der Mitte befindet sich die 20-Positionstiefe jedes Kauf- und Verkaufsorderdatens. Auf der rechten Seite befindet sich der Kontrollbereich für die Datenwiedergabe, in dem Sie manuelle und automatische Datenwiedergabeverfahren auswählen können, genau wie bei einem Media-Player.

img

Der Positionsindex kann den Cursor von links nach rechts hin und her ziehen, so dass Sie schnell die Startzeit der Datenwiedergabe auswählen können.

img

Die Geschwindigkeit der Datenwiedergabe kann auch unten gesteuert werden, indem der Cursor in Millisekunden von rechts nach links bewegt wird, um die Daten während der Wiedergabe zu beschleunigen und zu verlangsamen.

img

Strategie-Logik entwickeln

Obwohl es viele Faktoren gibt, die den Preis steigenden und sinkenden beeinflussen, einschließlich des globalen wirtschaftlichen Umfelds, nationale Makro-Politiken, einschlägige Industriepolitik, Angebot und Nachfrage Beziehungen, internationale Ereignisse, Zinsen und Wechselkurse, Inflation und Deflation, Marktpsychologie, unbekannte Faktoren usw., ist der endgültige Preis auf dem Markt das Ergebnis des Wettbewerbs zwischen verschiedenen Parteien und der Short-Positionsseite. Wenn mehr Leute kaufen als verkaufen, wird der Preis steigen; Im Gegenteil, wenn mehr Leute verkaufen als kaufen, wird der Preis sinken. Dann müssen wir nur den Preis analysieren, um eine Handelsstrategie zu machen.

Durch die FMZ Quant-Wiedergabe der letzten Monate BTC_USDT-Handelspaare der Binance-Börse fanden wir heraus, dass, wenn der Markt stark anstieg und abnahm, das Orderbuch von Tick-Daten in Bezug auf das Auftragsvolumen zwischen den Long- und Short-Positionen eindeutig asymmetrisch ist. Wenn der Markt zunimmt, ist die Anzahl der laufenden Long-Orders offensichtlich größer als die Anzahl der laufenden Short-Orders; Wenn der Markt zunimmt, ist die Anzahl der laufenden Short-Orders offensichtlich größer als die Anzahl der laufenden Long-Orders. Können wir also den Preis in kurzer Zeit basierend auf dem ausstehenden Auftragsvolumen im Auftragsbuch vorhersagen?

Die Antwort lautet ja.

img

Wenn der Markt zunimmt, ist die Anzahl der Long-Orders offensichtlich größer als die Anzahl der Short-Orders.

img

Wenn der Markt abnimmt, ist die Anzahl der Short-Orders offensichtlich größer als die Anzahl der Long-Orders.

Wir können tiefgreifende Tick-Daten sammeln, um die langen und kurzen ausstehenden Aufträge zu berechnen und zu vergleichen, wenn die kombinierten langen und kurzen ausstehenden Aufträge sehr unterschiedlich sind, kann es eine potenzielle Handelsmöglichkeit sein. Zum Beispiel, wenn die Anzahl der Long-Positions-Orders N mal so hoch ist wie die von Short-Positions-Orders, können wir denken, dass die meisten Leute auf dem Markt bullisch sind und die Wahrscheinlichkeit eines Kursanstiegs in kurzer Zeit in der Zukunft zunehmen wird; Wenn die Anzahl der Short-Seller N mal so hoch ist wie die der Long-Seller, können wir denken, dass die meisten Leute auf dem Markt bärisch sind und die Wahrscheinlichkeit eines Kursrückgangs in naher Zukunft zunehmen wird.

Schreiben Sie eine Handelsstrategie

Nach der obigen Strategie-Logik beginnt die Implementierung im Code.fmz.com> Login > Dashboard > Strategie > Strategie hinzufügen > Klicken Sie auf das Dropdown-Menü in der oberen rechten Ecke, um die Python-Sprache auszuwählen und mit dem Schreiben von Strategien zu beginnen.

Schritt 1: Erstellen des Strategierahmens

# Strategy main function
def onTick():
    pass


# Program entry
def main():
    while True:  # Enter the infinite loop mode
        onTick()  # Execute the strategy main function
        Sleep(1000)  # Sleep for 1 second

Wir sollten unsere Strategie von groß zu klein schreiben, genau wie beim Bau eines Hauses, indem wir zuerst den Rahmen und dann die Wand bauen. In diesem Rahmen verwenden wir zwei Funktionen: die Hauptfunktion und die OnTick-Funktion. Die Hauptfunktion ist der Eingang des Programms, das heißt, das Programm wird von hier aus ausgeführt, dann den Endlosschleifenmodus betreten und die OnTick-Funktion wiederholt ausführen. Dann müssen wir nur den Strategieinhalt in die OnTick-Funktion schreiben.

Schritt 2: Globalvariablen schreiben

vol_ratio_arr = []  # Long/Short positions pending order ratio array
mp = 0  # Virtual positions

Der Grund, warum vol_ratio_arr als globale Variable definiert wird, ist, dass meine Strategie das Verhältnis von langen und kurzen Positionsaufenthaltsbestellungen eines Teils von Tick-Daten sammeln muss. Wenn wir die Variable vol_ratio_arr in die OnTick-Funktion setzen, ist es offensichtlich unvernünftig, mit der Schleife zu laufen. Was wir brauchen, ist, den Wert der Variable im Loop-Modus zu ändern, wenn eine bestimmte Bedingung erfüllt ist. Der vernünftigste Weg ist, die Variable außerhalb der Schleife zu setzen.

Das Positionsmanagement ist sehr notwendig, da es mit der Handelslogik zusammenhängt. Im Allgemeinen berechnen wir die Währungspaare, die wir durch den Erwerb von Konten in Spot-Transaktionen halten. Um den Code zu vereinfachen, wird eine globale virtuelle Positionsvariable direkt definiert, um die Handelslogik zu steuern.

Schritt 3: Berechnen Sie das aktuelle Vielfache des leeren Verhältnisses

depth = exchange.GetDepth()  # Get depth data
asks = depth['Asks']  # Get asks array
bids = depth['Bids']  # Get bids array
asks_vol = 0  # All pending orders at ask price
bids_vol = 0  # All pending orders at bid price
for index, ask in enumerate(asks):  # Iterate through the ask price array
    # Linear calculation of all pending orders at the ask price
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # Iterate through the bid price array
    # Linear calculation of all pending orders at the bid price
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # Calculate long/short position ratio

Wie wir alle wissen, ist die digitale Währung in der Regel 20 Ebenen von Deep Data, so dass wir die Anzahl der Long- und Short-Positions-Orders addieren können, um das Verhältnis zwischen Long- und Short-Positionen zu berechnen. Wenn dieser Wert größer als 1 ist, bedeutet dies, dass die bullischen Leute größer sind als die bärischen Leute, was bedeutet, dass der Preis in kurzer Zeit in der Zukunft steigen wird; wenn dieser Wert kleiner als 1 ist, bedeutet dies, dass die bärischen Leute größer sind als die bärischen Leute, was bedeutet, dass der Preis in kurzer Zeit in der Zukunft fallen wird.

Es gibt jedoch einen Punkt, den man unterscheiden muss. Je näher die ausstehende Bestellung dem Eröffnungsmarkt ist, desto stärker wird der Wunsch nach Aufschwung oder Berisch sein. Zum Beispiel ist die Bestellung der ersten Ebene definitiv eher bereit, aufschwung zu zeigen als die der 20. Ebene. Daher müssen wir, wenn wir die ausstehenden Aufträge ansammeln, den Aufträgen der 20 Ebenen unterschiedliche Gewichte linear geben, was vernünftiger ist.

Schritt 4: Lineare Berechnung des Long/Short-Positionsverhältnisses in einem bestimmten Zeitraum

global vol_ratio_arr, mp  # Introduce global variables
vol_ratio_arr.insert(0, bidask_ratio)  # Put the long/short position ratio into the global variable array
if len(vol_ratio_arr) > 20:  # If the array exceeds the specified length
    vol_ratio_arr.pop()  # Delete the oldest elements
all_ratio = 0  # Temporary variable, ratio of all long and short position pending orders
all_num = 0  # Temporary variables, all linear multipliers
for index, vol_ratio in enumerate(vol_ratio_arr):  # Variable global variable arrays
    num = 20 - index  # Linear multiplier
    all_num = all_num + num  # Linear multiplier accumulation
    all_ratio = all_ratio + vol_ratio * num  # Accumulation of all long and short position pending orders ratio
ratio = all_ratio / all_num  # Linear long and short position pending order ratio

Die Long-Short-Positionsquote kann durch Dividieren der langen kumulativen ausstehenden Aufträge durch die kurzen kumulativen ausstehenden Aufträge ermittelt werden. Dies sind jedoch nur Tick-Daten. Wenn nur eine Tick-Daten verwendet werden, ist es möglicherweise keine kluge Wahl, Kauf- und Verkaufstransaktionen zu entscheiden, da in dem sich schnell verändernden Markt eine Tick-Daten nicht überzeugend sind. Wir müssen also ein festes Stück Tick-Daten sammeln und schließlich einen fairen Wert durch lineare Berechnung berechnen.

Schritt 5: Bestellen

last_ask_price = asks[0]['Price']  # Latest buy one price for asks
last_bid_price = bids[0]['Price']  # Latest sell one price for bids
if mp == 0 and ratio > buy_threshold:  # If no currency is held currently, and the ratio is greater than the specified value
    exchange.Buy(last_ask_price, 0.01)  # Buy
    mp = 1  # Set the value of virtual position
if mp == 1 and ratio < sell_threshold:  # If there is currency held currently, and the ratio is less than the specified value
    exchange.Sell(last_bid_price, 0.01)  # Sell
    mp = 0  # Reset the value of virtual position

Da wir bei der Bestellung einen Preis angeben müssen, können wir beim Kauf direkt den neuesten Verkaufspreis verwenden; beim Verkauf können Sie direkt den neuesten Kaufpreis verwenden.

Schlussfolgerung

Die oben beschriebene ist die Codeanalyse der auf Basis der Datenwiedergabefunktion entwickelten Linear Pending Order Flow Strategie. Wenn Sie ein Anfänger im quantitativen Handel sind, kann die Datenwiedergabefunktion den Handel zu Nullkosten lernen und die Zeit zum Verständnis von Transaktionen verkürzen. Es dauert normalerweise mehrere Jahre, bis ein echter Bot oder eine simulierte Transaktion erste Ergebnisse erzielt. Es dauert mehrere Wochen, bis die Datenwiedergabefunktion den gleichen Effekt erzielt. Unter der Voraussetzung, dass Sie keine Zeit verlieren, können Sie den Handel mit minimalem Verlust lernen. Für fortgeschrittene Trader kann dynamisches Wiedergeben Ihnen helfen, Ihre vergangenen Probleme zu analysieren, Ihre Handelsstrategien zu überprüfen und zu verbessern, das Vertrauen der Trader in Strategien zu verbessern und neue strategische Inspiration zu generieren.


Verwandt

Mehr