private void OnOrderUpdate(Messages.Order bitfinexOrder) { if (bitfinexOrder.Status == "ACTIVE") { var brokerId = bitfinexOrder.Id.ToStringInvariant(); var order = CachedOrderIDs .FirstOrDefault(o => o.Value.BrokerId.Contains(brokerId)) .Value; if (order == null) { order = _algorithm.Transactions.GetOrderByBrokerageId(brokerId); if (order == null) { Log.Error($"OnOrderUpdate(): order not found: BrokerId: {brokerId}"); return; } } OnOrderEvent(new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero, "Bitfinex Order Event") { Status = OrderStatus.UpdateSubmitted }); } }
private void OnOrderNew(Messages.Order bitfinexOrder) { if (bitfinexOrder.Status == "ACTIVE") { var brokerId = bitfinexOrder.Id.ToStringInvariant(); Order order; if (_orderMap.TryGetValue(bitfinexOrder.ClientOrderId, out order)) { if (CachedOrderIDs.ContainsKey(order.Id)) { CachedOrderIDs[order.Id].BrokerId.Clear(); CachedOrderIDs[order.Id].BrokerId.Add(brokerId); } else { order.BrokerId.Add(brokerId); CachedOrderIDs.TryAdd(order.Id, order); } OnOrderEvent(new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero, "Bitfinex Order Event") { Status = OrderStatus.Submitted }); } } }
private void OnOrderError(Messages.Order bitfinexOrder) { Order order; if (_orderMap.TryGetValue(bitfinexOrder.ClientOrderId, out order)) { OnOrderEvent(new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero, "Bitfinex Order Event") { Status = OrderStatus.Invalid }); } }
private static OrderStatus ConvertOrderStatus(Messages.Order order) { if (order.Status == "ACTIVE") { return(OrderStatus.Submitted); } else if (order.Status.StartsWith("PARTIALLY FILLED")) { return(OrderStatus.PartiallyFilled); } else if (order.Status.StartsWith("EXECUTED")) { return(OrderStatus.Filled); } else if (order.Status.StartsWith("CANCELED")) { return(OrderStatus.Canceled); } return(OrderStatus.None); }
private void OnOrderClose(Messages.Order bitfinexOrder) { if (bitfinexOrder.Status.StartsWith("CANCELED")) { var brokerId = bitfinexOrder.Id.ToStringInvariant(); var order = CachedOrderIDs .FirstOrDefault(o => o.Value.BrokerId.Contains(brokerId)) .Value; if (order == null) { order = _algorithm.Transactions.GetOrderByBrokerageId(brokerId); if (order == null) { Log.Error($"OnOrderClose(): order not found: BrokerId: {brokerId}"); return; } } else { Order outOrder; CachedOrderIDs.TryRemove(order.Id, out outOrder); } if (bitfinexOrder.ClientOrderId > 0) { Order removed; _orderMap.TryRemove(bitfinexOrder.ClientOrderId, out removed); } OnOrderEvent(new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero, "Bitfinex Order Event") { Status = OrderStatus.Canceled }); } }