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; } }
TradePaging ITradeService.GetAll(int page, int size, int tradeId, int level) { return(_tradeRepository.GetAll(page, size, tradeId, level)); }
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()); }