Exemple #1
0
 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);
 }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
     }
 }
Exemple #4
0
        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);
                }
            }
        }