Example #1
0
        private void OnReceived(RealtimeReceived receivedMessage)
        {
            var order = new BidAskOrder();

            order.Id    = receivedMessage.OrderId;
            order.Price = receivedMessage.Price;
            order.Size  = receivedMessage.Size;

            lock (_spreadLock)
            {
                if (receivedMessage.Side == "buy")
                {
                    lock (_bidLock)
                    {
                        _buys.Add(order);
                        Buys = _buys.ToList();
                    }
                }

                else if (receivedMessage.Side == "sell")
                {
                    lock (_askLock)
                    {
                        _sells.Add(order);
                        Sells = _sells.ToList();
                    }
                }
            }
        }
        private void OnOpen(object sender, RealtimeOpen open)
        {
            var order = new BidAskOrder();

            order.Id    = open.OrderId;
            order.Price = open.Price.Value;
            order.Size  = open.RemainingSize;
            AddOrder(order: order, side: open.Side);
        }
 private async void OnOpen(object sender, RealtimeOpen open)
 {
     if (await checkSequenceNumber(open.Sequence))
     {
         System.Windows.Application.Current.Dispatcher.Invoke(
             System.Windows.Threading.DispatcherPriority.Background,
             new Action(() =>
         {                   // change to UI thread
             var order   = new BidAskOrder();
             order.Id    = open.OrderId;
             order.Price = open.Price.Value;
             order.Size  = open.RemainingSize;
             AddOrder(order: order, side: open.Side);
         }));
     }
 }
        private void AddOrder(BidAskOrder order, Side side)
        {
            var list = GetOrderList(side);

            lock (list.Item1)
            {
                list.Item2.TryGetValue(order.Price, out var linkedlist);
                if (linkedlist == null)
                {
                    linkedlist = new ObservableLinkedList <BidAskOrder>();
                    list.Item2.Add(order.Price, linkedlist);
                }

                linkedlist.AddLast(order);
                _ordersByID[order.Id] = order;
            }
            NotifyPropertyChanged("BestBuy");
            NotifyPropertyChanged("BestSell");
            NotifyPropertyChanged("Spread");
        }