//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); } }
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"); } }
// 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"); } }
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); // } }
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); } } }
//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); }