Quantitative Handelsstrategie mit Preisdynamikanalyse in Python

Schriftsteller:Lydia., Erstellt: 2023-01-11 11:35:36, Aktualisiert: 2023-09-20 11:20:06

img

Quantitative Handelsstrategie mit Preisdynamikanalyse in Python

Einführung in die Preisdynamik-Handelsstrategie

Die Momentum-Handelsstrategie analysiert den Vergleich von Long- und Short-Positionskräften durch die Beziehung zwischen dem Eröffnungspreis, dem höchsten Preis und dem niedrigsten Preis über einen bestimmten Zeitraum, was uns indirekt ermöglicht, die aktuelle Verteilung von Long- und Short-Kräften auf dem Markt zu verstehen.

Die Preisdynamikanalyse wurde in traditionellen manuellen spekulativen Aufträgen weit verbreitet, insbesondere bei der Bestimmung des einseitigen Trends des Tages. Das alte Klischee, was ist, um die Situation zu nutzen. Die beste Quantifizierung der Situation ist die Quantifizierung des Stärkevergleiches zwischen den Long- und Short-Positionsseiten. Die Preisdynamikanalyse ist einer der besten Indikatoren.

Dieses Papier wird diese Strategie nutzen, um ein automatisiertes Spot-Trading-Programm für digitale Währungen auf demWeiß nicht..

Berechnungsformel für die Preisdynamik

AR = [Summe aller (hoch-offene) für N Tage / Summe aller (offene) für N Tage] * 100

Dazu gehören:

  • N: Das statistische Fenster des täglichen Zeitzyklus beträgt standardmäßig in der Regel 30 Tage, da der effektive Handelstag eines Monats etwa 30 Tage beträgt (Transaktionen mit digitaler Währung rund um die Uhr, was konservativ sein kann)

  • Hoch: der höchste Preis an einem Tag

  • Offener: Eröffnungspreis eines einzelnen Tages

  • Niedrig: der niedrigste Preis an einem Tag

Wie man die Preisdynamik nutzt

Der Kursmomentus spiegelt die Position des Eröffnungspreises zwischen dem höchsten und dem niedrigsten Preis für einen bestimmten Zeitraum wider.

  • Wir nehmen an, dass dieser Wert ungefähr 100 ist. Wenn er über 100 ist, beginnt die Long-Positions-Kraft zu steigen. Wenn er unter 100 ist, beginnt die Short-Positions-Kraft zu sammeln.
  • Wenn der AR-Wert steigt, bedeutet dies, dass der Markt aktiv und beliebt ist, und die Long-Positionen steigen, aber wenn der Preis zu hoch ist, bedeutet dies, dass der Preis in den Überkaufbereich eingetreten ist, und Sie sollten die Zeit wählen, um die Position zu schließen. Es gibt keinen spezifischen Standard für die Höhe des AR-Wertes. Im Allgemeinen, wenn der AR-Wert auf etwa 120 steigt, fällt der Preis wahrscheinlich zurück.
  • Wenn der AR-Wert sinkt, zeigt dies an, dass der Markt sinkt und die Short-Position in vollem Gange ist, was die Bemühungen von Long-Positionen erfordert. Wenn der AR-Wert zu niedrig ist, zeigt dies an, dass der Preis möglicherweise in den Überverkaufbereich gefallen ist, und Sie können darauf warten, bis die Gelegenheit besteht, lang zu gehen. Im Allgemeinen, wenn der AR-Wert unter 50 fällt, wird der Preis jederzeit aufhören zu fallen und steigen.

Anmerkung: Die obigen Zahlen sind alle Standardwerte und sind keine Wahrheitsformeln. Im Prozess des realen Handels sollten wir diesen Bereich anpassen, um sich an den aktuellen Marktzustand anzupassen, wenn sich der Markt ändert.

Umsetzung einer quantitativen Handelsstrategie für die Preisdynamik in Python

Wie üblich öffnen wir.FMZ.COM, melden Sie sich bei unserem Konto an, klicken Sie auf Dashboard, und setzen Sie den Docker und den Roboter ein.

Bitte beachten Sie meinen vorherigen Artikel über die Bereitstellung eines Dockers und eines Roboters:https://www.fmz.com/bbs-topic/9864.

Leser, die ihren eigenen Cloud-Computing-Server kaufen möchten, um Dockers zu implementieren, können sich auf diesen Artikel beziehen:https://www.fmz.com/digest-topic/5711.

Als nächstes klicken wir auf die Strategie-Bibliothek in der linken Spalte und klicken auf Strategie hinzufügen.

Denken Sie daran, die Programmiersprache als Python in der oberen rechten Ecke der Strategiebearbeitungsseite auszuwählen, wie in der Abbildung gezeigt:

img

