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); } }
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); }
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); } }
private static void OnNewQuote(Quote3Message mess) { }