Exemple #1
0
        public void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh msg, SessionID s)
        {
            _seen.Add(msg.Symbol.getValue());

            if (msg.Symbol.getValue() == DebugSymbol)
            {
                for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
                {
                    var item = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
                    msg.GetGroup(idx + 1, item);
                    Console.WriteLine($"Received MarketDataSnapshotFullRefresh for {msg.Symbol.getValue()} with {msg.NoMDEntries.getValue()} items (lag: {(DateTime.UtcNow - msg.Header.GetDateTime(52)).TotalMilliseconds} / {(DateTime.UtcNow - item.MDEntryDate.getValue().Add(item.MDEntryTime.getValue().TimeOfDay)).TotalMilliseconds}).");
                    break;
                }
            }
            return;

            //for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            //{
            //    var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
            //    msg.GetGroup(idx + 1, level);
            //    Console.WriteLine($"{level.MDEntryType} @ {msg.Symbol}:");
            //    Console.WriteLine($" Date: {level.MDEntryDate}");
            //    Console.WriteLine($" Time: {level.MDEntryTime}");
            //    Console.WriteLine($" Px: {level.MDEntryPx}");
            //    Console.WriteLine($" Size: {level.MDEntrySize}");
            //}

            Console.WriteLine("BIDS:");
            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, level);
                if (level.MDEntryType.getValue() == MDEntryType.OFFER)
                {
                    continue;
                }
                Console.WriteLine($"P {level.MDEntryPx} @ S {level.MDEntrySize}");
            }

            Console.WriteLine("ASKS:");
            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, level);
                if (level.MDEntryType.getValue() == MDEntryType.BID)
                {
                    continue;
                }
                Console.WriteLine($"P {level.MDEntryPx} @ S {level.MDEntrySize}");
            }
        }
Exemple #2
0
 public void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh msg,
                       SessionID s)
 {
     for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
     {
         var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
         msg.GetGroup(idx + 1, level);
         Console.WriteLine($"Orderbook {level.MDEntryType} @ {msg.Symbol}:");
         Console.WriteLine($" Date: {level.MDEntryDate}");
         Console.WriteLine($" Time: {level.MDEntryTime}");
         Console.WriteLine($" Px: {level.MDEntryPx}");
         Console.WriteLine($" Size: {level.MDEntrySize}");
     }
 }
        public void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh marketDataSnapshot, SessionID session)
        {
            MarketPrice marketPrice = new MarketPrice
            {
                Symbol = marketDataSnapshot.Symbol.getValue()
            };
            var nomdentries = marketDataSnapshot.NoMDEntries;
            // message.GetGroup(1, noMdEntries);
            var grp = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();

            for (int i = 1; i <= nomdentries.getValue(); i++)
            {
                grp = (QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup)marketDataSnapshot.GetGroup(i, grp);

                //	var grp = marketDataSnapshot.GetGroup(i, new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup()) as QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup;
                MDEntryType priceType = grp.Get(new MDEntryType());
                MDEntryPx   mdEntryPx = grp.Get(new MDEntryPx());
                if (priceType.getValue() == MDEntryType.BID)
                {
                    marketPrice.Bid = mdEntryPx.getValue();
                }
                else if (priceType.getValue() == MDEntryType.OFFER)
                {
                    marketPrice.Offer = mdEntryPx.getValue();
                }
                else if (priceType.getValue() == MDEntryType.TRADE)
                {
                    marketPrice.TradedPrice = mdEntryPx.getValue();
                }
                else if (priceType.getValue() == MDEntryType.TRADING_SESSION_LOW_PRICE)
                {
                    marketPrice.LowPx = mdEntryPx.getValue();
                }
                else if (priceType.getValue() == MDEntryType.TRADING_SESSION_HIGH_PRICE)
                {
                    marketPrice.HighPx = mdEntryPx.getValue();
                }
            }

            if (OnMarketPrice != null)
            {
                OnMarketPrice(marketPrice);
            }
        }
        public void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh msg, SessionID s)
        {
            Console.WriteLine($"Received MarketDataSnapshotFullRefresh for {msg.Symbol.getValue()} with {msg.NoMDEntries.getValue()} items.");

            //for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            //{
            //    var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
            //    msg.GetGroup(idx + 1, level);
            //    Console.WriteLine($"{level.MDEntryType} @ {msg.Symbol}:");
            //    Console.WriteLine($" Date: {level.MDEntryDate}");
            //    Console.WriteLine($" Time: {level.MDEntryTime}");
            //    Console.WriteLine($" Px: {level.MDEntryPx}");
            //    Console.WriteLine($" Size: {level.MDEntrySize}");
            //}

            Console.WriteLine("BIDS:");
            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, level);
                if (level.MDEntryType.getValue() == MDEntryType.OFFER)
                {
                    continue;
                }
                Console.WriteLine($"P {level.MDEntryPx} @ S {level.MDEntrySize}");
            }

            Console.WriteLine("ASKS:");
            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var level = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, level);
                if (level.MDEntryType.getValue() == MDEntryType.BID)
                {
                    continue;
                }
                Console.WriteLine($"P {level.MDEntryPx} @ S {level.MDEntrySize}");
            }
        }