public void addBuyOrder(Double buy_price, int buy_size)
        {
            BuyOrder buyOrder = new BuyOrder(buy_price, buy_size);

            BuyOrders.Add(buyOrder);
            var SortedBuyOrders = BuyOrders.OrderByDescending(BuyOrder => BuyOrder.Price).ThenBy(BuyOrder => BuyOrder.TimeStamp).ToList();

            BuyOrders = SortedBuyOrders;
        }
        public void addBuyOrder(Double buy_price, int buy_size)
        {
            if (SellOrders.Count > 0)
            {
                //              var SortedSellOrders = SellOrders.OrderBy(SellOrder => SellOrder.Price).ThenBy(SellOrder => SellOrder.TimeStamp).ToList();
                //              SellOrders = SortedSellOrders;



                BuyOrder sale;
                foreach (SellOrder sell_order in SellOrders)
                {
                    // if we have sell order with the same price do the trasaction and add it into Transaction list
                    if (buy_price >= sell_order.Price)
                    {
                        if (sell_order.Size == buy_size)
                        {
                            // do full transacqion
                            // do not add to buyOrders list
                            // remove sellOrder from the sellOrders list
                            sale = new BuyOrder(buy_price, buy_size);
                            Transactions.Add(sale);
                            SellOrders.Remove(sell_order);
                            lastSale = buy_price;
                            break;
                            //                        market.Notify();
                        }
                        else if (sell_order.Size > buy_size)
                        {
                            // do partial transacqion
                            // do not add to buyOrders list
                            // update sellOrder size to the remaining size in sellOrders list
                            int remainingSize = sell_order.Size - buy_size;
                            sale = new BuyOrder(buy_price, buy_size);
                            Transactions.Add(sale);
                            sell_order.Size = remainingSize;
                            lastSale        = buy_price;
                            break;
                            //                           market.Notify();
                        }
                        else if (sell_order.Size < buy_size)
                        {
                            // do partial transacqion
                            // remove sellOrder from the sellOrders list
                            // add to buyOrders for the remaining size in buyOrders list
                            int remainingSize = buy_size - sell_order.Size;
                            sale = new BuyOrder(buy_price, sell_order.Size);
                            Transactions.Add(sale);
                            SellOrders.Remove(sell_order);

                            //BuyOrder buyOrder = new BuyOrder(buy_price, remainingSize);
                            //BuyOrders.Add(buyOrder);
                            //var SortedBuyOrders = BuyOrders.OrderByDescending(BuyOrder => BuyOrder.Price).ThenBy(BuyOrder => BuyOrder.TimeStamp).ToList();
                            //BuyOrders = SortedBuyOrders;

                            lastSale = buy_price;
                            addBuyOrder(buy_price, remainingSize);


                            break;
                            //                        market.Notify();
                        }
                    }
                    else
                    {
                        BuyOrder buyOrder = new BuyOrder(buy_price, buy_size);
                        BuyOrders.Add(buyOrder);
                        var SortedBuyOrders = BuyOrders.OrderByDescending(BuyOrder => BuyOrder.Price).ThenBy(BuyOrder => BuyOrder.TimeStamp).ToList();
                        BuyOrders = SortedBuyOrders;
                        break;
                        //                   market.Notify();
                    }
                }
            }
            else
            {
                BuyOrder buyOrder = new BuyOrder(buy_price, buy_size);
                BuyOrders.Add(buyOrder);
                var SortedBuyOrders = BuyOrders.OrderByDescending(BuyOrder => BuyOrder.Price).ThenBy(BuyOrder => BuyOrder.TimeStamp).ToList();
                BuyOrders = SortedBuyOrders;
            }
            //market.Notify();
        }