コード例 #1
1
ファイル: Server.cs プロジェクト: huruixd/quickfixn
 private void OnMessage(QuickFix.FIX42.MarketDataRequest m, SessionID s)
 {
     QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
     m.GetGroup(1, symbolGroup);
     string symbolName = symbolGroup.Get(new Symbol()).getValue();
     string mdRequestId = m.MDReqID.ToString();
     if (!m_ProductSubscription.ContainsKey(symbolName)) {
         bool fullSpeed = symbolName.StartsWith("B");
         Console.WriteLine("Subscribe : " + symbolName + ". Full Speed: " + fullSpeed);
         QuotePublisher publisher = new QuotePublisher(symbolName, mdRequestId, fullSpeed, s);
         m_ProductSubscription.Add(symbolName, publisher);
     }
 }
        private void sendFuturesMarketDataRequest(Model.OrderModel orderModel)
        {
            var mdrq = new QuickFix.FIX42.MarketDataRequest(
                new MDReqID(orderModel.messageId),  //DateTime.Now.ToOADate().ToString()),
                new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT),
                new MarketDepth(1)
                );

            mdrq.AggregatedBook =
                new AggregatedBook(AggregatedBook.ONE_BOOK_ENTRY_PER_SIDE_PER_PRICE);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup entryTypeGroups =
                new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();

            entryTypeGroups.MDEntryType = new MDEntryType(MDEntryType.BID);

            mdrq.AddGroup(entryTypeGroups);

            entryTypeGroups.MDEntryType = new MDEntryType(MDEntryType.OFFER);

            mdrq.AddGroup(entryTypeGroups);


            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            //symGroup.Symbol = new Symbol("FOO1");
            //symGroup.SecurityID = new SecurityID("secid1");

            symGroup.Symbol = new Symbol(orderModel.underlyingExchangeSymbol);

            symGroup.SecurityType = StageOrdersToTTWPFLibrary.FixEnumTranslator.ToField(orderModel.securityType);

            symGroup.SecurityExchange = new SecurityExchange(orderModel.underlyingExchange);

            symGroup.MaturityMonthYear = new MaturityMonthYear(orderModel.maturityMonthYear);



            mdrq.AddGroup(symGroup);



            //mdrq.MDUpdateType = new MDUpdateType(MDEntryType.BID);
            //mdrq.MDUpdateType = new MDUpdateType(MDEntryType.OFFER);

            //mdrq.NoRelatedSym = new NoRelatedSym(1);


            if (_fixConnectionSystem.InitiatorRunning && _connectionViewModel.IsPriceConnected)
            {
                Thread sendToTargetThreading = new Thread(new ParameterizedThreadStart(sendToMarketDataRequestToTarget));
                sendToTargetThreading.IsBackground = true;
                sendToTargetThreading.Start(mdrq);

                //QuickFix.Session.SendToTarget(mdrq, _fixConnectionSystem.priceSession.SessionID);
            }
        }
コード例 #3
0
        private void OnMessage(QuickFix.FIX42.MarketDataRequest m, SessionID s)
        {
            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            m.GetGroup(1, symbolGroup);
            string symbolName  = symbolGroup.Get(new Symbol()).getValue();
            string mdRequestId = m.MDReqID.ToString();

            if (!m_ProductSubscription.ContainsKey(symbolName))
            {
                bool fullSpeed = symbolName.StartsWith("B");
                Console.WriteLine("Subscribe : " + symbolName + ". Full Speed: " + fullSpeed);
                QuotePublisher publisher = new QuotePublisher(symbolName, mdRequestId, fullSpeed, s);
                m_ProductSubscription.Add(symbolName, publisher);
            }
        }
