Example #1
0
        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} ");
        }
Example #2
0
        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} ");
        }