Пример #1
0
 private void CancelBuyOrder(BuyOrder order)
 {
     order.OrderAccount.DepositInto(BalanceAccount, order.OrderAccount.Balance);
     lock (BuyOrders)
     {
         BuyOrders.Remove(order);
     }
     Updated?.Invoke(this, this);
 }
Пример #2
0
 public void Buy(BuyOrder order)
 {
     lock (_buyOrders)
     {
         if (_buyOrders.ContainsKey(order.SecurityName))
         {
             _buyOrders[order.SecurityName].Add(order);
         }
         else
         {
             _buyOrders.Add(order.SecurityName, new List <BuyOrder> {
                 order
             });
         }
         order.AddCancelAction(RemoveBuy);
         order.AddExecuteAction(RemoveBuy);
     }
 }
Пример #3
0
        private void ExecuteBuyOrder(BuyOrder order)
        {
            Security security;

            if (!Securities.TryGetValue(order.SecurityName, out security))
            {
                Securities.Add(order.SecurityName, order.Security);
            }
            else
            {
                Securities[order.SecurityName].Merge(order.Security);
            }
            lock (BuyOrders)
            {
                BuyOrders.Remove(order);
            }
            Updated?.Invoke(this, this);
        }
Пример #4
0
        public BuyOrder CreateBuyOrder(string name, ulong quantity, ulong pricePerItem)
        {
            var orderAccount = new Account(0);

            if (!BalanceAccount.DepositInto(orderAccount, quantity * pricePerItem))
            {
                return(null);
            }
            var order = new BuyOrder(name, pricePerItem, quantity, orderAccount);

            order.AddCancelAction(CancelBuyOrder);
            order.AddExecuteAction(ExecuteBuyOrder);
            lock (BuyOrders)
            {
                BuyOrders.Add(order);
            }
            Updated?.Invoke(this, this);
            return(order);
        }
Пример #5
0
 private void RemoveBuy(BuyOrder order)
 {
     _buyOrdersToBeRemoved.Add(order);
 }