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

Stratégie d'équilibrage de la plate-forme Python (enseignement)

Auteur:L'inventeur de la quantification - un petit rêve, Date: 2020-02-03 22h43
Les étiquettes:

Citation de la stratégie d'équilibrage de la plateforme de feuille de calcul 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

L'adresse de l'article est:https://www.fmz.com/bbs-topic/4986


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

Plus de