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);
     }
 }
Exemple #2
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);
        }