Verweise auf die Ausgleichspolitik der JavaScript-Tabletplattform
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.
Der Post-Adress: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)