Les ressources ont été chargées... Je charge...

Stratégie d'équilibrage de la plateforme de feuille de calcul Python

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2020-02-05 10:02:03, Mis à jour: 2023-10-12 21:20:47

img

Stratégie d'équilibrage de la plateforme de feuille de calcul Python

Version JavaScript

L'adresse de la stratégie:https://www.fmz.com/strategy/345

Dans cet article, nous allons nous entraîner à transférer une simple stratégie JavaScript. Grâce à la stratégie de transférer, les inventeurs sont plus familiarisés avec les appels à l'interface de plate-forme de négociation quantifiée et comprennent les légères différences entre les différentes langues lors du développement de la stratégie de plate-forme.

Définition stratégique

C'est le cas de l'exemple de la version JavaScript:

Si la valeur de la pièce est supérieure au solde de la pièce est supérieure à 5000 et la différence est supérieure à la dépréciation, par exemple, si la pièce est maintenant de 6000 dollars, on vend 6 000/2 pièces, c'est-à-dire si la pièce est en hausse, on change l'argent, si la pièce est dépréciée, par exemple 4000, on achète 5 000-4 000/4 000/2 pièces, on en achète de nouveau quand la pièce est en baisse, et si elle est en baisse, on la vend de nouveau, comme si c'était un équilibre, une couverture différente des deux côtés, donc je l'appelle une stratégie d'équilibre

La stratégie est très simple, la version JavaScript du code n'est pas aussi longue, seulement plus de 70 lignes. Transporter en syntaxe est une stratégie de la langue Python plus simple, le code est plus court, très adapté à l'apprentissage des débutants, sur la plate-forme de négociation quantitative des inventeurs, il y a beaucoup de code partagé par les développeurs.JavaScript/C++/PythonLa maîtrise d'un langage de développement est donc utile non seulement pour l'apprentissage, la recherche et la stratégie de développement, mais aussi pour mieux connaître les différentes interfaces API de la plateforme.

Le code stratégique

'''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)

C'est le début du 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}]
'''

Il s'agit d'une configuration de retouche, c'est-à-dire que la configuration de retouche est enregistrée sous forme de code, qui est automatiquement configurée en fonction de cette configuration lors du retouche. Cette partie peut être supprimée, supprimée, il est nécessaire de définir manuellement les informations de configuration de retouche sur la page de retouche. Pour référence:https://www.fmz.com/bbs-topic/859

Les paramètres de cette stratégie sont parfaitement conformes à la version JavaScript, le code de la stratégie est également porté par phrase, la structure du programme est inchangée et peut être comparée par phrase, en regardant les différences entre les stratégies écrites dans différentes langues.

Réécriture

Configuration des paramètresimg

Les statistiquesimg

img

L'adresse de la stratégie:https://www.fmz.com/strategy/183374

Les stratégies sont uniquement destinées à l'apprentissage de référence, aux tests de retouche et à l'optimisation des mises à niveau.


Relationnée

Plus de

Les trésors du cielC'est une bonne vache.