Inheritance: System.EventArgs
Esempio n. 1
0
 //get order status
 static void ClientOrderStatus(object sender, OrderStatusEventArgs e)
 {
     // Loop through the order list and find the order to change the stuts for by looking at the order id
     foreach (OrderInfo order in orders)
         if (order.OrderId == e.OrderId)
         {
             order.Status = e.Status;
             Logger.WriteToLog(DateTime.Now, string.Format("ClientManager.ClientOrderStatus : Client order status for market {0}: order: {1,-4},  status:{2,-4}, ", Mode, order.Symbol, order.Status), " OrderStatus");
         }
 }
Esempio n. 2
0
 static void client_OrderStatus(object sender, OrderStatusEventArgs e)
 {
     Console.WriteLine("Order Placed.");
 }
Esempio n. 3
0
        void client_OrderStatus(object sender, OrderStatusEventArgs e)
        {
            lock (_lockObject)
            {
                string msg = "IB order status: " + e.OrderId + " " + e.Status;
                //Console.WriteLine(msg);
                Trace.WriteLine(msg);

                if (openOrders.ContainsKey(e.OrderId.ToString()))
                {
                    RightEdge.Common.BrokerOrder openOrder = openOrders[e.OrderId.ToString()];

                    bool orderProcessed = false;
                    Fill fill = null;
                    string information = "";

                    switch (e.Status)
                    {
                        case OrderStatus.Filled:
                            //	Handle fills with ExecDetails event
            //                            fill = new Fill();
            //                            fill.FillDateTime = GetAccountTime("fill");
            //                            fill.Price = new Price(e.LastFillPrice, e.LastFillPrice);
            //                            int alreadyFilled = 0;
            //                            foreach (Fill existingFill in openOrder.Fills)
            //                            {
            //                                alreadyFilled += fill.Quantity;
            //                            }

            //                            //	Don't know whether e.filled is cumulative or not
            //                            if (e.Filled + e.Remaining == (int)openOrder.Shares)
            //                            {
            //                                fill.Quantity = e.Filled - alreadyFilled;
            //                            }
            //                            else
            //                            {
            //                                fill.Quantity = e.Filled;
            //                            }

            //                            //	Apparently IB doesn't send commissions
            //                            fill.Commission = 0;

            //                            openOrder.Fills.Add(fill);

            //                            if (e.Remaining == 0)
            //                            {
            //                                openOrder.OrderState = BrokerOrderState.Filled;
            //                            }
            //                            else
            //                            {
            //                                openOrder.OrderState = BrokerOrderState.PartiallyFilled;
            //                                information = "Partial fill";
            //                            }
            //                            orderProcessed = true;
                            break;

                        //	Apparently, stop orders don't get "Submitted", they get "presubmitted" instead
                        case OrderStatus.Submitted:
                        case OrderStatus.PreSubmitted:
                        case OrderStatus.ApiPending:
                            if (e.Status == OrderStatus.ApiPending)
                            {
                                //	Not sure what the ApiPending status is used for
                                int b = 0;
                            }

                            Trace.WriteLine("IB " + e.Status.ToString() + ": " + openOrder.ToString());
                            if (_gettingReconnectData)
                            {
                                if (_potentiallyCancelledOrders.ContainsKey(openOrder.OrderId))
                                {
                                    _potentiallyCancelledOrders.Remove(openOrder.OrderId);
                                }
                            }
                            else
                            {
                                openOrder.OrderState = BrokerOrderState.Submitted;
                                orderProcessed = true;
                            }
                            if (unSubmittedOrders.ContainsKey(openOrder.OrderId))
                            {
                                unSubmittedOrders.Remove(openOrder.OrderId);
                            }

                            break;

                        case OrderStatus.Canceled:
                            openOrder.OrderState = BrokerOrderState.Cancelled;
                            information = "Cancelled";
                            orderProcessed = true;
                            break;

                    }

                    if (orderProcessed)
                    {
                        OrderUpdatedDelegate tmp = OrderUpdated;
                        if (tmp != null)
                        {
                            tmp(openOrder, fill, information);
                        }

                        if (openOrder.OrderState == BrokerOrderState.Filled)
                        {
                            //	TODO: AddShares
                            //AddShares(openOrder);
                        }
                    }

                    if (openOrder.OrderState == BrokerOrderState.Filled || openOrder.OrderState == BrokerOrderState.Rejected ||
                        openOrder.OrderState == BrokerOrderState.Cancelled)
                    {
                        openOrders.Remove(openOrder.OrderId);
                    }
                }
            }
        }