public virtual void execDetails(int reqId, Contract contract, Execution execution) { logger.Info("ExecDetails. " + contract.Symbol + ", " + execution.Side + " - " + execution.ExecId + ", " + execution.OrderId + ", " + execution.Shares + "\n"); Client.PushOrdersInfo(ObjectConstructorHelper.GetExecutionMessage(reqId, contract, execution, AccountID, InstrumentID), PushMessageType.ExecutionPush); }
public void orderStatus(int orderId, string status, double filled, double remaining, double avgFillPrice, int permId, int parentId, double lastFillPrice, int clientId, string whyHeld) { lastOrderStatusIdLock.TryEnterUpgradeableReadLock(-1); try { if (lastOrderStatusId == orderId && lastOrderStatusStatus == status) { return; //for some reason IB sends sometime more than 1 IB messages with same status and id } lastOrderStatusId = orderId; lastOrderStatusStatus = status; } finally { if (lastOrderStatusIdLock.IsUpgradeableReadLockHeld) { lastOrderStatusIdLock.ExitUpgradeableReadLock(); } } logger.Info("OrderStatus. Id: " + orderId + ", Status: " + status + ", AverageFillPrice: " + avgFillPrice + ", PermanentId: " + permId ); Client.PushOrdersInfo(ObjectConstructorHelper.GetOrderStatusMessage(orderId, status, Convert.ToInt32(filled), Convert.ToInt32(remaining), avgFillPrice, permId, parentId, lastFillPrice, clientId, whyHeld), PushMessageType.OrderStatusPush); }
public void updatePortfolio(Contract contract, double position, double marketPrice, double marketValue, double averageCost, double unrealisedPnl, double realisedPnl, string accountName) { logger.Info("UpdatePortfolio. " + contract.Symbol + " " + contract.LocalSymbol + ", " + contract.SecType + " @ " + contract.Exchange + ": Quantity: " + position + ", MarketPrice: " + marketPrice + ", MarketValue: " + marketValue + ", AveragePrice: " + averageCost + ", UnrealisedPNL: " + unrealisedPnl + ", RealisedPNL: " + realisedPnl + ", AccountName: " + accountName + "\n"); if (position != 0) { Client.PushOrdersInfo( ObjectConstructorHelper.GetLiveTrade(position, marketPrice, averageCost, unrealisedPnl, realisedPnl, AccountID, InstrumentID), PushMessageType.LiveTradePush); LiveOrderQuantity = position; } }
public virtual void openOrder(int orderId, Contract contract, Order order, OrderState orderState) { if (OpenOrderEndEnded) { lastOrderIdLock.TryEnterUpgradeableReadLock(-1); try { if ((lastOrderId == orderId && lastOrderStatus == orderState.Status)) { return; //for some reason IB sends sometime more than 1 IB messages with same status and id } lastOrderId = orderId; lastOrderStatus = orderState.Status; } finally { if (lastOrderIdLock.IsUpgradeableReadLockHeld) { lastOrderIdLock.ExitUpgradeableReadLock(); } } logger.Info("OpenOrder. ID: " + orderId + ", " + contract.LocalSymbol + ", " + contract.SecType + " @ " + contract.Exchange + ": " + order.Action + ", " + order.OrderType + " " + order.TotalQuantity + ", " + orderState.Status + "\n"); Client.PushOrdersInfo(ObjectConstructorHelper.GetOpenOrder(contract, order, orderState, AccountID, InstrumentID), PushMessageType.OpenOrderPush); } else { if (ShouldCollectOpenOrders) { OpenOrders.Add(order); } } }