예제 #1
0
        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;
                }
            }
        }
예제 #2
0
        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;
                    }
                }
            });
        }
예제 #3
0
 public void Reset()
 {
     LogBookCollection.Clear();
 }