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