예제 #1
0
 public void Sell(SellOrder order)
 {
     lock (_sellOrders)
     {
         if (_sellOrders.ContainsKey(order.ForSale.Name))
         {
             _sellOrders[order.ForSale.Name].Add(order);
         }
         else
         {
             _sellOrders.Add(order.ForSale.Name, new List <SellOrder> {
                 order
             });
         }
         order.AddCancelAction(RemoveSell);
         order.AddExecuteAction(RemoveSell);
     }
 }
예제 #2
0
        private void CancelSellOrder(SellOrder order)
        {
            Security security;

            if (!Securities.TryGetValue(order.SecurityName, out security))
            {
                Securities.Add(order.SecurityName, order.ForSale);
            }
            else
            {
                Securities[order.SecurityName].Merge(order.ForSale);
            }
            lock (SellOrders)
            {
                SellOrders.Remove(order);
            }
            Updated?.Invoke(this, this);
        }
예제 #3
0
 private void RemoveSell(SellOrder order)
 {
     _sellOrdersToBeRemoved.Add(order);
 }