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); }
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); }