//更新当前的盈利信息 void UpdateProfit() { DataTable dsSelecteTbl = new DataTable(); dsSelecteTbl = GetAllSelfSelected().Tables[0]; foreach (DataRow drSelect in dsSelecteTbl.Rows) { SelfSelectedModel oModelSelf = SelfSelectedDAL.Instance.DataRowToModel(drSelect); EquityModel buymodel = GetFundEquityInfo.Instance.GetFormatedFundInfo(oModelSelf.Symbol, oModelSelf.BuyDate); oModelSelf.BuyPrice = float.Parse(buymodel.unitwork); //买入份额 double dBuyCount = oModelSelf.BuyQuant / oModelSelf.BuyPrice; if (oModelSelf.SaleDate == null) { oModelSelf.SaleDate = DateTime.Today; } EquityModel salemodel = GetFundEquityInfo.Instance.GetFormatedFundInfo(oModelSelf.Symbol, oModelSelf.SaleDate); oModelSelf.SalePrice = float.Parse(salemodel.unitwork); oModelSelf.CurQuant = dBuyCount * oModelSelf.SalePrice; oModelSelf.CurProfit = oModelSelf.CurQuant - oModelSelf.BuyQuant; SelfSelectedDAL.Instance.Update(oModelSelf); } }
public void MapStockEntityToEquityModel() { var stockEntity = new Stock { CommisionPercent = 0.005, Price = new decimal(92.13), Quantity = 11, StockType = StockType.Equity, Id = 2 }; var equityModel = new EquityModel() { Quantity = 11, Price = new decimal(92.13) }; var mappedStock = Mapper.Map <EquityModel>(stockEntity); Assert.True(mappedStock.IsDeepEqual(equityModel)); }
public void MapEquityModelToStockEntity() { var equityModel = new EquityModel() { Quantity = 1, Price = new decimal(15) }; var stockEntity = new Stock { CommisionPercent = 0.005, Price = new decimal(15), Quantity = 1, StockType = StockType.Equity }; var mappedEquityModel = Mapper.Map <Stock>(equityModel); Assert.True(mappedEquityModel.IsDeepEqual(stockEntity)); }
private void StepSchedule(DateTime start, DateTime end, EquityModel model, out DateTime[] dates, out bool[] isDivDate, out DiscreteLocalDividend[] dividends) { DiscreteLocalDividend[] stepDividends = model.Dividends.Where(div => start < div.Date && div.Date <= end) .OrderBy(div => div.Date) .ToArray(); var datesList = new List <DateTime>(); var isDivDateList = new List <bool>(); var dividendsList = new List <DiscreteLocalDividend>(); var previous = start; foreach (DiscreteLocalDividend div in stepDividends) { DateTime[] stepSchedule = ScheduleUtils.RawSchedule(previous, div.Date, mcConfig.McStep, true); datesList.AddRange(stepSchedule); if (stepSchedule.Length > 1) { dividendsList.AddRange(stepSchedule.Take(stepSchedule.Length - 1).Map(DiscreteLocalDividend.ZeroDiv)); isDivDateList.AddRange(Enumerable.Repeat(false, stepSchedule.Length - 1)); } dividendsList.Add(div); isDivDateList.Add(true); previous = div.Date; } if (previous < end) { DateTime[] stepSchedule = ScheduleUtils.RawSchedule(previous, end, mcConfig.McStep, true); datesList.AddRange(stepSchedule); dividendsList.AddRange(stepSchedule.Take(stepSchedule.Length).Map(DiscreteLocalDividend.ZeroDiv)); isDivDateList.AddRange(Enumerable.Repeat(false, stepSchedule.Length)); } dates = datesList.ToArray(); isDivDate = isDivDateList.ToArray(); dividends = dividendsList.ToArray(); }