Beispiel #1
0
        private async Task GetRealTimeStockPosition(StockPosition position)
        {
            try
            {
                var stockInfo = await _stockInfoRepo.GetStockInfo(position.Ticker);

                if (stockInfo.Symbol != position.Ticker)
                {
                    stockInfo = await _stockProxy.GetStockInfo(position.Ticker);

                    await _stockInfoRepo.UpsertStockInfo(stockInfo);
                }

                var currentValue = stockInfo.Price * position.Shares;
                var gain         = currentValue - position.Cost;

                position.CurrentPrice       = stockInfo.Price;
                position.CurrentValue       = currentValue;
                position.PercentageOfChange = Math.Round(stockInfo.PercentageOfChange, 4);
                position.Change             = stockInfo.Change;
                position.Gain             = gain;
                position.PercentageOfGain = Math.Round(gain / position.Cost, 4);
            }
            catch (Exception e)
            {
                throw new Exception($"GetRealTimeStockPosition Fail | stock symbol = {position.Ticker}, exception = {e}");
            }
        }
Beispiel #2
0
 private void GivenStockInfoFromRepo(StockInfo stockInfo)
 {
     _stockInfoRepo.GetStockInfo(stockInfo.Symbol).Returns(stockInfo);
 }