コード例 #4
0
        /// <summary>
        /// Creates a FIX4.2 MarketDataRequest message.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="security"></param>
        /// <param name="subscriptionType"></param>
        /// <param name="depth"></param>
        /// <returns></returns>
        public QuickFix.FIX42.MarketDataRequest MarketDataRequest(string id, Security security, char subscriptionType, int depth)
        {
            QuickFix.FIX42.MarketDataRequest marketDataRequest = new QuickFix.FIX42.MarketDataRequest();

            QuickFix.Fields.SenderSubID senderSubId = new QuickFix.Fields.SenderSubID(this._senderSubId);
            marketDataRequest.SetField(senderSubId);

            QuickFix.Fields.DeliverToCompID deliverToCompId = new QuickFix.Fields.DeliverToCompID(this._deliverToCompId);
            marketDataRequest.SetField(deliverToCompId);

            QuickFix.Fields.NoRelatedSym noRelatedSym = new QuickFix.Fields.NoRelatedSym(1);
            marketDataRequest.SetField(noRelatedSym);

            QuickFix.Fields.MDReqID mdReqId = new QuickFix.Fields.MDReqID(id);
            marketDataRequest.SetField(mdReqId);

            QuickFix.Fields.SubscriptionRequestType subscriptionRequestType = new QuickFix.Fields.SubscriptionRequestType(subscriptionType);
            marketDataRequest.SetField(subscriptionRequestType);

            QuickFix.Fields.MarketDepth marketDepth = new QuickFix.Fields.MarketDepth(depth);
            marketDataRequest.SetField(marketDepth);

            QuickFix.Fields.MDUpdateType mdUpdateType = new QuickFix.Fields.MDUpdateType(MarketDataUpdateType.FullRefresh);
            marketDataRequest.SetField(mdUpdateType);

            QuickFix.Fields.NoMDEntryTypes noMdEntryType = new QuickFix.Fields.NoMDEntryTypes(2);
            marketDataRequest.SetField(noMdEntryType);

            QuickFix.Fields.AggregatedBook aggregatedBook = new QuickFix.Fields.AggregatedBook(true);
            marketDataRequest.SetField(aggregatedBook);

            QuickFix.Fields.Symbol symbol = new QuickFix.Fields.Symbol(security.Symbol);
            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup relatedSymbols = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            relatedSymbols.SetField(symbol);
            marketDataRequest.AddGroup(relatedSymbols);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup mdEntryTypes = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
            {
                mdEntryTypes.SetField(new QuickFix.Fields.MDEntryType(MarketDataEntryType.Bid));
                marketDataRequest.AddGroup(mdEntryTypes);
                mdEntryTypes.SetField(new QuickFix.Fields.MDEntryType(MarketDataEntryType.Offer));
                marketDataRequest.AddGroup(mdEntryTypes);
            }

            return(marketDataRequest);
        }
コード例 #5
0
        public QuickFix.FIX42.MarketDataRequest QueryMarketDataRequest42(string productName)
        {
            MDReqID mdReqID = new MDReqID("MARKETDATAID");
            SubscriptionRequestType subType     = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
            MarketDepth             marketDepth = new MarketDepth(1);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
            marketDataEntryGroup.Set(new MDEntryType(MDEntryType.BID));

            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            symbolGroup.Set(new Symbol(productName));
            symbolGroup.Set(new SecurityExchange("*"));
            symbolGroup.Set(new SecurityType(SecurityType.COMMON_STOCK));

            QuickFix.FIX42.MarketDataRequest message = new QuickFix.FIX42.MarketDataRequest(mdReqID, subType, marketDepth);
            message.AddGroup(marketDataEntryGroup);
            message.AddGroup(symbolGroup);

            return(message);
        }
コード例 #6
0
        private QuickFix.FIX42.MarketDataRequest QueryMarketDataRequest42()
        {
            MDReqID mdReqID = new MDReqID("MARKETDATAID");
            SubscriptionRequestType subType     = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT);
            MarketDepth             marketDepth = new MarketDepth(0);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
            marketDataEntryGroup.Set(new MDEntryType(MDEntryType.BID));

            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            symbolGroup.Set(new Symbol("LNUX"));

            QuickFix.FIX42.MarketDataRequest message = new QuickFix.FIX42.MarketDataRequest(mdReqID, subType, marketDepth);
            message.AddGroup(marketDataEntryGroup);
            message.AddGroup(symbolGroup);

            QueryHeader(message.Header);

            Console.WriteLine(message.ToString());
            return(message);
        }
コード例 #7
0
        public Task SendMarketDataRequest(string symbol, string exchange, Action <string> progressHandler)
        {
            return(Task.Run(() =>
            {
                //Create object of Security Definition
                QuickFix.FIX42.MarketDataRequest securityDefinition = new QuickFix.FIX42.MarketDataRequest
                {
                    MDReqID = new MDReqID(Guid.NewGuid().ToString()),
                    SubscriptionRequestType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES),
                    MarketDepth = new MarketDepth(1),
                    MDUpdateType = new MDUpdateType(0)
                };

                var noMDEntryTypes = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
                var mdEntryType_bid = new MDEntryType(MDEntryType.BID);
                noMDEntryTypes.Set(mdEntryType_bid);
                securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.OFFER)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.TRADE)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.OPENING_PRICE)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.SETTLEMENT_PRICE)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.TRADING_SESSION_HIGH_PRICE)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.TRADING_SESSION_LOW_PRICE)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.TRADE_VOLUME)); securityDefinition.AddGroup(noMDEntryTypes);
                noMDEntryTypes.Set(new MDEntryType(MDEntryType.OPEN_INTEREST)); securityDefinition.AddGroup(noMDEntryTypes);

                securityDefinition.NoRelatedSym = new NoRelatedSym(1);

                var relatedSymbol = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
                relatedSymbol.Set(new Symbol(symbol));
                relatedSymbol.Set(new SecurityExchange(exchange));
                securityDefinition.AddGroup(relatedSymbol);
                Session.SendToTarget(securityDefinition, _currentSessionId);
                progressHandler("Sent MarketData Request");
            }));
        }
