Die Balance-Strategie für die Python-Blattform

Schriftsteller:Kleine Träume, Erstellt: 2020-02-05 10:02:03, Aktualisiert: 2023-10-12 21:20:47

img

Die Balance-Strategie für die Python-Blattform

JavaScript-Version

Die Strategie ist unter:https://www.fmz.com/strategy/345

In diesem Artikel werden wir gemeinsam eine einfache JavaScript-Politik üben. Durch die Porting-Politik lernen die Erfinder die Aufrufe der Quantifizierung der Handelsplattform-Schnittstellen besser kennen.

Strategische Anleitung

Hier ist eine Beschreibung aus der JavaScript-Version:

Das erfordert die Aufstellung von Lager, zum Beispiel, wenn es 5.000 Dollar auf dem Konto gibt, und 1 Münze, wenn der Wert der Münze größer ist als der Kontostand von 5.000 und die Differenz über dem Devaluationspunkt liegt, zum Beispiel, wenn die Münze jetzt 6.000 Dollar wert ist, dann verkaufen wir sie, wenn die Münze ansteigt, tauschen wir das Geld zurück, wenn die Münze ansteigt, zum Beispiel 4.000 Dollar, dann kaufen wir sie, wenn die Münze sinkt, dann kaufen wir etwas zurück, wenn sie ansteigt, dann verkaufen wir sie wieder, als wäre es ein Niedrigkurs, eine verschiedene Absicherung auf beiden Seiten, also nenne ich das eine Ausgleichsstrategie.

Die Strategie ist sehr einfach, die JavaScript-Version ist nicht lang, nur mehr als 70 Zeilen. Die Syntax ist übertragen. Die Strategie der Python-Sprache ist einfacher, der Code ist kürzer und sehr gut für Anfänger geeignet.JavaScript/C++/PythonWenn Sie mehr über eine Entwicklungssprache verfügen, ist dies nicht nur für das Lernen, die Forschung und die Entwicklung von Strategien hilfreich, sondern auch für ein besseres Verständnis der verschiedenen API-Schnittstellen der Plattform.

Strategie-Code

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

InitAccount = None

def CancelPendingOrders():
    ret = False
    while True:
        orders = _C(exchange.GetOrders)
        if len(orders) == 0 :
            return ret

        for j in range(len(orders)):
            exchange.CancelOrder(orders[j].Id)
            ret = True
            if j < len(orders) - 1:
                Sleep(Interval)
    return ret 

def onTick():
    acc = _C(exchange.GetAccount)
    ticker = _C(exchange.GetTicker)
    spread = ticker.Sell - ticker.Buy
    diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
    ratio = diffAsset / acc.Balance
    LogStatus("ratio:", ratio, _D())
    if abs(ratio) < threshold:
        return False
    if ratio > 0 :
        buyPrice = _N(ticker.Sell + spread, ZPrecision)
        buyAmount = _N(diffAsset / buyPrice, XPrecision)
        if buyAmount < MinStock:
            return False
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
    else :
        sellPrice = _N(ticker.Buy - spread, ZPrecision)
        sellAmount = _N(-diffAsset / sellPrice, XPrecision)
        if sellAmount < MinStock:
            return False 
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
    return True

def main():
    global InitAccount, LoopInterval
    InitAccount = _C(exchange.GetAccount)
    LoopInterval = max(LoopInterval, 1)
    while True:
        if onTick():
            Sleep(1000)
            CancelPendingOrders()
            Log(_C(exchange.GetAccount))
        Sleep(LoopInterval * 1000)

Die Code-Anfänge

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

Das ist die Wiederholungskonfiguration, was bedeutet, dass die Wiederholungskonfiguration (die Einstellungen) in Form von Code gespeichert wird, die automatisch nach dieser Einstellung konfiguriert wird. Dieser Teil kann entfernt, gelöscht werden, wenn die Wiederholung manuell auf der Wiederholungsseite eingestellt werden muss. Nachfolgend:https://www.fmz.com/bbs-topic/859

Die Parameter der Strategie entsprechen vollständig der JavaScript-Version, die Strategiecode wird auch Satz für Satz übertragen, die Programmierstruktur ist unverändert und kann Satz für Satz verglichen werden, um die Unterschiede zwischen den Strategien in verschiedenen Sprachen zu sehen.

Wiederholung

Parameterkonfigurationimg

Statistikenimg

img

Die Strategie ist unter:https://www.fmz.com/strategy/183374

Die Strategien sind nur für das Lernen, das Nachprüfen und das Optimieren von Upgrades geeignet.


Verwandt

Mehr

Der RegenbogenDas sind gute Kühe.