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); }
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); }