//A façade method to the outside world,
 //through which orders are submitted and queued up in
 //appropriate order processor.
 public void SubmitOrder(string procName, Order order)
 {
     if (!Common.Tools.ValidateEquityOrder(order.GetEquityOrderString()))
     {
         throw new BadOrder();
     }
     else
     {
         OrderProcessor orderProcessor = oprocItems[procName] as OrderProcessor;
         orderProcessor.EnQueue(order);
     }
 }
Example #2
0
        public void SubmitOrder(Order order, string procName = "")
        {
            IDs     += order.OrderID.ToString() + ",";
            procName = (procName == ""? order.Instrument : procName);
            Console.WriteLine("Order number " + order.OrderID);

            if (order.OrderAction == "NEW")
            {
                orderBook.ordersInProcess.Add(order.OrderID.ToString(), order);    //stop orders are not getting pulled off
                if (!ValidateOrder(order))
                {
                    Console.WriteLine("order can not be processed");     // actually change this to return order to sender order.message should contain the reason
                    orderBook.ordersInProcess.Remove(order.OrderID.ToString());
                    order.OrderAction = "RETURNED";

                    ExecutedOrdersToSend.TcpClientTest.Connect(EquityMatchingEngine.OMEHost.ToXML(order));    //send order can not be filled back to client
                    //send order back to client
                }
                else
                {
                    //orderBook.ordersInProcess.Add(order.OrderID.ToString(), order);
                    OrderProcessor orderProcessor = oprocItems[procName] as OrderProcessor;
                    if (order.OrderType.ToString() == "MARKET")
                    {
                        orderProcessor.EnQueueMkt(order);
                    }
                    else
                    {
                        orderProcessor.EnQueue(order);
                    }
                }
            }
            else if (order.OrderAction == "UPDATE")
            {
                UpdateOrder(order);
            }
            else if (order.OrderAction == "DELETE")
            {
                DeleteOrder(order.Instrument, order);
            }
            else
            {
                Console.WriteLine("Invalid Order Action");
            }
        }
Example #3
0
        // This only works if you have the original order instrument, type, and by or sell
        public void UpdateOrder(Order newOrder, Order origOrder)
        {
            bool orderDeleted;

            orderDeleted = DeleteOrder(origOrder.Instrument.ToString(), origOrder);


            if (orderDeleted == true)
            {
                orderBook.ordersInProcess.Add(newOrder.OrderID.ToString(), newOrder);
                OrderProcessor orderProcessor = oprocItems[newOrder.Instrument] as OrderProcessor;
                orderProcessor.EnQueue(newOrder);
                Console.WriteLine("Updated order being submited");
            }
            else
            {
                Console.WriteLine("Order not found - updated order not submitted");
            }
        }
Example #4
0
        public void SubmitOrder(string procName, Order order)
        {
            /*string goodOrder = ValidateOrder(order);
             * if (goodOrder != "")
             * {
             *  Console.WriteLine(goodOrder); // actually change this to return order to sender
             *  //return;
             * }
             * else
             * {
             */
            //Console.WriteLine("enter......");
            //orderBook.ordersInProcess.Add(order.OrderID.ToString(), order);
            OrderProcessor orderProcessor = oprocItems[procName] as OrderProcessor;

            //  if (order.OrderType.ToString() == "Market")
            //      orderProcessor.EnQueueMkt(order);
            //   else
            orderProcessor.EnQueue(order);
            //  }
        }
Example #5
0
        public void SubmitOrder(string procName, Order order)
        {
            string goodOrder = ValidateOrder(order);

            if (goodOrder != "")
            {
                Console.WriteLine(goodOrder); // actually change this to return order to sender
                //return;
            }
            else
            {
                orderBook.ordersInProcess.Add(order.OrderID.ToString(), order);
                OrderProcessor orderProcessor = oprocItems[procName] as OrderProcessor;
                if (order.OrderType.ToString() == "Market")
                {
                    orderProcessor.EnQueueMkt(order);
                }
                else
                {
                    orderProcessor.EnQueue(order);
                }
            }
        }
Example #6
0
        //A façade method to the outside world,
        //through which orders are submitted and queued up in
        //appropriate order processor.
        public void SubmitOrder(string procName, Order order)
        {
            OrderProcessor orderProcessor = oprocItems[procName] as OrderProcessor;

            orderProcessor.EnQueue(order);
        }