private void OnQuote(Quote3Message msg)
        {
            Grid1.TableItems = msg.Orders.Select((o) => (ITableItem <ColumnParams>)(new Level2Item(o))).ToList();
            var order = msg.Orders.First((i) => i.LastUpdateDate == msg.LastUpdateDate);

            Grid1.SetRowBackColor(new Level2Item(order), Brushes.LightCoral);
        }
        public static Quote3Message CreateQuote3MessageByXML(string xml, IInstrument instr)
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(xml);
                var bankRate = CreateBankRateByXml(doc);
                var orders   = CreateOrdersByXML(doc.GetElementsByTagName(WMEXCHANGERQUERYS)[0].ChildNodes, instr);
                if (bankRate == BankRate.Empty || orders.Count == 0)
                {
                    return(null);
                }

                Quote3Message mess = new Quote3Message(bankRate.Direction, bankRate, orders)
                {
                    QuoteSource = QuoteSource.XML.ToString()
                };
                return(mess);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Example #3
0
        internal static List <Quote3Message> CreateQuote3MessageByWeb(string content, IInstrument instr)
        {
            List <IOrder> ordersStraight = new List <IOrder>();
            List <IOrder> ordersReverse  = new List <IOrder>();

            string[] orderlines = content.Split(OrderSeparator, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in orderlines)
            {
                IOrder order = null;
                try
                {
                    order = CreateOrderByWebLine(line, instr);
                }
                catch (Exception) {}

                if (order == null)
                {
                    continue;
                }

                if (order.Instrument.InstrumentName == instr.InstrumentName)
                {
                    ordersStraight.Add(order);
                }

                if (order.Instrument.InstrumentName == instr.OppositeInstrumentName)
                {
                    ordersReverse.Add(order);
                }
            }

            var quotes = new List <Quote3Message>();

            if (ordersStraight.Count == 0 || ordersReverse.Count == 0)
            {
                return(quotes);
            }

            Quote3Message messStr = new Quote3Message(instr.InstrumentName, BankRate.Empty, ordersStraight)
            {
                QuoteSource = QuoteSource.Web.ToString()
            };
            Quote3Message messRev = new Quote3Message(instr.OppositeInstrumentName, BankRate.Empty, ordersReverse)
            {
                QuoteSource = QuoteSource.Web.ToString()
            };

            if (messStr != null)
            {
                quotes.Add(messStr);
            }
            if (messRev != null)
            {
                quotes.Add(messRev);
            }

            return(quotes);
        }
Example #4
0
        public void AddQuote(Quote3Message quote)
        {
            if (_quotes.TryGetValue(quote.InstrumentName, out Dictionary <DateTime, Quote3Message> qs))
            {
                var lastQuote = qs.Values.LastOrDefault();
                if (quote.IsEqualQuotes(lastQuote) || lastQuote.LastUpdateDate > quote.LastUpdateDate)
                {
                    return;
                }
                bool isNew;
                lock (_quoteSyncObj)
                {
                    isNew = false;
                    if (!qs.ContainsKey(quote.LastUpdateDate))
                    {
                        isNew = true;
                        qs.Add(quote.LastUpdateDate, quote);
                    }
                    if (qs.Count > GetSizeQuoteCache(quote.InstrumentName))
                    {
                        qs.Remove(qs.First().Key);
                    }
                }

                if (isNew)
                {
                    OnNewQuoteEvent?.Invoke(quote);
                }

                return;
            }

            lock (_quoteSyncObj)
            {
                if (_quotes.ContainsKey(quote.InstrumentName))
                {
                    return;
                }

                var quotDict = new Dictionary <DateTime, Quote3Message>()
                {
                    { quote.LastUpdateDate, quote }
                };
                _quotes.Add(quote.InstrumentName, quotDict);
                OnNewQuoteEvent?.Invoke(quote);
            }
        }
Example #5
0
 private static void OnNewQuote(Quote3Message mess)
 {
 }