Exemplo n.º 1
0
        public void OnMessage(QuickFix.FIX44.MarketDataIncrementalRefresh msg, SessionID s)
        {
            var symbols   = new HashSet <string>();
            var entryType = new HashSet <string>();

            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var item = new QuickFix.FIX44.MarketDataIncrementalRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, item);
                symbols.Add(item.Symbol.getValue());
                if (MDEntryType.BID == item.MDEntryType.getValue())
                {
                    entryType.Add("BID");
                }
                else if (MDEntryType.OFFER == item.MDEntryType.getValue())
                {
                    entryType.Add("OFFER");
                }
                else if (MDEntryType.TRADE == item.MDEntryType.getValue())
                {
                    entryType.Add("TRADE");
                }

                if (!_seen.Contains(item.Symbol.getValue()) && MDEntryType.TRADE != item.MDEntryType.getValue())
                {
                    //throw new Exception("Incremential before snapshot");
                }
            }

            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var item = new QuickFix.FIX44.MarketDataIncrementalRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, item);

                if (item.Symbol.getValue() == DebugSymbol)
                {
                    Console.WriteLine($"Received MarketDataIncrementalRefresh {msg.NoMDEntries.getValue()} items for {string.Join(",", symbols)} with {string.Join(",", entryType)} (lag: {(DateTime.UtcNow - msg.Header.GetDateTime(52)).TotalMilliseconds} / {(DateTime.UtcNow - item.MDEntryDate.getValue().Add(item.MDEntryTime.getValue().TimeOfDay)).TotalMilliseconds}).");
                }
                return;

                Console.WriteLine($"{item.MDEntryType} {item.MDUpdateAction} @ {item.Symbol}:");
                if (item.IsSetMDEntryID())
                {
                    Console.WriteLine($" ID: {item.MDEntryID}");
                }
                Console.WriteLine($" Date: {item.MDEntryDate}");
                Console.WriteLine($" Time: {item.MDEntryTime}");
                Console.WriteLine($" Px: {item.MDEntryPx}");
                Console.WriteLine($" Size: {item.MDEntrySize}");
                if (item.IsSetMDEntryOriginator())
                {
                    Console.WriteLine($" TakerSide: {item.MDEntryOriginator}");
                }
            }
            Console.WriteLine($"--------------------------------------------------");
        }
Exemplo n.º 2
0
        public void OnMessage(QuickFix.FIX44.MarketDataIncrementalRefresh m, SessionID s)
        {
            QuickFix.FIX44.MarketDataIncrementalRefresh.NoMDEntriesGroup group = new QuickFix.FIX44.MarketDataIncrementalRefresh.NoMDEntriesGroup();
            m.GetGroup(1, group);
            var quote = new
            {
                Side         = (group.MDEntryType.getValue() == MDEntryType.BID ? "Bid" : "Offer"),
                LP           = group.MDEntryOriginator.getValue(),
                Security     = group.MDEntryOriginator.getValue(),
                Price        = group.MDEntryPx.getValue(),
                Quantity     = group.MDEntrySize.getValue(),
                UpdateAction = group.MDUpdateAction.getValue()
            };
            var trace = JsonConvert.SerializeObject(quote);

            Console.WriteLine(trace);
            System.IO.File.AppendAllText("trace.log", trace + "\r\n");
        }
Exemplo n.º 3
0
        public void OnMessage(QuickFix.FIX44.MarketDataIncrementalRefresh msg,
                              SessionID s)
        {
            for (int idx = 0; idx < msg.NoMDEntries.getValue(); idx++)
            {
                var trade = new QuickFix.FIX44.MarketDataIncrementalRefresh.NoMDEntriesGroup();
                msg.GetGroup(idx + 1, trade);

                Console.WriteLine($"Trade {trade.MDUpdateAction} @ {trade.Symbol}:");
                Console.WriteLine($" ID: {trade.MDEntryID}");
                Console.WriteLine($" Date: {trade.MDEntryDate}");
                Console.WriteLine($" Time: {trade.MDEntryTime}");
                Console.WriteLine($" Px: {trade.MDEntryPx}");
                Console.WriteLine($" Size: {trade.MDEntrySize}");
                Console.WriteLine($" TakerSide: {trade.MDEntryOriginator}");
            }
            Console.WriteLine($"--------------------------------------------------");
        }
Exemplo n.º 4
0
        /// <summary>
        /// Incremental market data refresh
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="sessionID"></param>
        public void OnMessage(QuickFix.FIX44.MarketDataIncrementalRefresh msg, SessionID sessionID)
        {
            var numMDEntries = msg.GetInt(Tags.NoMDEntries);

            for (int i = 1; i <= numMDEntries; i++)
            {
                var entry     = msg.GetGroup(i, Tags.NoMDEntries);
                var entryType = entry.GetChar(Tags.MDEntryType);
                if (entryType.Equals(MDEntryType.BID) || entryType.Equals(MDEntryType.OFFER))
                {
                    var action = entry.GetChar(Tags.MDUpdateAction);
                    switch (action)
                    {
                    case MDUpdateAction.CHANGE:
                        CurrentOrderBook.ChangeOrder((double)entry.GetDecimal(Tags.MDEntryPx), (double)entry.GetDecimal(Tags.MDEntrySize), entry.GetChar(Tags.MDEntryType));
                        break;

                    case MDUpdateAction.DELETE:
                        CurrentOrderBook.RemoveOrder((double)entry.GetDecimal(Tags.MDEntryPx), entry.GetChar(Tags.MDEntryType));
                        break;

                    default:
                        Log.Write($"Unknown market data update action {action}", 0);
                        break;
                    }
                }
                else if (entryType.Equals(MDEntryType.TRADE))
                {
                    LastTrade = new Trade()
                    {
                        Price  = (double)entry.GetDecimal(Tags.MDEntryPx),
                        Volume = (double)entry.GetDecimal(Tags.MDEntrySize)
                    };
                }
            }
        }
Exemplo n.º 5
0
 public void OnMessage(QuickFix.FIX44.MarketDataIncrementalRefresh marketRefresh, SessionID sessionId)
 {
     Console.WriteLine("Incremental refresh");
 }