avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Python-Version der Strategie des Aufholens und Verkaufens

Erstellt in: 2020-01-11 14:49:08, aktualisiert am: 2024-12-12 20:57:43
comments   6
hits   7100

Python-Version der Strategie des Aufholens und Verkaufens

Python-Version der Strategie des Aufholens und Verkaufens

Trendstrategien verwenden im Allgemeinen verschiedene Indikatoren, um die Marktrichtung zu bestimmen, und verwenden die numerischen Vergleichsergebnisse verschiedener Indikatoren als Handelssignale. Dies wird zwangsläufig zur Verwendung von Parametern und zur Berechnung von Indikatoren führen. Da Parameter verwendet werden, erfolgt eine Anpassung. Die Strategie funktioniert unter bestimmten Marktbedingungen sehr gut. Wenn Sie jedoch Pech haben und der Markttrend den aktuellen Parametern sehr ungünstig gegenübersteht, kann die Strategie sehr schlecht abschneiden. Daher bin ich der Meinung, dass die Strategie so einfach wie möglich ausgestaltet sein sollte, und dass eine solche Strategie robuster ist. Heute stellen wir Ihnen eine Trendstrategie vor, die keine Indikatoren verwendet. Der Strategiecode ist sehr einfach, nur 40 Zeilen.

Strategiecode:

import time

basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01

def CancelAll():
    while True : 
        orders = _C(exchange.GetOrders)
        for i in range(len(orders)) :
            exchange.CancelOrder(orders[i]["Id"], orders[i])
        if len(orders) == 0 :
            break
        Sleep(1000)

def main():
    global basePrice, acc, lastCancelAll
    exchange.SetPrecision(2, 3)
    while True:
        ticker = _C(exchange.GetTicker)
        if basePrice == -1 :
            basePrice = ticker.Last
        if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
            acc = _C(exchange.GetAccount)
            if acc.Balance * ratio / ticker.Last > minStocks :
                exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                basePrice = ticker.Last
        if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
            acc = _C(exchange.GetAccount)
            if acc.Stocks * ratio > minStocks :
                exchange.Sell(ticker.Last, acc.Stocks * ratio)
                basePrice = ticker.Last
        ts = time.time()
        if ts - lastCancelAll > 60 * 5 :
            CancelAll()
            lastCancelAll = ts 
        LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc)
        Sleep(500)

Einfache Analyse der Strategie

Das Prinzip der Strategie ist sehr einfach. Sie verwendet keine Indikatoren, sondern verwendet nur den aktuellen Preis als Grundlage für Handelsauslöser, und es gibt nur einen HauptparameterratioSteuert das Auslösen der Öffnung einer Position.

Langer Auslöser:

if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Verwenden Sie den aktuellen Preis zum Vergleich mit dem Basispreis. Wenn der aktuelle Preis höher ist als der Basispreis und der Preis übersteigtratio * 100 %, wird die Pending Order ausgelöst und eine Long Order platziert. Nach der Bestellung wird der Basispreis auf den aktuellen Preis aktualisiert.

Kurzauftragsauslöser:

if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

Das Prinzip des Leerverkaufs ist das gleiche. Verwenden Sie den aktuellen Preis, um ihn mit dem Basispreis zu vergleichen. Wenn der aktuelle Preis unter dem Basispreis liegt und der Preis höher istratio * 100 %, wird die Pending Order ausgelöst und eine Short Order platziert. Nach der Bestellung wird der Basispreis auf den aktuellen Preis aktualisiert.

Das Auftragsvolumen entspricht dem Wert der jeweils verfügbaren Mittel.ratio * 100 %。 Sofern das berechnete Auftragsvolumen nicht kleiner ist als das in den Parametern festgelegte MindesttransaktionsvolumenminStocks, andernfalls eine Bestellung aufgeben.

Dadurch kann die Strategie Preisänderungen verfolgen, Höchststände verfolgen und Tiefststände verkaufen.

Backtesting

Der Backtesting-Zeitraum beträgt ca. ein Jahr. Python-Version der Strategie des Aufholens und Verkaufens

Ergebnisse der Operation: Python-Version der Strategie des Aufholens und Verkaufens

Python-Version der Strategie des Aufholens und Verkaufens

Kürzlich sagten einige Benutzer, dass es relativ wenige Python-Strategien gibt. Ich werde in Zukunft weitere in Python geschriebene Strategien veröffentlichen. Der Strategiecode ist außerdem sehr einfach, sodass er sich sehr gut für Anfänger zum Lernen eignet. Strategieadresse: https://www.fmz.com/strategy/181185

Die Strategie dient nur zu Referenzzwecken, zum Backtesting und zum Testen. Bei Interesse können Sie sie optimieren und aktualisieren.