Exemplo n.º 1
0
        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
                });
            }
        }
Exemplo n.º 2
0
        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
                    });
                }
            }
        }
Exemplo n.º 3
0
        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
                });
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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
                });
            }
        }