Ejemplo n.º 1
0
        //更新当前的盈利信息
        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);
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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();
        }