Esempio n. 1
0
        public Trading.Order GetOpenOrder(string userName, int orderId)
        {
            try
            {
                IBUser user = _userManager.GetUser(userName);
                if (user != null)
                {
                    Messages.OpenOrderMessage openOrder = user.GetOpenOrderMessage(orderId, user.ClientId);
                    if (openOrder != null)
                    {
                        var order = ConvertOpenOrderMessageToOrder(openOrder, user);
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }
        }
Esempio n. 2
0
        public static Trading.Order ConvertOpenOrderMessageToOrder(Messages.OpenOrderMessage openOrder, IBUser user)
        {
            if (openOrder != null)
            {
                Trading.Order order = new Trading.Order();
                order.OrderId  = openOrder.OrderId;
                order.Contract = ConvertContract(openOrder.Contract);
                if (openOrder.Order != null)
                {
                    order.Account         = openOrder.Order.Account;
                    order.Action          = openOrder.Order.Action;
                    order.ActiveStartTime = openOrder.Order.ActiveStartTime;
                    order.ActiveStopTime  = openOrder.Order.ActiveStopTime;
                    order.OrderId         = openOrder.Order.OrderId;
                    order.ClientId        = openOrder.Order.ClientId;
                    order.PermId          = openOrder.Order.PermId;
                    order.TotalQuantity   = openOrder.Order.TotalQuantity;
                    order.OrderType       = openOrder.Order.OrderType;
                    order.LimitPrice      = openOrder.Order.LmtPrice;
                    order.AuxPrice        = openOrder.Order.AuxPrice;
                    order.Tif             = openOrder.Order.Tif;
                    order.OcaGroup        = openOrder.Order.OcaGroup;
                    order.OcaType         = openOrder.Order.OcaType;
                    order.OrderRef        = openOrder.Order.OrderRef;
                    order.Transmit        = openOrder.Order.Transmit;
                    order.ParentId        = openOrder.Order.ParentId;
                    order.BlockOrder      = openOrder.Order.BlockOrder;
                    order.SweepToFill     = openOrder.Order.SweepToFill;
                    order.DisplaySize     = openOrder.Order.DisplaySize;
                    order.TriggerMethod   = openOrder.Order.TriggerMethod;
                    order.OutsideRth      = openOrder.Order.OutsideRth;
                    order.Hidden          = openOrder.Order.Hidden;
                    order.GoodAfterTime   = openOrder.Order.GoodAfterTime;
                    order.GoodTillDate    = openOrder.Order.GoodTillDate;
                    order.OverridePercentageConstraints = openOrder.Order.OverridePercentageConstraints;
                    order.Rule80A   = openOrder.Order.Rule80A;
                    order.AllOrNone = openOrder.Order.AllOrNone;
                    order.MinQty    = openOrder.Order.MinQty;
                }

                if (openOrder.OrderState != null)
                {
                    order.Status             = openOrder.OrderState.Status;
                    order.InitMargin         = openOrder.OrderState.InitMargin;
                    order.MaintMargin        = openOrder.OrderState.MaintMargin;
                    order.EquityWithLoan     = openOrder.OrderState.EquityWithLoan;
                    order.Commission         = openOrder.OrderState.Commission;
                    order.MinCommission      = openOrder.OrderState.MinCommission;
                    order.MaxCommission      = openOrder.OrderState.MaxCommission;
                    order.CommissionCurrency = openOrder.OrderState.CommissionCurrency;
                    order.WarningText        = openOrder.OrderState.WarningText;
                }

                if (openOrder.OrderStatus != null)
                {
                    order.Status        = openOrder.OrderStatus.Status;
                    order.Filled        = openOrder.OrderStatus.Filled;
                    order.Remaining     = openOrder.OrderStatus.Remaining;
                    order.AvgFillPrice  = openOrder.OrderStatus.AvgFillPrice;
                    order.LastFillPrice = openOrder.OrderStatus.LastFillPrice;
                    order.WhyHeld       = openOrder.OrderStatus.WhyHeld;
                }

                if (user != null)
                {
                    var portfolio = user.GetPortfolioFromOrderId(order.OrderId);
                    if (portfolio != null)
                    {
                        order.Fund     = portfolio.Item1;
                        order.Strategy = portfolio.Item2;
                        order.Folder   = portfolio.Item3;
                    }
                }

                return(order);
            }

            return(null);
        }