/// <summary> /// Send a request to the BLP API. Called by Query(). /// </summary> /// <param name="session"></param> /// <param name="identity"></param> private void SendRequest(Session session, Identity identity) { Console.WriteLine("Sending Request: {0}", d_requestType.ToString()); Service instrumentService = session.GetService(INSTRUMENT_SERVICE); Request request; try { request = instrumentService.CreateRequest(d_requestType.ToString()); } catch (NotFoundException e) { throw new Exception( string.Format("Request Type not found: {0}", d_requestType), e); } request.Set(QUERY_ELEMENT, d_queryString); request.Set(MAX_RESULTS_ELEMENT, d_maxResults); foreach (KeyValuePair <string, string> entry in d_filters) { try { request.Set(entry.Key, entry.Value); } catch (NotFoundException e) { throw new Exception(string.Format("Filter not found: {0}", entry.Key), e); } catch (InvalidConversionException e) { throw new Exception( string.Format( "Invalid value: {0} for filter: {1}", entry.Value, entry.Key), e); } } request.Print(Console.Out); Console.WriteLine(); session.SendRequest(request, identity, null); }
/// <summary> /// Gets the Bloomberg data via the specified request type /// </summary> /// <param name="instruments">The list of instruments to retrieve data for</param> /// <param name="dataFromDate">The start date of the data being requested</param> /// <param name="dataToDate">The end date of the data being requested</param> /// <param name="requestType">The type of request i.e. Reference/Historical</param> private void GetBloombergData(List <BloombergDataInstrument> instruments, DateTime dataFromDate, DateTime dataToDate, string requestType) { try { sentLimitEmail = false; Initialise(BLP_REF, instruments.Count); BB.Service service = session.GetService(BLP_REF); guids = new List <Guid>(); sentToBB = instruments; // new List<BloombergDataInstrument>(); ShowCompletionPercentage(0, instruments.Count); foreach (BloombergDataInstrument bbdi in instruments) { BB.Request request = service.CreateRequest(requestType); if (requestType == BLP_HISTORICAL_REQUEST) { request.Set("startDate", dataFromDate.ToString("yyyyMMdd")); request.Set("endDate", dataToDate.ToString("yyyyMMdd")); } BB.Element securities = request.GetElement(BLP_SECURITIES); // check for sedol ticker which must be in the correct format string ticker = bbdi.Ticker; if (ticker.EndsWith("SEDOL1")) { ticker = @"/SEDOL1/" + ticker.Replace(" SEDOL1", string.Empty); } // set all the securities to fetch securities.AppendValue(ticker); // set all the fields BB.Element fields = request.GetElement(BLP_FIELDS); foreach (string field in bbdi.BBFields.Keys) { fields.AppendValue(field); // now do the overrides - if they exist if (bbdi.BBFields[field].FieldOverrides != null) { BB.Element requestOverrides = request.GetElement(BLP_OVERRIDES); foreach (string oField in bbdi.BBFields[field].FieldOverrides.Keys) { object oValue = bbdi.BBFields[field].FieldOverrides[oField]; // now add in the override oField and oValue BB.Element ovr = requestOverrides.AppendElement(); ovr.SetElement(FIELD_ID, oField); ovr.SetElement(VALUE, oValue.ToString()); } } } session.SendRequest(request, new BB.CorrelationID(bbdi.GUID)); } UpdateStatus(string.Format("Sent {0} instruments\\requests to Bloomberg", sentToBB.Count)); } catch (Exception ex) { UpdateStatus(ex.Message); throw new Exception("An error occurred whilst sending requests to Bloomberg - " + ex.Message, ex); } }