/// <summary> /// Get override field informations /// </summary> /// <param name="ids"></param> private void getFieldInformation(List <string> ids) { // get auth service if (d_service == null) { if (d_session.OpenService(@"//blp/apiflds")) { d_service = d_session.GetService(@"//blp/apiflds"); } } Request request = d_service.CreateRequest("FieldInfoRequest"); request.Set("returnFieldDocumentation", true); foreach (string id in ids) { request.Append("id", id); } // set field info request correlationID to 3000 CorrelationID cId = new CorrelationID(3000); // cancel previous pending request d_session.Cancel(cId); d_session.SendRequest(request, cId); }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("CreateBasket"); // define the basket name request.Set("EMSX_BASKET_NAME", "TestBasket"); // add any number of orders request.Append("EMSX_SEQUENCE", 4313227); request.Append("EMSX_SEQUENCE", 4313228); //request.Append("EMSX_SEQUENCE", 1234567) System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("AssignTrader"); //request.Set("EMSX_REQUEST_SEQ", 1); request.Append("EMSX_SEQUENCE", 3657359); request.Append("EMSX_SEQUENCE", 3657360); request.Set("EMSX_ASSIGNEE_TRADER_UUID", 12109783); System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("SellSideAck"); //request.set("EMSX_REQUEST_SEQ", 1); // Append is used as any number of orders can be ack'ed in a single request request.Append("EMSX_SEQUENCE", 3852531); // If performing the ack on an order owned by another team member, provide owner's UUID //request.Set("EMSX_TRADER_UUID", 7654321); System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("GroupRouteEx"); // Multiple order numbers can be added request.Append("EMSX_SEQUENCE", 3663923); request.Append("EMSX_SEQUENCE", 3663924); request.Append("EMSX_SEQUENCE", 3663925); // The fields below are mandatory request.Set("EMSX_AMOUNT_PERCENT", 100); // Note the amount here is %age of order amount request.Set("EMSX_BROKER", "BMTB"); // For GroupRoute, the below values need to be added, but are taken // from the original order when the route is created. request.Set("EMSX_HAND_INSTRUCTION", "ANY"); request.Set("EMSX_ORDER_TYPE", "MKT"); request.Set("EMSX_TICKER", "IBM US Equity"); request.Set("EMSX_TIF", "DAY"); // The fields below are optional //request.Set("EMSX_ACCOUNT","TestAccount"); //request.Set("EMSX_BOOKNAME","BookName"); //request.Set("EMSX_CFD_FLAG", "1"); //request.Set("EMSX_CLEARING_ACCOUNT", "ClrAccName"); //request.Set("EMSX_CLEARING_FIRM", "FirmName"); //request.Set("EMSX_EXEC_INSTRUCTION", "Drop down values from EMSX Ticket"); //request.Set("EMSX_GET_WARNINGS", "0"); //request.Set("EMSX_GTD_DATE", "20170105"); //request.Set("EMSX_LIMIT_PRICE", 123.45); //request.Set("EMSX_LOCATE_BROKER", "BMTB"); //request.Set("EMSX_LOCATE_ID", "SomeID"); //request.Set("EMSX_LOCATE_REQ", "Y"); //request.Set("EMSX_NOTES", "Some notes"); //request.Set("EMSX_ODD_LOT", "0"); //request.Set("EMSX_P_A", "P"); //request.Set("EMSX_RELEASE_TIME", 34341); //request.Set("EMSX_REQUEST_SEQ", 1001); //request.Set("EMSX_STOP_PRICE", 123.5); //request.Set("EMSX_TRADER_UUID", 1234567); // Set the Request Type if this is for multi-leg orders // only valid for options /* * Element requestType = request.GetElement("EMSX_REQUEST_TYPE"); * requestType.SetChoice("Multileg"); * Element multileg = requestType.GetElement("Multileg"); * multileg.SetElement("EMSX_AMOUNT",10); * multileg.GetElement("EMSX_ML_RATIO").AppendValue(2); * multileg.GetElement("EMSX_ML_RATIO").AppendValue(3); */ // Add the Route Ref ID values Element routeRefIDPairs = request.GetElement("EMSX_ROUTE_REF_ID_PAIRS"); Element route1 = routeRefIDPairs.AppendElement(); route1.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef1"); route1.SetElement("EMSX_SEQUENCE", 3663923); Element route2 = routeRefIDPairs.AppendElement(); route2.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef2"); route2.SetElement("EMSX_SEQUENCE", 3663924); Element route3 = routeRefIDPairs.AppendElement(); route3.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef3"); route3.SetElement("EMSX_SEQUENCE", 3663925); // Below we establish the strategy details. Strategy details // are common across all orders in a GroupRoute operation. // The following segment can be removed if no broker strategies are used Element strategy = request.GetElement("EMSX_STRATEGY_PARAMS"); strategy.SetElement("EMSX_STRATEGY_NAME", "VWAP"); Element indicator = strategy.GetElement("EMSX_STRATEGY_FIELD_INDICATORS"); Element data = strategy.GetElement("EMSX_STRATEGY_FIELDS"); // Strategy parameters must be appended in the correct order. See the output // of GetBrokerStrategyInfo request for the order. The indicator value is 0 for // a field that carries a value, and 1 where the field should be ignored data.AppendElement().SetElement("EMSX_FIELD_DATA", "09:30:00"); // StartTime indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 0); data.AppendElement().SetElement("EMSX_FIELD_DATA", "10:30:00"); // EndTime indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 0); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // Max%Volume indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // %AMSession indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // OPG indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // MOC indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // CompletePX indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // TriggerPX indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // DarkComplete indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // DarkCompPX indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // RefIndex indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); data.AppendElement().SetElement("EMSX_FIELD_DATA", ""); // Discretion indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1); System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void run(String[] args) { d_port = 8194; d_hosts = new List <string>(); if (!parseCommandLine(args)) { return; } // create session if (!createSession()) { System.Console.Error.WriteLine("Failed to open session"); return; } if (d_authOption != "NONE") { // Authenticate user using Generate Token Request if (!GenerateToken(out d_token)) { return; } //Authorization : pass Token into authorization request. Returns User handle with user's entitlements info set by server. if (!IsBPipeAuthorized(d_token, out d_identity)) { return; } } if (!d_session.OpenService(APIFLDS_SVC)) { System.Console.Error.WriteLine("Failed to open " + APIFLDS_SVC); return; } Service fieldInfoService = d_session.GetService(APIFLDS_SVC); Request request = fieldInfoService.CreateRequest( "FieldInfoRequest"); Element idList = request.GetElement("id"); request.Append("id", "LAST_PRICE"); request.Append("id", "pq005"); request.Append("id", "zz0002"); request.Set("returnFieldDocumentation", false); System.Console.WriteLine("Sending Request: " + request); if (d_authOption == "NONE") { d_session.SendRequest(request, null); } else { // request data with identity object d_session.SendRequest(request, d_identity, null); } while (true) { try { Event eventObj = d_session.NextEvent(); foreach (Message msg in eventObj) { if (eventObj.Type != Event.EventType.RESPONSE && eventObj.Type != Event.EventType.PARTIAL_RESPONSE) { continue; } Element fields = msg.GetElement(FIELD_DATA); int numElements = fields.NumValues; printHeader(); for (int i = 0; i < numElements; i++) { printField(fields.GetValueAsElement(i)); } System.Console.WriteLine(); } if (eventObj.Type == Event.EventType.RESPONSE) { break; } } catch (Exception ex) { System.Console.WriteLine("Got Exception:" + ex); } } }
public Dictionary <string, string> DownloadFieldInfo(string securityName, IEnumerable <IField> fields) { var outDict = new Dictionary <string, string>(); Request request = refDataService.CreateRequest("FieldInfoRequest"); if (fields == null || fields.Count() == 0) { return(null); } foreach (var item in fields) { request.Append("id", item.FieldName); } request.Set("returnFieldDocumentation", true); session.SendRequest(request, null); bool done = false; while (!done) { Event eventObj = session.NextEvent(); if (eventObj.Type == Event.EventType.RESPONSE || eventObj.Type == Event.EventType.PARTIAL_RESPONSE) { foreach (var msg in eventObj) { if (msg.AsElement.HasElement("responseError")) { throw new Exception("Response error for fields [" + fields.ToExtendedString() + "]: " + msg.GetElement("responseError").GetElement("message") + "field: "); } Element securityDataArray = msg.GetElement("fieldData"); for (int i = 0; i < securityDataArray.NumValues; i++) { Element fieldData = securityDataArray.GetValueAsElement(i); try { Element fieldInfo = fieldData.GetElement("fieldInfo"); string fieldName = fieldInfo.GetElementAsString("mnemonic"); string output = fieldInfo.GetElementAsString("documentation"); var fieldNickName = from f in fields where f.FieldName == fieldName select f.FieldNickName; foreach (var f in fieldNickName) { if (!outDict.ContainsKey(f)) { outDict.Add(f, output); } } } catch { Trace.WriteLine("Problem Downloading Field Definition for " + fieldData.GetElement("id")); } } } } if (eventObj.Type == Event.EventType.RESPONSE) { done = true; } } return(outDict); }
public IEnumerable <Tuple <string, SortedList <DateTime, dynamic> > > DownloadData(List <string> securityNames, List <IField> fields, DateTime?startDate = null, DateTime?endDate = null) { try { Request request = refDataService.CreateRequest(fields[0].requestType); foreach (var name in securityNames) { request.Append("securities", name); } foreach (var f in fields) { request.Append("fields", f.FieldName); } Element overrides = request["overrides"]; foreach (var item in fields[0].Overrides) { if (item.Key.Length > 0 && item.Value.Length > 0) { dynamic value = ParseBool(item.Value); if (!IsOverride(item.Key)) { request.Set(item.Key, value); } else { Element override1 = overrides.AppendElement(); override1.SetElement("fieldId", item.Key); override1.SetElement("value", value); } } } if (fields[0].requestType == "HistoricalDataRequest") { var d = startDate.Value; if (startDate != null) { request.Set("startDate", startDate.Value.ToString("yyyyMMdd")); } if (endDate != null) { var nextYear = new DateTime(DateTime.Today.Year + 1, 1, 1); DateTime upperLimit = endDate.Value > nextYear ? nextYear : endDate.Value; request.Set("endDate", upperLimit.ToString("yyyyMMdd")); } request.Set("maxDataPoints", 10000); } session.SendRequest(request, null); } catch { Trace.WriteLine("\nWrong bloomberg request for " + fields[0].FieldNickName); yield break; } bool done = false; while (!done) { Event eventObj = session.NextEvent(); if (eventObj.Type == Event.EventType.RESPONSE || eventObj.Type == Event.EventType.PARTIAL_RESPONSE) { foreach (var msg in eventObj) { if (msg.AsElement.HasElement("responseError")) { throw new Exception("Response error for fields [" + fields.ToExtendedString() + "]: " + msg.GetElement("responseError").GetElement("message") + "field: "); } Element securityData = msg.GetElement("securityData"); foreach (var item in ParseUniversal(securityData, fields)) { yield return(item); } } } if (eventObj.Type == Event.EventType.RESPONSE) { done = true; } } }
private void run(String[] args) { d_serverHost = "localhost"; d_serverPort = 8194; if (!parseCommandLine(args)) { return; } SessionOptions sessionOptions = new SessionOptions(); sessionOptions.ServerHost = d_serverHost; sessionOptions.ServerPort = d_serverPort; System.Console.WriteLine("Connecting to " + d_serverHost + ":" + d_serverPort); Session session = new Session(sessionOptions); bool sessionStarted = session.Start(); if (!sessionStarted) { System.Console.WriteLine("Failed to start session."); return; } if (!session.OpenService(APIFLDS_SVC)) { System.Console.WriteLine("Failed to open service: " + APIFLDS_SVC); return; } Service fieldInfoService = session.GetService(APIFLDS_SVC); Request request = fieldInfoService.CreateRequest( "FieldInfoRequest"); Element idList = request.GetElement("id"); request.Append("id", "LAST_PRICE"); request.Append("id", "pq005"); request.Append("id", "zz0002"); request.Set("returnFieldDocumentation", false); System.Console.WriteLine("Sending Request: " + request); session.SendRequest(request, null); while (true) { try { Event eventObj = session.NextEvent(); foreach (Message msg in eventObj) { if (eventObj.Type != Event.EventType.RESPONSE && eventObj.Type != Event.EventType.PARTIAL_RESPONSE) { continue; } Element fields = msg.GetElement(FIELD_DATA); int numElements = fields.NumValues; printHeader(); for (int i = 0; i < numElements; i++) { printField(fields.GetValueAsElement(i)); } System.Console.WriteLine(); } if (eventObj.Type == Event.EventType.RESPONSE) { break; } } catch (Exception ex) { System.Console.WriteLine("Got Exception:" + ex); } } }