Ejemplo n.º 1
0
        private static async Task <List <FundStyleExposure> > GetFundStyleExposures(string fundCode, DateTime begin, DateTime end)
        {
            var exposures = DataDao.GetFundStyleExposures(fundCode, begin, end);

            if (exposures.IsNullOrEmpty())
            {
                Log.Information($"正在计算 {fundCode} {begin.ToString("yyyy-MM-dd")}~{end.ToString("yyyy-MM-dd")} 的风格暴露度...");
                exposures = await GetFundStyleExposures2(fundCode, begin, end);
            }
            else
            {
                var first = exposures.First();
                if (first.Date > begin)
                {
                    Log.Information($"正在计算 {fundCode} {begin.ToString("yyyy-MM-dd")}~{first.Date.AddDays(-1).ToString("yyyy-MM-dd")} 的风格暴露度...");
                    var ne = await GetFundStyleExposures2(fundCode, begin, first.Date.AddDays(-1));

                    if (ne.Any())
                    {
                        exposures.InsertRange(0, ne);
                    }
                }
                var last = exposures.Last();
                if (last.Date < end)
                {
                    Log.Information($"正在计算 {fundCode} {last.Date.AddDays(1).ToString("yyyy-MM-dd")}~{end.ToString("yyyy-MM-dd")} 的风格暴露度...");
                    var ne = await GetFundStyleExposures2(fundCode, last.Date.AddDays(1), end);

                    if (ne.Any())
                    {
                        exposures.AddRange(ne);
                    }
                }
            }

            return(exposures);
        }