private ChartDataVm.DataSet GetPortfolioOpenPositionsChartData(PortfolioChartDataQueryParam queryParams) { var result = new ChartDataVm.DataSet(); var accountId = _tradeAccountRepository.Query() .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id; var query = _tradeAccountRepository.QueryTradeNav(); var periods = queryParams.Periods.ToPeriodList().ToList(); try { periods.ForEach(period => { var value = query.Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .Sum(nav => (decimal?)nav.StockLong + (decimal?)nav.StockShort + (decimal?)nav.OptionsLong + (decimal?)nav.OptionsShort + (decimal?)nav.CommoditiesLong + (decimal?)nav.CommoditiesShort) ?? 0; result.Data.Add(Math.Abs(value)); }); } catch (Exception e) { Console.WriteLine(e); } return(result); }
private ChartDataVm.DataSet GetPortfolioNavChartData(PortfolioChartDataQueryParam queryParams) { var result = new ChartDataVm.DataSet(); var accountId = _tradeAccountRepository.Query() .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id; var query = _tradeAccountRepository.QueryTradeNav(); var periods = queryParams.Periods.ToPeriodList().ToList(); periods.ForEach(period => { var value = query.Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .FirstOrDefault()?.Total; result.Data.Add(value ?? 0); }); return(result); }
public ChartDataVm GetPortfolioChartData(PortfolioChartDataQueryParam queryParams) { var result = ChartDataVm.Default; result.Labels = TradeUtils.GetPeriodLabels(queryParams.Periods.ToPeriodList()).ToArray(); switch (queryParams.ChartType) { case PortfolioChartType.Nav: result.Data = new[] { GetPortfolioNavChartData(queryParams) }; break; case PortfolioChartType.OpenPositions: result.Data = new[] { GetPortfolioOpenPositionsChartData(queryParams) }; break; case PortfolioChartType.TotalUn: result.Data = new[] { GetPortfolioTotalUnChartData(queryParams) }; break; } return(result); }
private ChartDataVm.DataSet GetPortfolioTotalUnChartData(PortfolioChartDataQueryParam queryParams) { var result = new ChartDataVm.DataSet(); var accountId = _tradeAccountRepository.Query() .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id; var query = _tradeAccountRepository.QueryOpenPositions(); var periods = queryParams.Periods.ToPeriodList().ToList(); periods.ForEach(period => { var value = query.Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .Sum(nav => (decimal?)nav.FifoPnlUnrealized) ?? 0; result.Data.Add(value); }); return(result); }
public IHttpActionResult GetPortfolioChartData(PortfolioChartDataQueryParam queryParams) { return(Ok(_tradeAccountService.GetPortfolioChartData(queryParams))); }