Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public IHttpActionResult GetPortfolioChartData(PortfolioChartDataQueryParam queryParams)
 {
     return(Ok(_tradeAccountService.GetPortfolioChartData(queryParams)));
 }