Als nächstes schreiben wir den Python-Code in die Codebearbeitungsseite. Der folgende Code enthält sehr detaillierte Zeilenkommentare, die Leser können sich Zeit nehmen zu verstehen. Noch wichtiger ist, obwohl diese Strategie auf Basis des Spottrades geschrieben wurde, berücksichtigt die Erweiterbarkeit des folgenden Codes auch den Futures-Trading. Interessierte Leser können versuchen, den folgenden Code in den Futures-Trading umzuschreiben. Die Logik der Strategie selbst ist universell. Auf der FMZ Quant-Plattform haben wir die API-Schnittstellen der wichtigsten Spot-Futures und Börsen für Sie vorbereitet, so dass das Umschreiben sehr einfach und bequem sein wird.

Wir werden den Bitcoin-Spot von Huobi als Handelsziel nutzen und mit der Umsetzung dieser Strategie beginnen:

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Strategie-Backtesting

Nachdem wir die Strategie geschrieben haben, müssen wir sie zuerst testen, um zu sehen, wie sie sich in den historischen Daten verhält. Bitte beachten Sie jedoch, dass das Ergebnis des Backtests nicht der Vorhersage der Zukunft entspricht. Der Backtest kann nur als Referenz verwendet werden, um die Wirksamkeit unserer Strategie zu prüfen. Sobald sich der Markt ändert und die Strategie große Verluste verursacht, sollten wir das Problem rechtzeitig finden und dann die Strategie ändern, um sich an die neue Marktumgebung anzupassen, z. B. an die oben genannte Schwelle. Wenn die Strategie einen Verlust von mehr als 10% hat, sollten wir den Betrieb der Strategie sofort stoppen und dann das Problem finden. Wir können mit der Anpassung der Schwelle beginnen.

Klicken Sie auf Backtest auf der Strategiebearbeitungsseite. Auf der Backtestseite kann die Anpassung von Parametern bequem und schnell nach verschiedenen Bedürfnissen durchgeführt werden. Besonders für die Strategie mit komplexer Logik und vielen Parametern ist es nicht notwendig, zur Quellcode-Seite zurückzukehren und sie einzeln zu modifizieren.

Die Backtestzeit ist der letzte Monat. Klicken Sie, um die Huobi-Spotbörse und das BTC-Handelsziel hinzuzufügen.

img

Ergebnisse der Backtests:

img

Wir können sehen, dass die Strategie im Backtest dieses Monats gut ablief.

Vor- und Nachteile der Preisdynamikstrategie

  • Vorteile Im Vergleich zu einigen anderen traditionellen technischen Indikatoren besteht der Vorteil des Kursmomentums darin, dass er keinen einzigen Eröffnungs- oder Schlusskurs verwendet, sondern die höchsten und niedrigsten Preise einführt. Sie werden dynamisch verglichen, wodurch die Marktinformationen durch Intraday-Kursschwankungen umfassender, reaktionsschneller und makrospezifischer werden.

  • Nachteile Der Preismomentum-Wert kann unabhängig voneinander verwendet werden, um zu beurteilen, ob der Preis zu hoch oder zu niedrig ist, ob der Preis lang/kurz ist, ob er früh in einer Welle großer Trends aussteigen oder früh in einer Welle großer Abwärtstrends nach unten fischen wird.

Die Schwellenwerte der Strategie müssen auch nach den Merkmalen des Handelsobjekts festgelegt werden. Die Preisschwankungen des digitalen Währungsmarktes sind relativ groß und das Handelsvolumen ist enorm, insbesondere bei den Mainstream-Währungen wie Bitcoin, und es gibt keine Grenze für den Anstieg und Fall, so dass der Schwellenwert höher ist als der der traditionellen Börse. Die Überverkaufslinie von 80 ist in der Regel schwer zu berühren und es gibt nur wenige Kaufsignale; Während die Überkauflinie von 170 oft unter der Schwelle liegt, wird das Verkaufssignal häufig ausgelöst. Dies wird dazu führen, dass die Strategie die meiste Zeit in der Short-Position ist und die Fondsnutzung sehr niedrig wird. Zum Beispiel ist der Preis von Bitcoin seit Januar dieses Jahres in einer Bullenwelle von 3500 auf fast 13000 gestiegen. Der Schwellenwert hat die 170-Linie sehr früh überschritten und ist seitdem sehr hoch. Wenn wir nach der traditionellen Überkauflinie von 170 verkaufen und nur einen kleinen Teil des Gewinns erzielen, wird es nach der Öff

Daher gab es nie eine heilige Gral-Handelsstrategie auf dem Markt. Sie können nicht immer ohne Backtesting und Debugging Gewinne erzielen. Wie subjektive Trader enden wir quantitative Trader auf unterschiedliche Weise mit dem gleichen Ziel. Wir müssen uns den lokalen Bedingungen anpassen, entsprechend den Veränderungen des Marktes und auf die Veränderungen des Marktes reagieren. Wenn die Strategie ineffektiv ist, müssen wir sie rechtzeitig anpassen.

Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen:https://www.fmz.com/bbs, ob es sich um die Strategie oder die Technologie der Plattform handelt, hat die FMZ Quant-Plattform Fachleute, die bereit sind, Ihre Fragen zu beantworten.


Verwandt

Mehr