0
konzentrieren Sie sich auf
78
Anhänger

Implementierung quantitativer Handelsstrategien für die Preismomentumanalyse mit Python

Erstellt in: 2019-08-09 15:49:06, aktualisiert am: 2024-12-19 21:03:15
comments   1
hits   3521

Implementierung quantitativer Handelsstrategien für die Preismomentumanalyse mit Python

Einführung in die Price Momentum Trading-Strategie

Die Momentum-Trading-Strategie analysiert den Vergleich von Long- und Short-Kräften durch die Beziehung zwischen dem Eröffnungspreis, dem Höchstpreis und dem niedrigsten Preis innerhalb eines bestimmten Zeitraums und versteht indirekt die Verteilung von Long- und Short-Kräften auf dem aktuellen Markt. Analysieren Sie Preisschwankungen, um zukünftige Preistrends zu verfolgen.

Die Analyse des Preismomentums wird im traditionellen manuellen Handel häufig verwendet, insbesondere zur Ermittlung einseitiger Intraday-Trends. Es ist ein alltägliches Thema: Was passiert mit dem Trend? Der beste Weg, den Trend zu quantifizieren, besteht darin, die Stärke der Long- und Short-Seite zu vergleichen. Im Hinblick auf einen quantitativen Vergleich ist die Preismomentumanalyse einer der besten Indikatoren.

Dieser Artikel verwendet diese Strategie, um ein automatisiertes Spot-Trading-Programm für digitale Währungen auf Huobi.com zu entwickeln.

Die Formel zur Berechnung des Preismomentums

AR = [Die Summe aller (Hoch-Eröffnung) in N Tagen / die Summe aller (Eröffnung-Tief) in N Tagen] * 100

Darunter:

  • N: Das statistische Fenster des täglichen Zeitraums, das standardmäßig im Allgemeinen 30 Tage beträgt, da ein Monat etwa 30 gültige Handelstage hat (digitale Währungen werden rund um die Uhr gehandelt, daher ist diese Zahl möglicherweise etwas konservativ).

  • Hoch: Der höchste Preis des Tages

  • Eröffnung: Der Eröffnungskurs des Tages

  • Niedrig: Der niedrigste Preis des Tages

So nutzen Sie das Preismomentum

Die Preisdynamik spiegelt die Position des Eröffnungspreises zwischen dem höchsten und dem niedrigsten Preis über einen bestimmten Zeitraum wider. Diese Position ist für uns die Grundlage, um das Tauziehen zwischen den beiden Seiten zu beurteilen.

  • Wir gehen davon aus, dass dieser Wert bei etwa 100 liegt. Übersteigt er 100, beginnt die bullische Kraft zuzunehmen, und liegt er unter 100, beginnt die bärische Kraft zuzunehmen.
  • Wenn der AR-Wert steigt, bedeutet dies, dass der Markt aktiv ist, die Popularität hoch ist und die Bullen schnell vorankommen. Wenn er jedoch zu hoch ist, bedeutet dies, dass der Preis in den überkauften Bereich eingetreten ist, und Sie sollten den richtigen Zeitpunkt wählen, um Schließen Sie die Position. Es gibt keinen bestimmten Standard für die Höhe des AR-Werts. Generell gilt: Wenn der AR-Wert auf etwa 120 steigt, fällt der Preis wahrscheinlich wieder.
  • Wenn der AR-Wert sinkt, bedeutet dies, dass sich der Markt in einer Rezession befindet, die Bären in Hochstimmung sind und die Bullen härter arbeiten müssen. Wenn er zu niedrig ist, deutet dies darauf hin, dass der Preis möglicherweise in den überverkauften Bereich gefallen ist, und Sie Sie können erwägen, auf eine Gelegenheit für eine Long-Position zu warten. Wenn der AR-Wert unter 50 fällt, hört der Preis im Allgemeinen auf zu fallen und steigt stattdessen.

Hinweis: Bei den oben genannten Zahlen handelt es sich allesamt um Standardwerte und entsprechen keineswegs der Wahrheit. Im eigentlichen Handelsprozess müssen wir diesen Bereich anpassen, um ihn an die aktuellen Marktbedingungen anzupassen, wenn sich der Markt ändert.

Implementierung quantitativer Handelsstrategien für Preisdynamik mit Python

Wie gewohnt öffnen wir FMZ.COM, melden uns beim Konto an, klicken auf das Kontrollzentrum und stellen Host und Roboter bereit.

Weitere Informationen zum Bereitstellen von Hosts und Robotern finden Sie in meinem vorherigen Artikel: https://www.fmz.com/bbs-topic/4140

Leser, die ihren eigenen Cloud-Computing-Server-Bereitstellungshost erwerben möchten, können diesen Artikel lesen: https://www.fmz.com/bbs-topic/2848

Als nächstes klicken wir in der linken Spalte auf die Strategiebibliothek und dann auf Neue Strategie.

Denken Sie daran, in der oberen rechten Ecke der Seite zum Schreiben der Strategie Python als Programmiersprache auszuwählen, wie in der Abbildung gezeigt:

Implementierung quantitativer Handelsstrategien für die Preismomentumanalyse mit Python

