Die Ressourcen sind geladen. Beförderung...

Strategie für den Kauf der Gewinner der Python-Version

Schriftsteller:FMZ~Lydia, Erstellt: 2022-12-22 22:04:41, Aktualisiert: 2023-09-20 09:22:41

img

Strategie für den Kauf der Gewinner der Python-Version

Die Trendstrategie verwendet im Allgemeinen verschiedene Indikatoren, um die Marktrichtung zu beurteilen, und verwendet die Vergleichsergebnisse verschiedener Indikatoren als Handelssignale. Auf diese Weise ist es unvermeidlich, Parameter zu verwenden und Indikatoren zu berechnen. Jetzt, da die Parameter verwendet werden, wird es eine passende Situation geben. In einigen Märkten funktioniert die Strategie sehr gut, aber wenn Sie Pech haben und der Markttrend den aktuellen Parametern sehr unfreundlich ist, kann die Strategie sehr schlecht funktionieren. Daher halte ich, dass je einfacher das Strategiedesign ist, desto besser. Diese Strategie wird robuster sein. Heute werden wir eine Trendstrategie ohne Indikatoren teilen. 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:", ticker, "\n", "Account information:", acc)
        Sleep(500)

Einfache Analyse der Strategie

Das Strategieprinzip ist sehr einfach. Es verwendet keine Indikatoren, es verwendet nur den aktuellen Preis als die Transaktions-Trigger-Basis. Es gibt nur einen Hauptparameterratiozur Steuerung des Auslösers der Öffnungsposition.

Auslöser für lange Zeit:

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

Wenn der aktuelle Preis größer ist als der Basispreis und der Preis denratio * 100%, einen Befehl auslösen und lange Befehle abwarten. Nach Auftragserteilung wird der Basispreis auf den aktuellen Preis aktualisiert.

Auslöser der Short-Order:

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

Der aktuelle Preis wird verwendet, um den Basispreis zu vergleichen.ratio * 100%', wird die ausstehende Order ausgelöst und die leere Order wird aufgelistet. Nach Auftragserteilung wird der Basispreis auf den aktuellen Preis aktualisiert.

Die Bestellmenge jeder Bestellung beträgt:ratio * 100%des verfügbaren Fondswerts. Auftrag erteilen, es sei denn, die berechnete Auftragsmenge ist kleiner als die MindesthandelsmengeminStocksdurch den Parameter festgelegt.

Auf diese Weise folgt die Strategie den Preisänderungen, um die Gewinner zu kaufen.

Zurückprüfung

Der Zeitrahmen für das Backtesting beträgt etwa ein Jahr.

img

Laufende Ergebnisse:

img img img

Vor kurzem sagten einige Benutzer, dass es nur wenige Python-Strategien gibt. Später werde ich mehr Strategien in Python teilen. Der Strategiecode ist auch sehr einfach, was für quantitative Anfänger sehr geeignet ist. Strategieadresse:https://www.fmz.com/strategy/181185

Die Strategie ist nur zur Referenz, zum Lernen und zum Backtesting bestimmt.


Verwandt

Mehr