/// <summary> /// iv. Calculate Volume Weighted Stock Price based on trades in past 5 minutes /// </summary> /// <param name="symbol"></param> /// <returns></returns> public OperationResult <double> CalculateVolumeWeightedPrice(string symbol) { try { if (string.IsNullOrWhiteSpace(symbol)) { throw new ArgumentException("symbol is empty"); } List <Trade> trades = _tradeRepository.GetLast5MinutesTradesBySymbol(symbol, DateTime.Now); if (trades == null || !trades.Any()) { throw new ArgumentException("no trades to calculate"); } return(OperationResult <double> .Ok(Calculator.CalculateVolumeWeightedPrice(trades))); } catch (Exception ex) { return(OperationResult <double> .Fail(ex.Message)); } }