private void CancelBuyOrder(BuyOrder order) { order.OrderAccount.DepositInto(BalanceAccount, order.OrderAccount.Balance); lock (BuyOrders) { BuyOrders.Remove(order); } Updated?.Invoke(this, this); }
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); } }
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); }
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); }
private void RemoveBuy(BuyOrder order) { _buyOrdersToBeRemoved.Add(order); }