public void OnMessage(FixSpec.MassQuote message, SessionID sessionId) { decimal?bid = null, ask = null; FixSpec.MassQuote.NoQuoteSetsGroup quoteSetsGroup = new FixSpec.MassQuote.NoQuoteSetsGroup(); message.GetGroup(1, quoteSetsGroup); NoQuoteEntries noQuoteEntries = new NoQuoteEntries(); QuoteSetID quoteSetId = new QuoteSetID(); quoteSetsGroup.Get(noQuoteEntries); quoteSetsGroup.Get(quoteSetId); FixSpec.MassQuote.NoQuoteSetsGroup.NoQuoteEntriesGroup quoteEntriesGroup = new FixSpec.MassQuote.NoQuoteSetsGroup.NoQuoteEntriesGroup(); quoteSetsGroup.GetGroup(1, quoteEntriesGroup); if (quoteEntriesGroup.IsSetField(new BidSpotRate())) { bid = quoteEntriesGroup.GetField(new BidSpotRate()).getValue(); } if (quoteEntriesGroup.IsSetField(new OfferSpotRate())) { ask = quoteEntriesGroup.GetField(new OfferSpotRate()).getValue(); } var currencyCode = quoteSetId.Obj; Console.WriteLine($"{currencyCode} : bid -> {bid} | ask -> {ask} "); }
public void OnMessage(FixSpec.MarketDataRequest message, SessionID sessionId) { ResolveMarketDataRequest(message, out Symbol symbol, out char bidAskObj, out string currencyCodeObj); //prepare MassQuote response CalculateNewPrice(currencyCodeObj, out decimal bidPrice, out decimal askPrice); FixSpec.MassQuote massQuote = new FixSpec.MassQuote(new QuoteID(Guid.NewGuid().ToString("N"))); FixSpec.MassQuote.NoQuoteSetsGroup quoteSetsGroup = new FixSpec.MassQuote.NoQuoteSetsGroup(); NoQuoteEntries noQuoteEntries = new NoQuoteEntries(1); quoteSetsGroup.Set(noQuoteEntries); QuoteSetID quoteSetId = new QuoteSetID(symbol.Obj); quoteSetsGroup.Set(quoteSetId); FixSpec.MassQuote.NoQuoteSetsGroup.NoQuoteEntriesGroup quoteEntriesGroup = new FixSpec.MassQuote.NoQuoteSetsGroup.NoQuoteEntriesGroup(); quoteEntriesGroup.QuoteEntryID = new QuoteEntryID(currencyCodeObj); if (bidAskObj == MDEntryType.BID) { quoteEntriesGroup.SetField(new BidSpotRate(bidPrice)); } if (bidAskObj == MDEntryType.OFFER) { quoteEntriesGroup.SetField(new OfferSpotRate(askPrice)); } quoteSetsGroup.AddGroup(quoteEntriesGroup); massQuote.AddGroup(quoteSetsGroup); Session.LookupSession(sessionId).Send(massQuote); Console.WriteLine($"{currencyCodeObj} : bid -> {bidPrice} | ask -> {askPrice} "); }