/// <summary> /// occurs when data feed sends a quote /// </summary> /// void OnDdfClient_NewQuote(object sender, Client.NewQuoteEventArgs e) { try { string aSymbolName; Instrument aType; Session session = e.Quote.Sessions[Sessions.Combined]; if (!TryParse(e.Quote.Symbol, out aSymbolName, out aType)) { return; } if (NewQuote != null && m_SubscribedSymbol.Contains(aSymbolName)) { SymbolItem aSymbol = new SymbolItem() { DataFeed = Name, Exchange = MarketName, Symbol = aSymbolName, Type = aType }; NewQuote(Name, this.TimeZoneInfo, new Tick { Symbol = aSymbol, //Date = e.Quote.Timestamp.ToUniversalTime(), Date = TimeZoneInfo.ConvertTimeToUtc(e.Quote.Timestamp, TimeZoneInfo), Price = session == null ? (e.Quote.Ask + e.Quote.Bid) / 2 : session.Last, Volume = session == null ? 0 : session.LastSize, Bid = e.Quote.Bid, BidSize = e.Quote.BidSize, Ask = e.Quote.Ask, AskSize = e.Quote.AskSize }); } if (NewLevel2 != null && m_Level2SubscribedSymbol.Contains(aSymbolName)) { SymbolItem aSymbol = new SymbolItem() { DataFeed = Name, Exchange = MarketName, Symbol = aSymbolName, Type = aType }; Level2Data level2 = new Level2Data(); level2.Symbol = aSymbol; level2.Asks = new Level2Item[] { new Level2Item { MarketMaker = Level1MarketMaker, Price = e.Quote.Ask, Quantity = (int)e.Quote.AskSize } }; level2.Bids = new Level2Item[] { new Level2Item { MarketMaker = Level1MarketMaker, Price = e.Quote.Bid, Quantity = (int)e.Quote.BidSize } }; NewLevel2(Name, this.TimeZoneInfo, level2); } } catch (Exception ex) { WriteToLog("---OnDdfClient_NewQuote Exception", ex); } }
private void ClientOnNewQuote(object sender, Client.NewQuoteEventArgs e) { SendOutMessage(new Level1ChangeMessage { SecurityId = new SecurityId { SecurityCode = e.Quote.Symbol, BoardCode = e.Quote.ExchangeCode }, ServerTime = e.Quote.Timestamp.ApplyTimeZone(TimeHelper.Est) } .TryAdd(Level1Fields.BestBidPrice, e.Quote.Bid.ToDecimal()) .TryAdd(Level1Fields.BestBidVolume, (decimal)e.Quote.BidSize) .TryAdd(Level1Fields.BestAskPrice, e.Quote.Ask.ToDecimal()) .TryAdd(Level1Fields.BestAskVolume, (decimal)e.Quote.AskSize)); }
private void _client_NewQuote(object sender, Client.NewQuoteEventArgs e) { NewQuote(e.Quote); }