internal void OnHistoricalOrdersList(HistoricalOrdersListResponse message)
        {
            if (HistoricalOrdersAdded == null)
                return;

            var orders = new List<Order>();
            foreach (var order in message.HistoricalOrders)
            {
                try
                {
                    var status = order.FilledQuantity > 0 ? Status.Filled : Status.Canceled;
                    orders.Add(new Order(order.UserID, order.Symbol, status == Status.Filled ? order.FilledQuantity : order.CancelledQuantity,
                        DataConverter.ToClientOrderType(order.OrderType), order.OrderSide.ToClientSide(), order.Commission,
                        status == Status.Filled ? order.AvgFillPrice : order.Price, order.OpenDate, DataConverter.ToClientTIF(order.TimeInForce))
                    {
                        OrderStatus = status,
                        BrokerName = order.BrokerName,
                        AccountId = order.AccountId,
                        BrokerID = order.BrokerID,
                        OpeningQty = order.OpeningQty,
                        ClosingQty = order.ClosingQty,
                        ServerSide = order.ServerSide
                    });
                }
                catch (Exception ex)
                {
                    Logger.Error(ex, "Failed to parse historical order");
                }
            }

            HistoricalOrdersAdded(this, new EventArgs<List<Order>>(orders));
        }
示例#2
0
        protected override void ExecuteCommand(OrdersListRequest request)
        {
            var count    = Math.Max(Math.Min(request.CountPerSymbol, 10000), 1);
            var response = new HistoricalOrdersListResponse
            {
                HistoricalOrders = Core.OMS.GetOrdersHistory(request.User, count, request.Skip),
                User             = request.User
            };

            PushResponse(response);
        }