コード例 #8
0
        /// <summary>
        /// Request Bid and offer prices subscription for a specific contract.
        /// </summary>
        /// <param name="SecEx">Exchange</param>
        /// <param name="symbol">Exchange symbol for contract</param>
        /// <param name="secID">unique identifier supplied by the exchnage for this contract 
        /// For eurex this is the ticker and expiration</param>
        public void ttMarketDataRequest(string SecEx, string symbol, string secID)
        {
            try
            {
                QuickFix.FIX42.MarketDataRequest mdr = new QuickFix.FIX42.MarketDataRequest();

                mdr.Set(new QuickFix.Fields.MDReqID(string.Concat(SecEx, ":", symbol, ":", secID)));
                mdr.Set(new QuickFix.Fields.SubscriptionRequestType(QuickFix.Fields.SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES));
                mdr.Set(new QuickFix.Fields.MDUpdateType(QuickFix.Fields.MDUpdateType.FULL_REFRESH)); //required if above type is SNAPSHOT_PLUS_UPDATES
                mdr.Set(new QuickFix.Fields.MarketDepth(1));
                mdr.Set(new QuickFix.Fields.AggregatedBook(true));

                QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup tgroup = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
                tgroup.Set(new QuickFix.Fields.MDEntryType(QuickFix.Fields.MDEntryType.BID));
                mdr.AddGroup(tgroup);
                tgroup.Set(new QuickFix.Fields.MDEntryType(QuickFix.Fields.MDEntryType.OFFER));
                mdr.AddGroup(tgroup);
                //tgroup.Set(new QuickFix.Fields.MDEntryType(QuickFix.Fields.MDEntryType.TRADE));
                //mdr.addGroup(tgroup);

                QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup sgroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();

                sgroup.Set(new QuickFix.Fields.SecurityExchange(SecEx));
                sgroup.Set(new QuickFix.Fields.Symbol(symbol));
                sgroup.Set(new QuickFix.Fields.SecurityID(secID));
                mdr.AddGroup(sgroup);

                QuickFix.Session.SendToTarget(mdr, priceSessionID);
            }
            catch (Exception ex)
            { log.WriteLog(ex.ToString()); }
        }
コード例 #9
0
        private QuickFix.FIX42.MarketDataRequest QueryMarketDataRequest42()
        {
            MDReqID mdReqID = new MDReqID( "MARKETDATAID" );
            SubscriptionRequestType subType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT);
            MarketDepth marketDepth = new MarketDepth(0);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
            marketDataEntryGroup.Set( new MDEntryType(MDEntryType.BID) );

            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            symbolGroup.Set(new Symbol("LNUX"));

            QuickFix.FIX42.MarketDataRequest message = new QuickFix.FIX42.MarketDataRequest( mdReqID, subType, marketDepth );
            message.AddGroup( marketDataEntryGroup );
            message.AddGroup( symbolGroup );

            QueryHeader( message.Header );

            Console.WriteLine(message.ToString());
            return message;
        }
コード例 #10
0
ファイル: Client.cs プロジェクト: huruixd/quickfixn
        public QuickFix.FIX42.MarketDataRequest QueryMarketDataRequest42(string productName)
        {
            MDReqID mdReqID = new MDReqID("MARKETDATAID");
            SubscriptionRequestType subType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
            MarketDepth marketDepth = new MarketDepth(1);

            QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX42.MarketDataRequest.NoMDEntryTypesGroup();
            marketDataEntryGroup.Set(new MDEntryType(MDEntryType.BID));

            QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX42.MarketDataRequest.NoRelatedSymGroup();
            symbolGroup.Set(new Symbol(productName));
            symbolGroup.Set(new SecurityExchange("*"));
            symbolGroup.Set(new SecurityType(SecurityType.COMMON_STOCK));

            QuickFix.FIX42.MarketDataRequest message = new QuickFix.FIX42.MarketDataRequest(mdReqID, subType, marketDepth);
            message.AddGroup(marketDataEntryGroup);
            message.AddGroup(symbolGroup);

            return message;
        }