Als nächstes schreiben wir den Python-Code in die Codebearbeitungsseite. Der folgende Code enthält sehr detaillierte zeilenweise Kommentare, und die Leser können ihn langsam verstehen und schätzen. Noch wichtiger ist, dass diese Strategie zwar auf Spot-Trading basiert, jedoch Die Skalierbarkeit des folgenden Codes berücksichtigt auch den Futures-Handel. Interessierte Leser können versuchen, den folgenden Code für den Futures-Handel umzuschreiben. Die Logik der Strategie selbst ist universell. In der Inventor Quantitative Platform haben wir die API-Schnittstellen der wichtigsten Spot- und Futures-Börsen für Sie vorbereitet, sodass die Umschreibarbeit sehr einfach und bequem ist.

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

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Strategie-Backtesting

Nachdem wir die Strategie geschrieben haben, müssen wir sie zunächst einem Backtest unterziehen, um zu sehen, wie sie sich in historischen Daten verhält. Beachten Sie jedoch, dass die Ergebnisse des Backtests nicht mit Vorhersagen für die Zukunft gleichzusetzen sind. Backtests können nur als Sehen Sie sich die Informationen an, um die Wirksamkeit unserer Strategie zu beurteilen. Sobald sich der Markt ändert und die Strategie große Verluste erleidet, sollten wir das Problem umgehend identifizieren und dann die Strategie ändern, um sie an das neue Marktumfeld anzupassen. Wenn die Strategie beispielsweise einen Verlust von mehr als 10 % erleidet, sollten wir sofort stoppen Sie die Strategie und suchen Sie nach dem Problem, beginnend mit der Anpassung des Schwellenwerts.

Klicken Sie auf der Strategiebearbeitungsseite auf den simulierten Backtest. Auf der Backtestseite können die Parameter je nach Bedarf angepasst werden, um ein bequemes und schnelles Debuggen zu ermöglichen. Insbesondere bei Strategien mit komplexer Logik und vielen Parametern ist es nicht erforderlich, zur Quellcode und ändern Sie sie nacheinander.

Als Backtesting-Zeitraum wählen wir den aktuellsten Monat und klicken, um die Huobi-Spotbörse und das BTC-Handelsziel hinzuzufügen.

Implementierung quantitativer Handelsstrategien für die Preismomentumanalyse mit Python

Backtest-Ergebnisse anzeigen

Implementierung quantitativer Handelsstrategien für die Preismomentumanalyse mit Python

Es ist ersichtlich, dass diese Strategie im Backtest dieses Monats gute Ergebnisse erzielt hat.

Vor- und Nachteile von Price Momentum Strategien

  • Vorteile

Der Vorteil des Preismomentums gegenüber einigen anderen traditionellen technischen Indikatoren besteht darin, dass es nicht einen einzelnen Eröffnungs- oder Schlusskurs verwendet, sondern die höchsten und niedrigsten Kurse einbezieht. Sie werden dynamisch verglichen und durch die Intraday-Preisschwankungen sind die Marktinformationen umfassender, die Reaktion schneller und makroökonomischer.

  • Nachteile

Die unabhängige Verwendung des Preismomentumwerts zur Beurteilung, ob der Preis zu hoch oder zu niedrig ist, um zu beurteilen, ob man sich long oder short positionieren sollte, führt wahrscheinlich dazu, dass man bei einem großen Trend zu früh aussteigt oder bei einem großen Marktcrash zu früh am Boden kauft. . Generell ist diese Strategie noch immer eine Strategie der Schockwirksamkeit.

Auch die Schwellenwertfestlegung der Strategie muss auf Grundlage der Eigenschaften des Transaktionsziels bestimmt werden. Die Preisschwankungen auf dem Markt für digitale Währungen sind relativ groß und das Handelsvolumen enorm, insbesondere bei Mainstream-Währungen wie Bitcoin, die keine Preisbegrenzung haben, sodass die Schwelle höher ist als die des traditionellen Aktienmarktes und die 80 überverkauften Linie ist normalerweise schwer zu erreichen. Daher gibt es weniger Kaufsignale; während die überkaufte Linie von 170 oft unter der Schwelle liegt, werden häufig Verkaufssignale ausgelöst. Dies führt dazu, dass sich die Strategie während ihrer Ausführung die meiste Zeit in einer leeren Position befindet und die Kapitalauslastungsrate sehr niedrig wird. Seit Januar dieses Jahres befindet sich Bitcoin im Bullenmarkt, wobei der Preis von einem Höchststand von 3.500 \( auf fast 13.000 \) stieg. Der Schwellenwert überschritt sehr früh die Marke von 170 und blieb seitdem hoch. Wenn wir gemäß der traditionellen Überkauflinie von 170 verkauft hätten, wären wir bei etwa 5.000 aus dem Markt ausgestiegen und es hätte danach kein Signal zum Eröffnen einer Position gegeben, sodass wir in einem großen Bullenmarkt nur einen kleinen Gewinn erzielt hätten.

Aus diesem Grund hat es auf diesem Markt nie eine ultimative Handelsstrategie gegeben, eine Strategie, mit der man ohne Backtests oder Debugging dauerhaft Geld verdienen kann. Wir quantitativen Händler erreichen wie subjektive Händler letztlich dasselbe Ziel. Wir müssen uns an Marktveränderungen anpassen, uns an lokale Bedingungen anpassen und auf sich ständig ändernde Umstände reagieren. Wenn eine Strategie unwirksam ist, müssen wir rechtzeitig Anpassungen vornehmen.

Freunde, die Fragen haben, können unter https://www.fmz.com/bbs eine Nachricht hinterlassen. Egal, ob es um Strategien oder Plattformtechnologie geht, die Inventor Quantitative Platform verfügt über professionelle Mitarbeiter, die Ihnen jederzeit antworten können.