private void XmlConnector_OnSendNewTrades(string data) { if (LogBookCollection.Count == 0) { return; } List <TradeItem> list; using (var stringReader = new StringReader(data)) { list = (from x in (List <Trade>)_tradeSerializer.Deserialize(stringReader) where x.Board == Board && x.Seccode == Seccode select new TradeItem(x.Seccode, x.Price, x.Quantity, DateTime.Parse(x.Time).ToString("hh:mm:ss.fff"), x.Buysell, x.Quantity.ToString())).ToList(); stringReader.Close(); } foreach (var tradeItem in list) { var log = LogBookCollection.FirstOrDefault(l => l.Price == tradeItem.Price); if (log == null) { var val = new LogBookItem(this) { Price = tradeItem.Price, Buy = 0, Sell = 0, MaxSize = 0, CurrentSize = 0, MaxBuy = 0, MaxSell = 0, //Color = tradeItem.Buysell == "B" ? Colors.Green : Color.FromRgb(255, 82, 82), //Size = Size, //Coef = Coef }; if (tradeItem.Buysell == "B") { val.Buy = tradeItem.Quantity; } else { val.Sell = tradeItem.Quantity; } } else if (tradeItem.Buysell == "B") { log.Buy += tradeItem.Quantity; } else { log.Sell += tradeItem.Quantity; } } }
private void XmlConnector_OnSendNewQuotes(string data) { if (_level2Items.Count == 0) { return; } List <Level2Item> list; using (var reader = new StringReader(data)) { var quotes = ((List <Quote>) _serializer.Deserialize(reader)).Where(item => item.Board == Board && item.Seccode == Seccode) .ToList(); if (quotes.Count == 0) { return; } list = quotes.Where(item => item.Buy == 0) .Select( item => new Level2Item { BuySell = "sell", Quantity = item.Sell, Price = item.Price }) .OrderByDescending(item => item.Price) .Take(20) .Union(quotes.Where(item => item.Sell == 0) .Select( item => new Level2Item { BuySell = "buy", Quantity = item.Buy, Price = item.Price }) .OrderByDescending(item => item.Price) .Take(20)) .ToList(); } double bestBuy = 0; try { bestBuy = _level2Items.Where(l2 => l2.BuySell == "buy").Max(l2 => l2.Price); } catch { } Dispatcher.Invoke(() => { if (_logBookCollection.Count == 0) { foreach (var item in _level2Items) { LogBookCollection.Add(new LogBookItem(this) { Price = item.Price, CurrentSize = item.Quantity, MaxSize = item.Quantity, //Buysell = item.BuySell, Buy = 0, Sell = 0, MaxBuy = item.BuySell == "buy" ? item.Quantity : 0, MaxSell = item.BuySell == "sell" ? item.Quantity : 0, //Color = item.BuySell == "buy" ? Colors.Green : Color.FromRgb(255, 82, 82), //Size = Size, //Coef = Coef }); BestBuy = bestBuy; } } else { foreach (var item in list) { var found = _logBookCollection.FirstOrDefault(x => x.Price == item.Price); if (found != null) { found.CurrentSize = item.Quantity; if (found.MaxSize < item.Quantity) { found.MaxSize = item.Quantity; } if (item.BuySell == "buy") { if (item.Quantity > found.MaxBuy) { found.MaxBuy = item.Quantity; } } else { if (item.Quantity > found.MaxSell) { found.MaxSell = item.Quantity; } } found.CurrentSize = item.Quantity; if (found.CurrentSize > found.MaxSize) { found.MaxSize = found.CurrentSize; } } else { LogBookCollection.Add(new LogBookItem(this) { Price = item.Price, CurrentSize = item.Quantity, MaxSize = item.Quantity, //Buysell = item.BuySell, Buy = 0, Sell = 0, MaxBuy = item.BuySell == "buy" ? item.Quantity : 0, MaxSell = item.BuySell == "sell" ? item.Quantity : 0, //Color = item.BuySell == "buy" ? Colors.Green : Color.FromRgb(255, 82, 82) }); } BestBuy = bestBuy; } } }); }
public void Reset() { LogBookCollection.Clear(); }