示例#1
0
        public static Trading.Trade ConvertExecutionToTrade(Messages.ExecutionMessage execution, IBUser user)
        {
            if (execution != null)
            {
                Trading.Trade trade = new Trading.Trade();

                trade.Contract = ConvertContract(execution.Contract);

                if (execution.Execution != null)
                {
                    trade.OrderId      = execution.Execution.OrderId;
                    trade.ClientId     = execution.Execution.ClientId;
                    trade.ExecId       = execution.Execution.ExecId;
                    trade.Time         = execution.Execution.Time;
                    trade.AcctNumber   = execution.Execution.AcctNumber;
                    trade.Exchange     = execution.Execution.Exchange;
                    trade.Side         = execution.Execution.Side;
                    trade.Shares       = execution.Execution.Shares;
                    trade.Price        = execution.Execution.Price;
                    trade.PermId       = execution.Execution.PermId;
                    trade.Liquidation  = execution.Execution.Liquidation;
                    trade.CumQty       = execution.Execution.CumQty;
                    trade.AvgPrice     = execution.Execution.AvgPrice;
                    trade.OrderRef     = execution.Execution.OrderRef;
                    trade.EvRule       = execution.Execution.EvRule;
                    trade.EvMultiplier = execution.Execution.EvMultiplier;
                    trade.ModelCode    = execution.Execution.ModelCode;
                }

                if (execution.Commission != null)
                {
                    trade.Commission          = execution.Commission.Commission;
                    trade.Currency            = execution.Commission.Currency;
                    trade.RealizedPNL         = execution.Commission.RealizedPNL;
                    trade.Yield               = execution.Commission.Yield;
                    trade.YieldRedemptionDate = execution.Commission.YieldRedemptionDate;
                }

                if (execution.Execution != null && user != null)
                {
                    int orderId = execution.Execution.OrderId;
                    Tuple <string, string, string> portfolio = user.GetPortfolioFromOrderId(orderId);
                    if (portfolio != null)
                    {
                        trade.Fund     = portfolio.Item1;
                        trade.Strategy = portfolio.Item2;
                        trade.Folder   = portfolio.Item3;
                    }
                }

                return(trade);
            }

            return(null);
        }
示例#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);
        }