/// <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[] instrument, char reqType) { //string[] instrument must contain: //{SecurityExchange, Symbol,SecurityType,MaturityMonthYear} or //{SecurityExchange, Symbol,SecurityID} try { QuickFix42.MarketDataRequest mdr = new QuickFix42.MarketDataRequest(); mdr.set(new QuickFix.MDReqID(uniqueID())); mdr.set(new QuickFix.SubscriptionRequestType(reqType)); mdr.set(new QuickFix.MDUpdateType(QuickFix.MDUpdateType.FULL_REFRESH)); //required if above type is SNAPSHOT_PLUS_UPDATES //1=Top of Book, 0 = full book, other integer equals number of levels mdr.set(new QuickFix.MarketDepth(1)); mdr.set(new QuickFix.AggregatedBook(true)); QuickFix42.MarketDataRequest.NoMDEntryTypes tgroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); tgroup.set(new QuickFix.MDEntryType(QuickFix.MDEntryType.BID)); mdr.addGroup(tgroup); tgroup.set(new QuickFix.MDEntryType(QuickFix.MDEntryType.OFFER)); mdr.addGroup(tgroup); tgroup.set(new QuickFix.MDEntryType(QuickFix.MDEntryType.TRADE)); mdr.addGroup(tgroup); QuickFix42.MarketDataRequest.NoRelatedSym sgroup = new QuickFix42.MarketDataRequest.NoRelatedSym(); // Define instrument sgroup.set(new QuickFix.SecurityExchange(instrument[0])); sgroup.set(new QuickFix.Symbol(instrument[1])); if (instrument.GetLength(0) == 4) { sgroup.set(new QuickFix.SecurityType(instrument[2])); sgroup.set(new QuickFix.MaturityMonthYear(instrument[3])); } else if (instrument.GetLength(0) == 3) { sgroup.set(new QuickFix.SecurityID(instrument[2])); } else { throw new System.Exception("Incorrect parameters for insturment definition"); } mdr.addGroup(sgroup); QuickFix.Session.sendToTarget(mdr, priceSessionID); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public override void Send(FIXMarketDataRequest Request) { //Console.WriteLine("REQUEST"); QuickFix42.MarketDataRequest request = new QuickFix42.MarketDataRequest( new QuickFix.MDReqID(Request.MDReqID), new QuickFix.SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT), //GS FIX new QuickFix.MarketDepth(5)); //GS FIX //request.set(new QuickFix.MDUpdateType(Request.MDUpdateType)); //request.set(new QuickFix.AggregatedBook(Request.AggregatedBook)); QuickFix42.MarketDataRequest.NoMDEntryTypes typeGroup; typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Bid)); request.addGroup(typeGroup); typeGroup.Dispose(); typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Offer)); request.addGroup(typeGroup); typeGroup.Dispose(); typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Trade)); request.addGroup(typeGroup); typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Open)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Close)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.High)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Low)); //request.addGroup(typeGroup); //typeGroup.Dispose(); QuickFix42.MarketDataRequest.NoRelatedSym symGroup = new QuickFix42.MarketDataRequest.NoRelatedSym(); FIXRelatedSymGroup Group = Request.GetRelatedSymGroup(0); symGroup.set(new QuickFix.Symbol(Group.Symbol.Substring(0, 6))); if (Group.Symbol.StartsWith("60") || Group.Symbol.StartsWith("51")) { //order.set(new QuickFix.SecurityExchange("XSHG"));// 上海 symGroup.set(new QuickFix.SecurityExchange("SS"));// 上海 } else if (Group.Symbol.StartsWith("00") || Group.Symbol.StartsWith("30") || Group.Symbol.StartsWith("15")) { //order.set(new QuickFix.SecurityExchange("XSHE"));// 深圳 symGroup.set(new QuickFix.SecurityExchange("SZ"));// 深圳 } //if (Group.ContainsField(EFIXField.SecurityType)) symGroup.set(new QuickFix.SecurityType(Group.SecurityType)); //if (Group.ContainsField(EFIXField.MaturityMonthYear)) symGroup.set(new QuickFix.MaturityMonthYear(Group.MaturityMonthYear)); //if (Group.ContainsField(EFIXField.MaturityDay )) symGroup.set(new QuickFix.MaturityDay (Group.MaturityDay )); //if (Group.ContainsField(EFIXField.PutOrCall )) symGroup.set(new QuickFix.PutOrCall (Group.PutOrCall )); //if (Group.ContainsField(EFIXField.StrikePrice)) symGroup.set(new QuickFix.StrikePrice(Group.StrikePrice)); //if (Group.ContainsField(EFIXField.OptAttribute)) symGroup.set(new QuickFix.OptAttribute(Group.OptAttribute)); //if (Group.ContainsField(EFIXField.SecurityID)) symGroup.set(new QuickFix.SecurityID(Group.SecurityID)); //if (Group.ContainsField(EFIXField.SecurityExchange)) symGroup.set(new QuickFix.SecurityExchange(Group.SecurityExchange)); request.addGroup(symGroup); symGroup.Dispose(); if (base.priceSessionID == null) { Session.sendToTarget(request, orderSessionID); } else { Session.sendToTarget(request, priceSessionID); } }
public override void Send(FIXMarketDataRequest Request) { //Console.WriteLine("REQUEST"); QuickFix42.MarketDataRequest request = new QuickFix42.MarketDataRequest( new QuickFix.MDReqID(Request.MDReqID), new QuickFix.SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT), //GS FIX new QuickFix.MarketDepth(5)); //GS FIX //request.set(new QuickFix.MDUpdateType(Request.MDUpdateType)); //request.set(new QuickFix.AggregatedBook(Request.AggregatedBook)); QuickFix42.MarketDataRequest.NoMDEntryTypes typeGroup; typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Bid)); request.addGroup(typeGroup); typeGroup.Dispose(); typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Offer)); request.addGroup(typeGroup); typeGroup.Dispose(); typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); typeGroup.set(new MDEntryType(FIXMDEntryType.Trade)); request.addGroup(typeGroup); typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Open)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Close)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.High)); //request.addGroup(typeGroup); //typeGroup.Dispose(); //typeGroup = new QuickFix42.MarketDataRequest.NoMDEntryTypes(); //typeGroup.set(new MDEntryType(FIXMDEntryType.Low)); //request.addGroup(typeGroup); //typeGroup.Dispose(); QuickFix42.MarketDataRequest.NoRelatedSym symGroup = new QuickFix42.MarketDataRequest.NoRelatedSym(); FIXRelatedSymGroup Group = Request.GetRelatedSymGroup(0); symGroup.set(new QuickFix.Symbol(Group.Symbol.Substring(0, 6))); if (Group.Symbol.StartsWith("60") || Group.Symbol.StartsWith("51")) { //order.set(new QuickFix.SecurityExchange("XSHG"));// 上海 symGroup.set(new QuickFix.SecurityExchange("SS"));// 上海 } else if (Group.Symbol.StartsWith("00") || Group.Symbol.StartsWith("30") || Group.Symbol.StartsWith("15")) { //order.set(new QuickFix.SecurityExchange("XSHE"));// 深圳 symGroup.set(new QuickFix.SecurityExchange("SZ"));// 深圳 } //if (Group.ContainsField(EFIXField.SecurityType)) symGroup.set(new QuickFix.SecurityType(Group.SecurityType)); //if (Group.ContainsField(EFIXField.MaturityMonthYear)) symGroup.set(new QuickFix.MaturityMonthYear(Group.MaturityMonthYear)); //if (Group.ContainsField(EFIXField.MaturityDay )) symGroup.set(new QuickFix.MaturityDay (Group.MaturityDay )); //if (Group.ContainsField(EFIXField.PutOrCall )) symGroup.set(new QuickFix.PutOrCall (Group.PutOrCall )); //if (Group.ContainsField(EFIXField.StrikePrice)) symGroup.set(new QuickFix.StrikePrice(Group.StrikePrice)); //if (Group.ContainsField(EFIXField.OptAttribute)) symGroup.set(new QuickFix.OptAttribute(Group.OptAttribute)); //if (Group.ContainsField(EFIXField.SecurityID)) symGroup.set(new QuickFix.SecurityID(Group.SecurityID)); //if (Group.ContainsField(EFIXField.SecurityExchange)) symGroup.set(new QuickFix.SecurityExchange(Group.SecurityExchange)); request.addGroup(symGroup); symGroup.Dispose(); if(base.priceSessionID == null) Session.sendToTarget(request, orderSessionID); else Session.sendToTarget(request, priceSessionID); }