diff --git a/YLErpDAL/Modules/EodModule/GLMSGreeksHandleService.cs b/YLErpDAL/Modules/EodModule/GLMSGreeksHandleService.cs index 3b39427e..b3c6c536 100644 --- a/YLErpDAL/Modules/EodModule/GLMSGreeksHandleService.cs +++ b/YLErpDAL/Modules/EodModule/GLMSGreeksHandleService.cs @@ -44,11 +44,7 @@ namespace YLErp.Modules.EodModule return; } - var eodPriceProvier = new EodPriceProvider(valueDate); - eodPriceProvier.Initialize(underlyingCodes); - underlyingCodes.ForEach(e => { - _pDic.Add(e, eodPriceProvier.GetPrice(e, SettlementTypeEnum.ClosePrice)); - }); + using var db = DbContextFactory.GetYLDbContext(); var conn = db.Database.GetDbConnection(); var bondsUmCodes = umDatas.Where(p => instrumentBondsTypes.Contains(p.UnderlyingInstrumentType)).Select(p => p.UnderlyingCode).Distinct().ToList(); @@ -141,8 +137,13 @@ namespace YLErp.Modules.EodModule } } - - + underlyingCodes.AddRange(bondsUmCodes); + underlyingCodes = underlyingCodes.Distinct().ToList(); + var eodPriceProvier = new EodPriceProvider(valueDate); + eodPriceProvier.Initialize(underlyingCodes); + underlyingCodes.ForEach(e => { + _pDic.Add(e, eodPriceProvier.GetPrice(e, SettlementTypeEnum.ClosePrice)); + }); } @@ -227,7 +228,8 @@ namespace YLErp.Modules.EodModule res.C = _cDic.GetValueOrDefault(underlyingCode, null); res.Ytm = _ytmDic.GetValueOrDefault(underlyingCode, null); } - // + var logger = LogFactory.GetLogger(); + logger.Info($"希腊字母计算参数 - UnderlyingCode:{underlyingCode}, InstrumentType:{underlyingInstrumentType}, P:{res.P}, D:{res.D}, C:{res.C}, Ytm:{res.Ytm}, CF:{res.CF}"); return res; } diff --git a/YLErpDAL/Modules/PricingModule/PriceCalcService.cs b/YLErpDAL/Modules/PricingModule/PriceCalcService.cs index c6240b8d..2cc07df1 100644 --- a/YLErpDAL/Modules/PricingModule/PriceCalcService.cs +++ b/YLErpDAL/Modules/PricingModule/PriceCalcService.cs @@ -502,6 +502,7 @@ namespace YLErp.Modules.PricingModule } } var greeksHandleService = new GLMSGreeksHandleService(); + foreach (var item in tdList) { var td = item.tdConv; @@ -530,7 +531,7 @@ namespace YLErp.Modules.PricingModule } } - + greeksHandleService.InitData(item.ValueDate ?? td.TradeDate ?? DateTime.Today, new List { td.UnderlyingCode }); greeksHandleService.Handle(td, calcResult, underlying); results.Add(new CalcOptionPriceResult