private CryptoAction ConvertAction(BitmexAction side) { switch (side) { case BitmexAction.Undefined: break; case BitmexAction.Partial: return(CryptoAction.Partial); case BitmexAction.Insert: return(CryptoAction.Insert); case BitmexAction.Update: return(CryptoAction.Update); case BitmexAction.Delete: return(CryptoAction.Delete); default: throw new ArgumentOutOfRangeException(nameof(side), side, null); } return(CryptoAction.Undefined); }
private void HandleLiquidationSafe(BitmexAction action, Liquidation[] trades) { try { HandleLiquidation(action, trades); } catch (Exception e) { Log.Error(e, $"[Bitmex] Failed to handle trade info, error: '{e.Message}'"); } }
private CryptoLiquidation ConvertLiquidation(BitmexAction action, Liquidation trade) { return(new CryptoLiquidation() { ExchangeName = "bitmex", Amount = Convert.ToDouble(trade.leavesQty ?? 0), AmountQuote = Convert.ToDouble(trade.leavesQty ?? 0 * trade.Price ?? 0), Side = ConvertTradeSide(trade.Side ?? BitmexSide.Undefined), Id = trade.OrderID, Price = Convert.ToDouble(trade.Price ?? 0), Timestamp = DateTime.Now, Pair = trade.Symbol, Liquidation = true, Action = ConvertAction(action) }); }
private OrderBookAction ConvertAction(BitmexAction action) { switch (action) { case BitmexAction.Insert: return(OrderBookAction.Insert); case BitmexAction.Update: return(OrderBookAction.Update); case BitmexAction.Delete: return(OrderBookAction.Delete); default: return(OrderBookAction.Undefined); } }
private CryptoLiquidation[] ConvertLiquidation(BitmexAction action, Liquidation[] data) { return(data .Select(x => ConvertLiquidation(action, x)) .ToArray()); }
private void HandleLiquidation(BitmexAction action, Liquidation[] trades) { LiquidationSubject.OnNext(ConvertLiquidation(action, trades)); }