コード例 #1
0
        public void UpdatePrice()
        {
            Random rnd = new Random();
            External_DatabaseEntities db = new External_DatabaseEntities();

            foreach (var item in db.StockDatas)
            {
                int sign = rnd.Next(1, 3);
                switch (sign)
                {
                case 1:
                    item.MarketPrice += rnd.Next(1, 20);
                    break;

                case 2:
                    if (item.MarketPrice > 20)
                    {
                        item.MarketPrice -= rnd.Next(1, 20);
                    }
                    break;

                default:
                    item.MarketPrice += rnd.Next(1, 20);
                    break;
                }
            }
            db.SaveChanges();
        }
コード例 #2
0
        public void UpdateServiceRequestSell(long traderID, long blockID, long qty)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();

            var query =
                from order in db.ServiceRequests
                where order.TraderID == traderID && order.BlockID == blockID
                select order;

            String symbol = "";

            foreach (ServiceRequest order in query)
            {
                order.QtyAllocated += qty;
                symbol              = order.Symbol;
            }



            try
            {
                db.SaveChanges();
                UpdatePartialFilled(traderID, blockID, symbol);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
コード例 #3
0
        public Boolean EnterRequestToDatabase(Request request)
        {
            try {
                External_DatabaseEntities db        = new External_DatabaseEntities();
                ServiceRequest            requestdp = new ServiceRequest();
                //requestdp = request;
                //requestdp.StatusID = db.Status.Where(x => x.StatusName == "Filled").Select(x => x.StatusID).First();
                //requestdp.Symbol = db.StockDatas.Where(x => x.Symbol == "RIL").Select(x => x.Symbol).First();

                //requestdp.Side = "Sell";



                //requestdp.Type = "Market";
                requestdp = ConvertRequest(request);
                //requestdp.TimeStamp = DateTime.Today.ToUniversalTime();
                requestdp.TimeStamp = DateTime.Now;
                requestdp.Status    = db.Status.First(c => c.StatusID == 2);

                requestdp.StockData = db.StockDatas.First(c => c.Symbol == request.Symbol);

                //List<Status> status = Convert.ToDouble(list.Where(s => s.StatusID == symbol).Select(s => s.MarketPrice));
                db.ServiceRequests.Add(requestdp);
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(false);
            }
            return(true);
        }
コード例 #4
0
        public void UpdatePartialFilled(long traderID, long blockID, String symbol)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();


            try
            {
                var queryService =
                    from ord1 in db.ServiceRequests
                    where (ord1.QtyRequested > ord1.QtyAllocated) && (ord1.Side == "Buy") && (ord1.Symbol == symbol)
                    select ord1;

                var queryStock =
                    from ord2 in db.StockDatas
                    where ord2.Symbol == symbol
                    select ord2;

                long availableQuantity = 0;
                long addedQuantity     = 0;

                var order2 = queryService.First();
                var order1 = queryStock.First();


                //foreach (ServiceRequest order2 in queryService)
                //{
                //    foreach (StockData order1 in queryStock)
                //    {
                availableQuantity = order1.QuantityAvailable;

                if (availableQuantity > (order2.QtyRequested - order2.QtyAllocated))
                {
                    addedQuantity             = order2.QtyRequested - order2.QtyAllocated;
                    order2.QtyAllocated       = order2.QtyRequested;
                    order1.QuantityAvailable -= addedQuantity;
                }
                else
                {
                    addedQuantity             = availableQuantity;
                    order2.QtyAllocated      += availableQuantity;
                    order1.QuantityAvailable -= addedQuantity;
                }

                //    }
                //}



                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            // and send the response to the trader service based on their trader ID But in this itteration Internal(Trader Team) is not accepting excecuted table.
        }
コード例 #5
0
        public void CreateTransaction(Transaction T)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();

            T.Status    = db.Status.First(c => c.StatusID == T.StatusID);
            T.StockData = db.StockDatas.First(c => c.Symbol == T.Symbol);

            db.Transactions.Add(T);
            db.SaveChanges();
        }
コード例 #6
0
        public ResponsePM GetSymbolData(string symbol)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();
            var    list   = db.StockDatas.ToList();
            var    price1 = list.Where(s => s.Symbol == symbol).Select(s => s.MarketPrice);
            int    price  = price1.First();
            var    name1  = list.Where(s => s.Symbol == symbol).Select(s => s.Name);
            string name   = name1.First();

            ResponsePM obj = new ResponsePM();

            obj.Name   = name;
            obj.Price  = price;
            obj.Symbol = symbol;

            return(obj);
        }
コード例 #7
0
        public List <ResponsePM> GetWholeData()
        {
            External_DatabaseEntities dbObj = new External_DatabaseEntities();
            var stockList             = dbObj.StockDatas.ToList();
            List <ResponsePM> listObj = new List <ResponsePM>();

            foreach (var stock in stockList)
            {
                ResponsePM responseObj = new ResponsePM();
                responseObj.Symbol = stock.Symbol;
                responseObj.Name   = stock.Name;
                responseObj.Price  = stock.MarketPrice;
                listObj.Add(responseObj);
            }


            return(listObj);
        }
コード例 #8
0
        //public List<Double> ExchangeBuy(String
        //    symbol, long qty)
        //{
        //    External_DatabaseEntities db = new External_DatabaseEntities();
        //    var list = db.StockDatas.ToList();
        //    double price = Convert.ToDouble(list.Where(s => s.Symbol == symbol).Select(s => s.MarketPrice));
        //    double quantity = Convert.ToDouble(list.Where(s => s.Symbol == symbol).Select(s => s.QuantityAvailable));
        //    List<Double> listSend=new List<double>();
        //    listSend[0] = price;
        //    listSend[1] = quantity;

        //    return listSend;
        //}


        public long ExchangeBuy(String symbol, long qty)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();

            long alloted = 0;

            var query =
                from ord in db.StockDatas
                where ord.Symbol == symbol
                select ord;

            //StockData order = new StockData();

            foreach (StockData order in query)
            {
                if (qty > order.QuantityAvailable)
                {
                    alloted = order.QuantityAvailable;
                    order.QuantityAvailable = 0;
                }
                else
                {
                    alloted = qty;
                    order.QuantityAvailable -= qty;
                }
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(alloted);
        }
コード例 #9
0
        public void UpdateServiceRequestBuy(long traderID, long blockID, long qty)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();

            var query =
                from order in db.ServiceRequests
                where order.TraderID == traderID && order.BlockID == blockID
                select order;

            foreach (ServiceRequest order in query)
            {
                order.QtyAllocated += qty;
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
コード例 #10
0
        //public void ExchangeSell(String symbol,long qty)
        //{
        //    External_DatabaseEntities db = new External_DatabaseEntities();
        //    var list = db.StockDatas.ToList();
        //    double price = Convert.ToInt32(list.Where(s => s.Symbol == symbol).Select(s => s.MarketPrice));

        //    //return price;
        //}


        public void ExchangeSell(String symbol, long qty)
        {
            External_DatabaseEntities db = new External_DatabaseEntities();

            var query =
                from ord in db.StockDatas
                where ord.Symbol == symbol
                select ord;

            foreach (StockData ord in query)
            {
                ord.QuantityAvailable += (int)qty;
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }