Esempio n. 1
0
        public Common.Entities.Deal MakeDeal(UnitOfWork unit, Common.Entities.Order order, DateTime dateTime, decimal price)
        {
            Random rnd = new Random();

            Common.Entities.Deal deal = new Common.Entities.Deal()
            {
                Number      = rnd.Next(7000, 900000),
                OrderNumber = order.Number,
                Code        = order.Code,
                Time        = dateTime.ToString("HH:mm"),
                Date        = dateTime.ToString("dd:MM:yyyy"),
                Operation   = order.OrderOperation.ToString(),
                Account     = order.Account,
                Price       = price,
                Count       = order.Count,
                Volume      = price * order.Count,
                Class       = order.Class
            };

            unit.DealRepository.Create(deal);

            MoneyLimit money = unit.MoneyLimitRepository.Query <MoneyLimit>(m => m.Type == "T2").Single();

            if (order.OrderOperation == OrderOperationEnum.Buy)
            {
                money.Available -= order.Count * price;
            }

            if (order.OrderOperation == OrderOperationEnum.Sell)
            {
                money.Available += order.Count * price;
            }

            return(deal);
        }
Esempio n. 2
0
        public Position ApplyOrder(UnitOfWork unit, Order order, Settings settings)
        {
            order.OrderState = OrderStateEnum.Executed;

            Position pos = this.GetPosition(unit, order.Code, order.Account, order.Client);

            decimal price = this.GetPrice(unit, order.Code, settings.TestDateTime);

            Common.Entities.Deal deal = this.MakeDeal(unit, order, settings.TestDateTime, price);

            pos.PurchasePrice = price;

            return(pos);
        }