Exemple #1
0
        public async Task <ActionResult> AjaxTradesData()
        {
            try
            {
                var trades = await _tradeRepository.GetAll();

                if (trades != null)
                {
                    var trs = _mapper.Map <List <TradeDto>, List <TradeVM> >(trades);
                    if (trs != null)
                    {
                        return(Json(new
                        {
                            maxPrice = trs.Max(t => t.Price),
                            error = false,
                            trades = JsonConvert.SerializeObject(trs.Select(p => new
                            {
                                transactionTime = p.TransactionTime,
                                price = p.Price,
                                volume = p.Volume,
                                sellerName = p.SellerName,
                                customerName = p.CustomerName
                            })
                                                                 .OrderBy(p => p.transactionTime)
                                                                 .ToArray())
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception e)
            {
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(Json(new { error = true, message = e.Message }, JsonRequestBehavior.AllowGet));
            }

            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(Json(new { error = true }, JsonRequestBehavior.AllowGet));
        }
        public double CalculateVolumeWeightedStockPrice(string stockSymbol, int minutes = 15)
        {
            double volumeWeightedStockPrice = 0,
                   totalTradePrice          = 0,
                   totalQuantity            = 0;

            minutes *= -1;
            var dt = DateTime.Now;

            TimeSpan duration = TimeSpan.FromMinutes(15);

            var endTime   = DateTime.UtcNow;
            var startTime = endTime.Subtract(duration);

            try {
                //var stockTrades = _tradeRepository.FindByTimeStamp(stockSymbol, DateTime.Now.AddSeconds(-1 * StockPriceDurationPeriod));
                var stockTrades1 = _tradeRepository.GetAll().Where(x => x.Stock.Symbol.Equals(stockSymbol));
                //List<ITrade> stockTrades = stockTrades1.Where(x => x.TimeStamp >= DateTime.Now.AddSeconds(-1 * StockPriceDurationPeriod)).ToList();
                List <ITrade> stockTrades = stockTrades1.Where(x => x.TimeStamp >= startTime && x.TimeStamp <= endTime).ToList();

                if (stockTrades != null)
                {
                    stockTrades.ToList().ForEach(trade =>
                    {
                        totalTradePrice += (trade.Price * trade.QuantityOfShares);
                        totalQuantity   += trade.QuantityOfShares;
                    });

                    if (totalQuantity > 0)
                    {
                        volumeWeightedStockPrice = totalTradePrice / totalQuantity;
                    }
                }

                return(volumeWeightedStockPrice);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #3
0
 TradePaging ITradeService.GetAll(int page, int size, int tradeId, int level)
 {
     return(_tradeRepository.GetAll(page, size, tradeId, level));
 }
Exemple #4
0
 public TradeResource[] GetAll()
 {
     return(_tradeRepo.GetAll().Where(x => x.TradeId > 0).Select(x => _mapper.Map <TradeResource>(x)).ToArray());
 }
        public void ReplayOrderBook_IfScenario2IsExecuted_VerifyTheWholeSystemState()
        {
            _applicationContext = ContextRegistry.GetContext();
            Scenario2();
            MarketController  marketController     = (MarketController)_applicationContext["MarketController"];
            IHttpActionResult marketDataHttpResult = marketController.GetOrderBook("XBTUSD");

            OkNegotiatedContentResult <object> okResponseMessage =
                (OkNegotiatedContentResult <object>)marketDataHttpResult;
            OrderBookRepresentation representation = okResponseMessage.Content as OrderBookRepresentation;
            Tuple <OrderRepresentationList, OrderRepresentationList> orderBooks = new Tuple <OrderRepresentationList, OrderRepresentationList>(representation.Bids, representation.Asks);

            marketDataHttpResult = marketController.GetDepth("XBTUSD");
            OkNegotiatedContentResult <object> okResponseMessageDepth = (OkNegotiatedContentResult <object>)marketDataHttpResult;
            DepthTupleRepresentation           beforeReplayDepth      = okResponseMessageDepth.Content as DepthTupleRepresentation;

            IOrderRepository      orderRepository = (IOrderRepository)_applicationContext["OrderRepository"];
            List <OrderReadModel> before          = orderRepository.GetAllOrderOfTrader("5555");

            before = before.Concat(orderRepository.GetAllOrderOfTrader("4444")).ToList();

            ITradeRepository       tradeRepository    = (ITradeRepository)_applicationContext["TradeRepository"];
            IList <TradeReadModel> beforeReplayTrades = tradeRepository.GetAll();
            IList <object>         beforeReplayEvents = outputEventStore.GetAllEvents();

            marketDataHttpResult = marketController.GetBbo("XBTUSD");
            OkNegotiatedContentResult <BBORepresentation> okResponseMessageBboBefore = (OkNegotiatedContentResult <BBORepresentation>)marketDataHttpResult;

            //down the exchange, make new exchange and reply
            CrashAndInitializeAgainWithSnapshot();

            marketController     = (MarketController)_applicationContext["MarketController"];
            marketDataHttpResult = marketController.GetOrderBook("XBTUSD");

            okResponseMessage =
                (OkNegotiatedContentResult <object>)marketDataHttpResult;
            representation = okResponseMessage.Content as OrderBookRepresentation;
            Tuple <OrderRepresentationList, OrderRepresentationList> orderBook1 = new Tuple <OrderRepresentationList, OrderRepresentationList>(representation.Bids, representation.Asks);

            //verify orderbook state
            VerifyOrderBookStateAfterReplay(orderBooks, orderBook1);

            List <OrderReadModel> after = orderRepository.GetAllOrderOfTrader("5555");

            after = after.Concat(orderRepository.GetAllOrderOfTrader("4444")).ToList();
            //verify order table in database
            VerifyDatabaseStateAfterReplay(before, after);
            IList <TradeReadModel> afterReplayTrades = tradeRepository.GetAll();

            //verify trades table in database
            VerifyDatabaseStateAfterReplay(beforeReplayTrades, afterReplayTrades);
            IList <object> afterReplayEvents = outputEventStore.GetAllEvents();

            //verify event store state
            VerifyEventStoreStateAfterReplay(beforeReplayEvents, afterReplayEvents);

            marketDataHttpResult   = marketController.GetDepth("XBTUSD");
            okResponseMessageDepth = (OkNegotiatedContentResult <object>)marketDataHttpResult;
            DepthTupleRepresentation afterReplayDepth = okResponseMessageDepth.Content as DepthTupleRepresentation;

            VerifyDepthBeforeAndAfterReplay(beforeReplayDepth, afterReplayDepth);

            marketDataHttpResult = marketController.GetBbo("XBTUSD");
            OkNegotiatedContentResult <BBORepresentation> okResponseMessageBboAfter = (OkNegotiatedContentResult <BBORepresentation>)marketDataHttpResult;

            VerifyBboAfterReplay(okResponseMessageBboBefore.Content, okResponseMessageBboAfter.Content);
        }
 // find
 public TradeDTO[] FindAll()
 {
     return(_tradeRepository.GetAll()
            .Where(x => x.TradeId > 0)
            .Select(x => _mapper.Map <TradeDTO>(x)).ToArray());
 }