Exemplo n.º 1
0
        public void execDetails(int reqId, Contract contract, Execution execution)
        {
            IBOrderStatusWrapper data;

            if (OrderStatusDic.TryGetValue(execution.OrderId, out data))
            {
                data.ExecId = execution.ExecId;
            }
        }
Exemplo n.º 2
0
        public void commissionReport(CommissionReport commissionReport)
        {
            //find order by execId
            var orderStatus = OrderStatusDic.FirstOrDefault(o => o.Value.ExecId == commissionReport.ExecId);

            if (orderStatus.Equals(new KeyValuePair <int, IBOrderStatusWrapper>()))
            {
                Logger.Error("Received commission report with execId not found " +
                             $"in orders list, execId is {commissionReport.ExecId}");
                return;
            }

            orderStatus.Value.Data.Commission = commissionReport.Commission;
            Consumer.Enqueue(orderStatus.Value.Data);
        }
Exemplo n.º 3
0
 public void orderStatus(int orderId, string status, int filled,
                         int remaining, double avgFillPrice, int permId, int parentId,
                         double lastFillPrice, int clientId, string whyHeld)
 {
     if (OrderStatusDic.ContainsKey(orderId))
     {
         OrderStatusData orderStatus = OrderStatusDic[orderId].Data;
         orderStatus.OrderStatus    = (OrderStatus)Enum.Parse(typeof(OrderStatus), status);
         orderStatus.LastUpdateTime = DateTime.Now;
         orderStatus.LastFillPrice  = lastFillPrice;
         Consumer.Enqueue(orderStatus);
     }
     else
     {
         Logger.Error($"Received order status on request not in OrderStatusDic, orderId is {orderId}");
     }
 }
Exemplo n.º 4
0
        public void openOrder(int orderId, Contract contract, Order order, OrderState orderState)
        {
            CloseIrrelevantOrders();
            IBOrderStatusWrapper status;

            if (!OrderStatusDic.TryGetValue(orderId, out status))
            {
                var orderData = order.ToOrderData();
                orderData.Contract = contract.ToContract();
                status             = new IBOrderStatusWrapper(new OrderStatusData(orderId.ToString(), orderData)
                {
                    Id = Guid.NewGuid()
                });
                OrderStatusDic[orderId] = status;
            }
            status.Data.LastUpdateTime = DateTime.Now;
            double maintMargin = Convert.ToDouble(orderState.MaintMargin);

            if (maintMargin < LARGE_NUBMER)
            {
                status.Data.MaintMargin = maintMargin;
            }
            Consumer.Enqueue(OrderStatusDic[orderId].Data);
        }
Exemplo n.º 5
0
 private void CloseIrrelevantOrders()
 {
     OrderStatusDic.RemoveAll(item => DateTime.Now - item.Data.LastUpdateTime > ORDER_MAX_TIME_SPAN &&
                              item.Data.OrderStatus.In(OrderStatus.Cancelled, OrderStatus.Filled));
 }