Einheitliche Plattform-Balance-Strategie von Python Version

Schriftsteller:Lydia., Erstellt: 2022-12-02 21:38:52, Aktualisiert: 2023-09-20 11:14:48

img

JavaScript-Version

Strategieadresse:https://www.fmz.com/strategy/345

In diesem Artikel werden wir die Portierung einer einfachen JavaScript-Strategie üben. Durch die Portierung der Strategie können wir uns besser mit dem Aufruf der FMZ Quant Trading Platform-Schnittstelle vertraut machen und die leichten Unterschiede zwischen verschiedenen Sprachen in der Plattformentwicklungsstrategie verstehen.

Beschreibung der Strategie

Beschreibung aus der JavaScript-Version:

Dies erfordert die Eröffnung einer Position. Zum Beispiel, wenn das Konto 5000 Yuan und eine Währung hat, wenn der Wert der Währung größer ist als der Kontostand von 5000 Yuan und die Preisdifferenz den Schwellenwert übersteigt, zum Beispiel, wenn die Währung jetzt 6000 Yuan wert ist, dann verkaufen (6000-5000) / 6000/2 Währungen, was bedeutet, dass die Währung aufgestiegen ist und wir das Geld zurückwandeln können. Wenn die Währung abgewertet hat, zum Beispiel 4000 Yuan, dann kaufen wir (5000-4000) / 4000/2 Währungen. Wenn die Währung sinkt, kaufen einige. Wenn sie wieder steigt, verkaufen Sie wieder, wie der Saldo, haben die beiden Seiten unterschiedliche Absicherungen, also nenne ich es die Gleichgewichtsstrategie

Das Prinzip der Strategie ist sehr einfach. Der Code der JavaScript-Version ist nicht lang, nur mehr als 70 Zeilen. Die Python-Sprachstrategie mit präziserer Grammatik wird transplantiert und der Code ist viel kürzer, was für Anfänger sehr geeignet ist.JavaScript/C++/PythonDaher ist die Beherrschung mehrerer Entwicklungssprachen nicht nur hilfreich für Lern-, Forschungs- und Entwicklungsstrategien, sondern auch für die Kenntnis 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)

Der Code beginnt mit

'''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}]
'''

Es bezieht sich auf die Backtesting-Konfiguration, was bedeutet, dass die Backtesting-Konfiguration (Einstellungen) in Form von Code gespeichert und automatisch entsprechend der Einstellung während des Backtestings konfiguriert wird. Dieser Teil kann gelöscht werden. Wenn er gelöscht wird, müssen wir die Backtesting-Konfigurationsinformationen auf der Backtesting-Seite manuell einstellen. Referenz:https://www.fmz.com/bbs-topic/859

Die Parameter dieser Strategie entsprechen vollständig der JavaScript-Version. Der Strategiecode wird auch Satz für Satz transplantiert. Die Programmstruktur hat sich nicht geändert. Sie können die in verschiedenen Sprachen geschriebenen Strategien Satz für Satz vergleichen.

Zurückprüfung

Konfiguration der Parameter

img

Statistiken

img img

Strategieadresse:https://www.fmz.com/strategy/183374

Die Strategie ist nur für Referenz, Lernen und Rücktest.


Verwandt

Mehr