コード例 #1
0
        private void sendIntradayTickRequest()
        {
            if (!d_session.OpenService(REFDATA_SVC))
            {
                System.Console.WriteLine("Failed to open service: " + REFDATA_SVC);
                return;
            }
            Service refDataService = d_session.GetService(REFDATA_SVC);
            Request request        = refDataService.CreateRequest("IntradayTickRequest");

            request.Set("security", d_security);

            // Add fields to request
            Element eventTypes = request.GetElement("eventTypes");

            for (int i = 0; i < d_events.Count; ++i)
            {
                eventTypes.AppendValue((string)d_events[i]);
            }

            // All times are in GMT
            request.Set("startDateTime", d_startDateTime);
            request.Set("endDateTime", d_endDateTime);

            if (d_conditionCodes)
            {
                request.Set("includeConditionCodes", true);
            }

            System.Console.WriteLine("Sending Request: " + request);
            d_session.SendRequest(request, d_identity, null);
        }
コード例 #2
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKER_STRATEGY_INFO))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing succesful RESPONSE");

                    Element parameters = message.GetElement("EMSX_STRATEGY_INFO");

                    int numValues = parameters.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        Element parameter = parameters.GetValueAsElement(i);

                        string parameterName = parameter.GetElementAsString("FieldName");
                        int    disable       = parameter.GetElementAsInt32("Disable");
                        string stringValue   = parameter.GetElementAsString("StringValue");

                        BrokerStrategyParameter newParameter = new BrokerStrategyParameter(brokerStrategyParameters, parameterName, stringValue, disable);
                        brokerStrategyParameters.add(newParameter);
                        Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "] Added new parameter " + parameterName);
                    }
                }
            }
        private void processAuthStatusEvent(Event eventObj)
        {
            foreach (Message msg in eventObj)
            {
                int userid = (int)msg.CorrelationID.Value;
                if (msg.MessageType.Equals(AUTHORIZATION_REVOKED))
                {
                    Element errorinfo = msg.GetElement("reason");
                    int     code      = errorinfo.GetElementAsInt32("code");
                    String  reason    = errorinfo.GetElementAsString("message");
                    System.Console.WriteLine("Authorization revoked for uuid " +
                                             d_uuids[userid] +
                                             " with code " + code + " and reason\n\t" + reason);

                    /* Reauthorize user here if required, and obtain a new identity.
                     * Existing identity is invalid.
                     */
                }
                else if (msg.MessageType.Equals(ENTITLEMENT_CHANGED))
                {
                    System.Console.WriteLine("Entitlements updated for uuid " +
                                             d_uuids[userid]);

                    /* This is just informational.
                     * Continue to use existing identity.
                     */
                }
            }
        }
コード例 #4
0
        private TickData BBEventToTickData(Element bbElement, ITickDataQuery tickDateQuery)
        {
            var dataPoint = new TickData()
            {
                Security    = tickDateQuery.Security,
                SecurityObj = tickDateQuery.CorrelationIdObj
            };


            if (bbElement.HasElement("time") &&
                bbElement.HasElement("type") &&
                bbElement.HasElement("value") &&
                bbElement.HasElement("size"))
            {
                // tick field data
                dataPoint.TimeStamp = bbElement.GetElementAsTime("time").ToSystemDateTime();
                //dataPoint.TimeStamp = Convert.ToDateTime(bbElement.GetElementAsString("time"));//.ToUniversalTime();
                dataPoint.Price = bbElement.GetElementAsFloat64("value");
                dataPoint.Size  = (uint)bbElement.GetElementAsInt32("size");
                string msgType = bbElement.GetElementAsString("type");
                Enum.TryParse(msgType, true, out dataPoint.Type);
            }

            return(dataPoint);
        }
コード例 #5
0
 private void processElement(Element element)
 {
     if (element.IsArray)
     {
         System.Console.WriteLine("\t\t" + element.Name);
         // process array
         int numOfValues = element.NumValues;
         for (int i = 0; i < numOfValues; ++i)
         {
             // process array data
             processElement(element.GetValueAsElement(i));
         }
     }
     else if (element.NumElements > 0)
     {
         System.Console.WriteLine("\t\t" + element.Name);
         int numOfElements = element.NumElements;
         for (int i = 0; i < numOfElements; ++i)
         {
             // process child elements
             processElement(element.GetElement(i));
         }
     }
     else
     {
         // Assume all values are scalar.
         System.Console.WriteLine("\t\t" + element.Name
                                  + " = " + element.GetValueAsString());
     }
 }
コード例 #6
0
ファイル: Brokers.cs プロジェクト: tkim/cs_EasyMSX
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.BASIC, "Brokers: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Brokers: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Error getting brokers: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKERS))
                {
                    Log.LogMessage(LogLevels.BASIC, "Brokers: processing successful RESPONSE");

                    Element brokerList = message.GetElement("EMSX_BROKERS");

                    int numValues = brokerList.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        string brokerName = brokerList.GetValueAsString(i);
                        Broker newBroker  = new Broker(brokers, brokerName, assetClass);
                        brokers.add(newBroker);
                        Log.LogMessage(LogLevels.DETAILED, "Brokers: added new broker " + newBroker.name);
                    }
                }
            }
コード例 #7
0
 /// <summary>
 /// Process subscription data
 /// </summary>
 /// <param name="eventObj"></param>
 /// <param name="session"></param>
 private void processRequestDataEvent(Event eventObj, Session session)
 {
     d_data.BeginLoadData();
     // process message
     foreach (Message msg in eventObj)
     {
         if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("IntradayBarResponse")))
         {
             if (msg.HasElement(RESPONSE_ERROR))
             {
                 // process error
                 Element error = msg.GetElement(RESPONSE_ERROR);
                 if (msg.NumElements == 1)
                 {
                     d_data.Rows.Add(new object[] { d_requestSecurity, error.GetElementAsString(MESSAGE) });
                     return;
                 }
             }
             // process bar data
             Element barDataArray = msg.GetElement("barData");
             int     numberOfBars = barDataArray.NumValues;
             foreach (Element barData in barDataArray.Elements)
             {
                 if (barData.Name.ToString() == "barTickData")
                 {
                     for (int pointIndex = 0; pointIndex < barData.NumValues; pointIndex++)
                     {
                         int      fieldIndex = 0;
                         object[] dataValues = new object[d_data.Columns.Count];
                         Element  fields     = barData.GetValueAsElement(pointIndex);
                         foreach (DataColumn col in d_data.Columns)
                         {
                             if (fields.HasElement(col.ColumnName))
                             {
                                 // process field data
                                 Element item = fields.GetElement(col.ColumnName);
                                 dataValues[fieldIndex] = item.GetValueAsString();
                             }
                             else
                             {
                                 if (col.ColumnName == "security")
                                 {
                                     dataValues[fieldIndex] = d_requestSecurity;
                                 }
                                 else
                                 {
                                     dataValues[fieldIndex] = DBNull.Value;
                                 }
                             }
                             fieldIndex++;
                         } // end foreach
                         // save bar data
                         d_data.Rows.Add(dataValues);
                     } // end for loop
                 }     // end if
             }         // end foreach
         }             // end if
     }                 // end foreach
     d_data.EndLoadData();
 }
コード例 #8
0
        /// <summary>
        /// Request status event
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processRequestStatusEvent(Event eventObj, Session session)
        {
            List <string> dataList = new List <string>();

            // process status message
            foreach (Message msg in eventObj)
            {
                DataGridViewRow dataRow = (DataGridViewRow)msg.CorrelationID.Object;
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("SubscriptionStarted")))
                {
                    // set subscribed color
                    foreach (DataGridViewCell cell in dataRow.Cells)
                    {
                        cell.Style.BackColor = Color.LightGreen;
                    }
                    try
                    {
                        // check for error
                        if (msg.HasElement("exceptions"))
                        {
                            // subscription has error
                            Element error       = msg.GetElement("exceptions");
                            int     searchIndex = 0;
                            for (int errorIndex = 0; errorIndex < error.NumValues; errorIndex++)
                            {
                                Element errorException = error.GetValueAsElement(errorIndex);
                                string  field          = errorException.GetElementAsString(FIELD_ID);
                                Element reason         = errorException.GetElement(REASON);
                                string  message        = reason.GetElementAsString(DESCRIPTION);
                                for (; searchIndex < dataGridViewData.ColumnCount - 1; searchIndex++)
                                {
                                    if (field == dataGridViewData.Columns[searchIndex].Name)
                                    {
                                        dataRow.Cells[searchIndex].Value = message;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        toolStripStatusLabel1.Text = e.Message;
                    }
                }
                else
                {
                    // check for subscription failure
                    if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("SubscriptionFailure")))
                    {
                        if (msg.HasElement(REASON))
                        {
                            Element reason  = msg.GetElement(REASON);
                            string  message = reason.GetElementAsString(DESCRIPTION);
                            dataRow.Cells[1].Value = message;
                        }
                    }
                }
            }
        }
コード例 #9
0
        private void processMessage(Message msg)
        {
            Element data    = msg.GetElement(BAR_DATA).GetElement(BAR_TICK_DATA);
            int     numBars = data.NumValues;

            System.Console.WriteLine("Response contains " + numBars + " bars");
            System.Console.WriteLine("Datetime\t\tOpen\t\tHigh\t\tLow\t\tClose" +
                                     "\t\tNumEvents\tVolume");
            for (int i = 0; i < numBars; ++i)
            {
                Element         bar         = data.GetValueAsElement(i);
                Datetime        time        = bar.GetElementAsDate(TIME);
                double          open        = bar.GetElementAsFloat64(OPEN);
                double          high        = bar.GetElementAsFloat64(HIGH);
                double          low         = bar.GetElementAsFloat64(LOW);
                double          close       = bar.GetElementAsFloat64(CLOSE);
                int             numEvents   = bar.GetElementAsInt32(NUM_EVENTS);
                long            volume      = bar.GetElementAsInt64(VOLUME);
                System.DateTime sysDatetime = time.ToSystemDateTime();
                System.Console.WriteLine(
                    sysDatetime.ToString("s") + "\t" +
                    open.ToString("C") + "\t\t" +
                    high.ToString("C") + "\t\t" +
                    low.ToString("C") + "\t\t" +
                    close.ToString("C") + "\t\t" +
                    numEvents + "\t\t" +
                    volume);
            }
        }
コード例 #10
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Broker Strategies [" + brokerStrategies.broker.name + "]: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKER_STRATEGIES))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing succesful RESPONSE");

                    Element strategies = message.GetElement("EMSX_STRATEGIES");

                    int numValues = strategies.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        string strategy = strategies.GetValueAsString(i);
                        if (strategy.Length > 0)
                        {
                            BrokerStrategy newBrokerStrategy = new BrokerStrategy(brokerStrategies, strategy);
                            brokerStrategies.add(newBrokerStrategy);
                            Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: added new strategy " + newBrokerStrategy.name);
                        }
                    }
                }
            }
コード例 #11
0
ファイル: Form1.cs プロジェクト: gcompagnon/FGA_Soft_Automate
        /// <summary>
        /// Request status event
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processRequestStatusEvent(Event eventObj, Session session)
        {
            List <string> dataList = new List <string>();

            // process status message
            foreach (Message msg in eventObj)
            {
                ListViewGroup group = (ListViewGroup)msg.CorrelationID.Object;
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("SubscriptionStarted")))
                {
                    // set waiting for subscription to start color
                    setGroupColor(group, Color.Yellow);
                }
                else
                {
                    // check for subscription failure
                    if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("SubscriptionFailure")))
                    {
                        // set exception color
                        setGroupColor(group, Color.Red);
                        if (msg.HasElement(REASON))
                        {
                            Element reason  = msg.GetElement(REASON);
                            string  message = reason.GetElementAsString(DESCRIPTION);
                            group.Items[0].SubItems[1].Text = message;
                        }
                    }
                }
            }
        }
コード例 #12
0
        private void processMessage(Message msg)
        {
            Element data     = msg.GetElement(TICK_DATA).GetElement(TICK_DATA);;
            int     numItems = data.NumValues;

            System.Console.WriteLine("TIME\t\t\tTYPE\tVALUE\t\tSIZE\tCC");
            System.Console.WriteLine("----\t\t\t----\t-----\t\t----\t--");
            for (int i = 0; i < numItems; ++i)
            {
                Element  item  = data.GetValueAsElement(i);
                Datetime time  = item.GetElementAsDate(TIME);
                string   type  = item.GetElementAsString(TYPE);
                double   value = item.GetElementAsFloat64(VALUE);
                int      size  = item.GetElementAsInt32(SIZE);
                string   cc    = "";
                if (item.HasElement(COND_CODE))
                {
                    cc = item.GetElementAsString(COND_CODE);
                }

                System.DateTime sysDatetime =
                    new System.DateTime(time.Year, time.Month, time.DayOfMonth,
                                        time.Hour, time.Minute, time.Second, time.MilliSecond);
                System.Console.WriteLine(
                    sysDatetime.ToString("s") + "\t" +
                    type + "\t" +
                    value.ToString("C") + "\t\t" +
                    size + "\t" +
                    cc);
            }
        }
コード例 #13
0
        /// <summary>
        /// Function to create and send ReferenceDataRequest
        /// </summary>
        /// <param name="session"></param>
        private void sendRefDataRequest(Session session)
        {
            Service refDataService = session.GetService(REFDATA_SVC);
            Request request        = refDataService.CreateRequest("ReferenceDataRequest");

            // Add securities to request
            Element securities = request.GetElement("securities");

            for (int i = 0; i < d_securities.Count; ++i)
            {
                securities.AppendValue((string)d_securities[i]);
            }

            // Add fields to request
            Element fields = request.GetElement("fields");

            for (int i = 0; i < d_fields.Count; ++i)
            {
                fields.AppendValue((string)d_fields[i]);
            }

            System.Console.WriteLine("Sending Request: " + request);
            if (d_authOption == "NONE")
            {
                session.SendRequest(request, null);
            }
            else
            {
                // request data with identity object
                session.SendRequest(request, d_identity, null);
            }
        }
コード例 #14
0
        private void processSubscriptionStatus(Event eventObj, Session session)
        {
            System.Console.WriteLine("Processing SUBSCRIPTION_STATUS");
            foreach (Message msg in eventObj)
            {
                string topic = (string)msg.CorrelationID.Object;
                System.Console.WriteLine(System.DateTime.Now.ToString("s") +
                                         ": " + topic + " - " + msg.MessageType);

                if (msg.HasElement(REASON))
                {
                    // This can occur on SubscriptionFailure.
                    Element reason = msg.GetElement(REASON);
                    System.Console.WriteLine("\t" +
                                             reason.GetElement(CATEGORY).GetValueAsString() +
                                             ": " + reason.GetElement(DESCRIPTION).GetValueAsString());
                }

                if (msg.HasElement(EXCEPTIONS))
                {
                    // This can occur on SubscriptionStarted if at least
                    // one field is good while the rest are bad.
                    Element exceptions = msg.GetElement(EXCEPTIONS);
                    for (int i = 0; i < exceptions.NumValues; ++i)
                    {
                        Element exInfo  = exceptions.GetValueAsElement(i);
                        Element fieldId = exInfo.GetElement(FIELD_ID);
                        Element reason  = exInfo.GetElement(REASON);
                        System.Console.WriteLine("\t" + fieldId.GetValueAsString() +
                                                 ": " + reason.GetElement(CATEGORY).GetValueAsString());
                    }
                }
                System.Console.WriteLine("");
            }
        }
コード例 #15
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.BASIC, "Teams: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Teams: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    String errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Error getting teams: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_TEAMS))
                {
                    Log.LogMessage(LogLevels.BASIC, "Teams: processing successful RESPONSE");

                    Element teamList = message.GetElement("TEAMS");

                    int numValues = teamList.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        String teamName = teamList.GetValueAsString(i);
                        Team   newTeam  = new Team(teams, teamName);
                        teams.add(newTeam);
                        Log.LogMessage(LogLevels.DETAILED, "Teams: Added new team " + newTeam.name);
                    }
                }
            }
        private void sendRefDataRequest()
        {
            Request request = d_blpRefDataSvc.CreateRequest(
                "ReferenceDataRequest");

            // Add securities.
            Element securities = request.GetElement("securities");

            for (int i = 0; i < d_securities.Count; ++i)
            {
                securities.AppendValue((String)d_securities[i]);
            }

            // Add fields
            Element fields = request.GetElement("fields");

            fields.AppendValue("PX_LAST");
            fields.AppendValue("DS002");

            request.Set("returnEids", true);

            // Send the request using the server's credentials
            System.Console.WriteLine("Sending RefDataRequest using server " +
                                     "credentials..." + request.ToString());
            d_session.SendRequest(request, d_appIdentity, null);
        }
コード例 #17
0
        /// <summary>
        /// Process miscellaneous events
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processMiscEvents(Event eventObj, Session session)
        {
            foreach (Message msg in eventObj)
            {
                switch (msg.MessageType.ToString())
                {
                case "SessionStarted":
                    // "Session Started"
                    break;

                case "SessionTerminated":
                case "SessionStopped":
                    // "Session Terminated"
                    break;

                case "ServiceOpened":
                    // "Reference Service Opened"
                    break;

                case "RequestFailure":
                    Element reason  = msg.GetElement(REASON);
                    string  message = string.Concat("Error: Source-", reason.GetElementAsString(SOURCE),
                                                    ", Code-", reason.GetElementAsString(ERROR_CODE), ", category-", reason.GetElementAsString(CATEGORY),
                                                    ", desc-", reason.GetElementAsString(DESCRIPTION));
                    toolStripStatusLabel1.Text = message;
                    break;

                default:
                    toolStripStatusLabel1.Text = msg.MessageType.ToString();
                    break;
                }
            }
        }
コード例 #18
0
        private void ProcessCurveListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element       result = results.GetValueAsElement(i);
                StringBuilder sb     = new StringBuilder();
                foreach (Name n in CURVE_RESPONSE_ELEMENTS)
                {
                    if (sb.Length != 0)
                    {
                        sb.Append(" ");
                    }
                    sb.Append(n).Append("=").Append(result.GetElementAsString(n));
                }
                Console.WriteLine(
                    "\t{0} {1} - {2} '{3}'",
                    i + 1,
                    result.GetElementAsString(CURVE_ELEMENT),
                    result.GetElementAsString(DESCRIPTION_ELEMENT),
                    sb.ToString());
            }
        }
コード例 #19
0
        private void sendIntradayTickRequest(Session session)
        {
            Service refDataService = session.GetService("//blp/refdata");
            Request request        = refDataService.CreateRequest("IntradayTickRequest");

            request.Set("security", d_security);

            // Add fields to request
            Element eventTypes = request.GetElement("eventTypes");

            for (int i = 0; i < d_events.Count; ++i)
            {
                eventTypes.AppendValue((string)d_events[i]);
            }

            // All times are in GMT
            request.Set("startDateTime", d_startDateTime);
            request.Set("endDateTime", d_endDateTime);

            if (d_conditionCodes)
            {
                request.Set("includeConditionCodes", true);
            }

            System.Console.WriteLine("Sending Request: " + request);
            session.SendRequest(request, null);
        }
コード例 #20
0
        private Request getBBRequest(ITickDataQuery query)
        {
            Service refDataService = Session.GetService("//blp/refdata");
            Request request        = refDataService.CreateRequest("IntradayTickRequest");

            request.Set("security", query.Security);

            Element eventTypes = request.GetElement("eventTypes");

            foreach (string field in query.Fields)
            {
                eventTypes.AppendValue(field);
            }

            request.Set("includeConditionCodes", query.IncludeConditionCode);
            request.Set("includeExchangeCodes", query.IncludeExchangeCode);

            request.Set("startDateTime",
                        new BDateTime(query.StartDate));

            request.Set("endDateTime",
                        new BDateTime(query.EndDate));

            return(request);
        }
コード例 #21
0
        /// <summary>
        /// Function to create and send PortfolioDataRequest
        /// </summary>
        /// <param name="session"></param>
        private void sendPortfolioDataRequest(Session session)
        {
            Service refDataService = session.GetService("//blp/refdata");
            Request request        = refDataService.CreateRequest("PortfolioDataRequest");

            // Add securities to request
            Element securities = request.GetElement("securities");

            for (int i = 0; i < d_securities.Count; ++i)
            {
                securities.AppendValue((string)d_securities[i]);
            }

            // Add fields to request
            Element fields = request.GetElement("fields");

            for (int i = 0; i < d_fields.Count; ++i)
            {
                fields.AppendValue((string)d_fields[i]);
            }

            // If specified, use REFERENCE_DATE override field
            // to get portfolio information historically.
            // The date must be in 'YYYYMMDD' format
            if (d_override != null && d_override.Length != 0)
            {
                Element overrides = request["overrides"];
                Element override1 = overrides.AppendElement();
                override1.SetElement("fieldId", "REFERENCE_DATE");
                override1.SetElement("value", d_override);
            }

            System.Console.WriteLine("Sending Request: " + request);
            session.SendRequest(request, null);
        }
コード例 #22
0
        private void run(string[] args)
        {
            // if only -h was entered for usage return without starting session
            if (!parseCommandLine(args))
            {
                return;
            }

            SessionOptions sessionOptions = new SessionOptions();

            sessionOptions.ServerHost = d_host;
            sessionOptions.ServerPort = d_port;
            System.Console.WriteLine("Connecting to " + d_host + ":" + d_port);

            Session session        = new Session(sessionOptions);
            bool    sessionStarted = session.Start();

            if (!sessionStarted)
            {
                System.Console.WriteLine("Failed to start session.");
                return;
            }

            if (!session.OpenService(REFDATA_SVC))
            {
                System.Console.WriteLine("Failed to open service: " + REFDATA_SVC);
                return;
            }

            Service fieldInfoService = session.GetService(REFDATA_SVC);
            Request request          = fieldInfoService.CreateRequest("HistoricalDataRequest");

            // Add securities to request
            Element securities = request.GetElement("securities");

            for (int i = 0; i < d_securities.Count; ++i)
            {
                securities.AppendValue((string)d_securities[i]);
            }

            // Add fields to request
            Element fields = request.GetElement("fields");

            for (int i = 0; i < d_fields.Count; ++i)
            {
                fields.AppendValue((string)d_fields[i]);
            }

            request.Set("startDate", d_startDate);
            request.Set("endDate", d_endDate);

            System.Console.WriteLine("Sending Request: " + request);
            session.SendRequest(request, null);

            eventLoop(session);

            session.Stop();
        }//end run
コード例 #23
0
        // return true if processing is completed, false otherwise
        private void processResponseEvent(Event eventObj)
        {
            foreach (Message msg in eventObj.GetMessages())
            {
                if (msg.HasElement(RESPONSE_ERROR))
                {
                    printErrorInfo("REQUEST FAILED: ", msg.GetElement(RESPONSE_ERROR));
                    continue;
                }

                Element data          = msg.GetElement(DATA);
                Element securities    = data.GetElement(SECURITY_DATA);
                int     numSecurities = securities.NumValues;
                System.Console.WriteLine("Processing " + numSecurities + " securities:");
                for (int i = 0; i < numSecurities; ++i)
                {
                    Element security = securities.GetValueAsElement(i);
                    string  ticker   = security.GetElementAsString(SECURITY);
                    System.Console.WriteLine("\nTicker: " + ticker);
                    if (security.HasElement("securityError"))
                    {
                        printErrorInfo("\tSECURITY FAILED: ",
                                       security.GetElement(SECURITY_ERROR));
                        continue;
                    }

                    Element fields = security.GetElement(FIELD_DATA);
                    if (fields.NumElements > 0)
                    {
                        System.Console.WriteLine("FIELD\t\tVALUE");
                        System.Console.WriteLine("-----\t\t-----");
                        int numElements = fields.NumElements;
                        for (int j = 0; j < numElements; ++j)
                        {
                            Element field = fields.GetElement(j);
                            System.Console.WriteLine(field.Name + "\t\t" +
                                                     field.GetValueAsString());
                        }
                    }
                    System.Console.WriteLine("");
                    Element fieldExceptions = security.GetElement(FIELD_EXCEPTIONS);
                    if (fieldExceptions.NumValues > 0)
                    {
                        System.Console.WriteLine("FIELD\t\tEXCEPTION");
                        System.Console.WriteLine("-----\t\t---------");
                        for (int k = 0; k < fieldExceptions.NumValues; ++k)
                        {
                            Element fieldException =
                                fieldExceptions.GetValueAsElement(k);
                            printErrorInfo(fieldException.GetElementAsString(FIELD_ID) +
                                           "\t\t", fieldException.GetElement(ERROR_INFO));
                        }
                    }
                }
            }
        }
コード例 #24
0
ファイル: Form1.cs プロジェクト: gcompagnon/FGA_Soft_Automate
        /// <summary>
        /// Process bulk data
        /// </summary>
        /// <param name="security"></param>
        /// <param name="data"></param>
        private void processBulkData(string security, Element data)
        {
            DataTable bulkTable = null;

            // bulk data dataset
            if (d_bulkData == null)
            {
                d_bulkData = new DataSet();
            }
            // get bulk data
            Element bulk = data.GetValueAsElement(0);

            if (d_bulkData.Tables.Contains(bulk.Name.ToString()))
            {
                // get existing bulk data table
                bulkTable = d_bulkData.Tables[bulk.Name.ToString()];
            }
            else
            {
                // create new bulk data table
                bulkTable = d_bulkData.Tables.Add(bulk.Name.ToString());
            }
            // create column if not already exist
            if (!bulkTable.Columns.Contains("security"))
            {
                bulkTable.Columns.Add(new DataColumn("security", typeof(String)));
                bulkTable.Columns.Add(new DataColumn("Id", typeof(int)));
            }
            // create columns in data table for bulk data
            foreach (Element item in bulk.Elements)
            {
                if (!bulkTable.Columns.Contains(item.Name.ToString()))
                {
                    bulkTable.Columns.Add(new DataColumn(item.Name.ToString(), typeof(String)));
                }
            }
            // populate bulk
            int count = 0;

            for (int index = 0; index < data.NumValues; index++)
            {
                bulk = data.GetValueAsElement(index);
                object[] dataArray = new object[bulk.NumElements + 2];
                dataArray[0] = security;
                dataArray[1] = count;
                int dataIndex = 2;
                foreach (Element item in bulk.Elements)
                {
                    dataArray[dataIndex] = item.GetValueAsString();
                    dataIndex++;
                }
                bulkTable.Rows.Add(dataArray);
                count++;
            }
        }
コード例 #25
0
        public void DownloadComponents(string Index, string bbgField, out List <string> members)
        {
            members = new List <string>();
            Request request    = refDataService.CreateRequest("ReferenceDataRequest");
            Element securities = request.GetElement("securities");

            securities.AppendValue(Index);
            Element fields = request.GetElement("fields");

            fields.AppendValue(bbgField);

            Trace.WriteLine("Sending Index Components Request: " + Index);

            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: " + msg.GetElement("responseError").GetElement("message"));
                        }

                        var security = msg.GetElement("securityData").GetValueAsElement();
                        var field    = security.GetElement("fieldData").GetElement(bbgField);

                        for (int i = 0; i < field.NumValues; i++)
                        {
                            string data = "";
                            if (field.NumValues > 1)
                            {
                                data = field.GetValueAsElement(i).GetElement(0).GetValueAsString();
                            }
                            else
                            {
                                data = field.GetValueAsString();
                            }
                            members.Add(data + " Equity");
                        }
                    }
                    if (eventObj.Type == Event.EventType.RESPONSE)
                    {
                        done = true;
                    }
                }
            }
        }
        private void distributeMessage(Message msg)
        {
            Service service = msg.Service;

            List <int> failedEntitlements = new List <int>();

            Element securities    = msg.GetElement(SECURITY_DATA);
            int     numSecurities = securities.NumValues;

            System.Console.WriteLine("Processing " + numSecurities + " securities:");
            for (int i = 0; i < numSecurities; ++i)
            {
                Element security     = securities.GetValueAsElement(i);
                String  ticker       = security.GetElementAsString(SECURITY);
                Element entitlements = ((security.HasElement(EID_DATA) ?
                                         security.GetElement(EID_DATA) : null));

                int numUsers = d_identities.Count;
                if (entitlements != null)
                {
                    // Entitlements are required to access this data
                    for (int j = 0; j < numUsers; ++j)
                    {
                        failedEntitlements.Clear();
                        Identity identity = (Identity)d_identities[j];
                        if (identity.HasEntitlements(entitlements, service,
                                                     failedEntitlements))
                        {
                            System.Console.WriteLine("User: "******" is entitled to get data for: " + ticker);
                            // Now Distribute message to the user.
                        }
                        else
                        {
                            System.Console.WriteLine("User: "******" is NOT entitled to get data for: " + ticker +
                                                     " - Failed eids: ");
                            printFailedEntitlements(failedEntitlements);
                        }
                    }
                }
                else
                {
                    // No Entitlements are required to access this data.
                    for (int j = 0; j < numUsers; ++j)
                    {
                        System.Console.WriteLine("User: "******" is entitled to get data for: " + ticker);
                        // Now Distribute message to the user.
                    }
                }
            }
        }
コード例 #27
0
        bool ProcessErrors(Message msg)
        {
            Element securityData = msg.GetElement(SECURITY_DATA);

            if (securityData.HasElement(SECURITY_ERROR))
            {
                Element security_error = securityData.GetElement(SECURITY_ERROR);
                Element error_message  = security_error.GetElement(MESSAGE);
                System.Console.WriteLine(error_message);
                return(true);
            }
            return(false);
        }
コード例 #28
0
        private void ProcessInstrumentListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element result = results.GetValueAsElement(i);
                Console.WriteLine(
                    "\t{0} {1} - {2}",
                    i + 1,
                    result.GetElementAsString(SECURITY_ELEMENT),
                    result.GetElementAsString(DESCRIPTION_ELEMENT));
            }
        }
コード例 #29
0
        private void ProcessGovtListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element result = results.GetValueAsElement(i);
                Console.WriteLine(
                    "\t{0} {1}, {2} - {3}",
                    i + 1,
                    result.GetElementAsString(PARSEKY_ELEMENT),
                    result.GetElementAsString(NAME_ELEMENT),
                    result.GetElementAsString(TICKER_ELEMENT));
            }
        }
コード例 #30
0
        }//end printErrorInfo

        bool ProcessExceptions(Message msg)
        {
            Element securityData     = msg.GetElement(SECURITY_DATA);
            Element field_exceptions = securityData.GetElement(FIELD_EXCEPTIONS);

            if (field_exceptions.NumValues > 0)
            {
                Element element       = field_exceptions.GetValueAsElement(0);
                Element field_id      = element.GetElement(FIELD_ID);
                Element error_info    = element.GetElement(ERROR_INFO);
                Element error_message = error_info.GetElement(MESSAGE);
                System.Console.WriteLine(field_id);
                System.Console.WriteLine(error_message);
                return(true);
            }
            return(false);
        }
コード例 #31
0
ファイル: Bloomberg.cs プロジェクト: jozefRudy/BBdownloader
        private Tuple<bool, dynamic> ConvertDataType(string dataType, Element field)
        {
            bool ok = false;
            dynamic elementValue = null;

            switch (dataType)
            {
                case "DATE":
                    {
                        DateTime _elementValue;
                        if (DateTime.TryParse(field.GetValue().ToString(), out _elementValue) ||
                            DateTime.TryParseExact(field.GetValue().ToString(), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out _elementValue))
                        {
                            ok = true;
                            elementValue = _elementValue;
                        }
                        break;
                    }
                case "FLOAT64":
                case "FLOAT":
                    {
                        float _elementValue;
                        ok = float.TryParse(field.GetValue().ToString(), out _elementValue);
                        elementValue = _elementValue;
                        break;
                    }
                default:
                    elementValue = field.GetValue().ToString();
                    elementValue = ((string)elementValue).Replace(',', ' ');
                    ok = true;
                    break;
            }
            return Tuple.Create<bool, dynamic>(ok, elementValue);
        }
コード例 #32
0
ファイル: Bloomberg.cs プロジェクト: jozefRudy/BBdownloader
        private IEnumerable<Tuple<string, SortedList<DateTime, dynamic>>> ParseUniversal(Element securityDataArray, List<IField> fields)
        {
            if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.P)
            {
                Console.WriteLine("\nDownload Paused, press c to continue");
                while (!Console.KeyAvailable || Console.ReadKey(true).Key  != ConsoleKey.C)
                {
                    Thread.Sleep(1000 * 1);
                }
            }

            var fieldNames = from f in fields
                             select f.FieldName.ToUpper();

            SortedList<DateTime, dynamic> output;

            if (securityDataArray.IsArray)
            {
                for (int i = 0; i < securityDataArray.NumValues; i++) //data for multiple securities
                {
                    Element securityData = securityDataArray.GetValueAsElement(i); //single security
                    string securityName = securityData.GetElementAsString("security");
                    Element fieldData = securityData.GetElement("fieldData"); //data for multiple fields.

                    int j = -1;
                    foreach (var fieldName in fieldNames)
                    {
                        j++;
                        Element field = fieldData.GetElement(fieldName);

                        output = new SortedList<DateTime, dynamic>();

                        if (field.NumValues>0)
                        {
                            var data = field.GetValue(); //check field.NumValues - sometimes NumValues>1 - then output into single field - because it is single field but with multiple values

                            string dataType;
                            if (fields[j].Type != null && fields[j].Type.Length > 0)
                                dataType = fields[j].Type;
                            else
                                dataType = field.Datatype.ToString();

                            var result = ConvertDataType(dataType, field);

                            output.Add(ExtensionMethods.GetBusinessDay(DateTime.Today, -1), result.Item2);
                        }
                        yield return Tuple.Create(securityName,output);
                    }
                }
            }
            else
            {
                var Outputs = new SortedList<DateTime, dynamic>[fieldNames.Count()];

                for (int i = 0; i < Outputs.Length; i++)
                    Outputs[i] = new SortedList<DateTime, dynamic>();

                Element fieldDataArray = securityDataArray.GetElement("fieldData");  // data for multiple fields, multiple dates
                string securityName = securityDataArray.GetElementAsString("security");

                for (int i = 0; i < fieldDataArray.NumValues; i++) //equals 0 if no fields or security wrong
                {
                    Element fieldData = fieldDataArray.GetValueAsElement(i);  // data for multiple fields, single date

                    int j = -1;

                    foreach (var fieldName in fieldNames)
                    {
                        j++;

                        Element date = fieldData.GetElement("date");

                        if (!fieldData.HasElement(fieldName))
                            continue;

                        Element field = fieldData.GetElement(fieldName);

                        dynamic elementValue = null;
                        bool ok = false;

                        string dataType;

                        if (fields[j].Type != null && fields[j].Type.Length > 0)
                            dataType = fields[j].Type;
                        else
                            dataType = field.Datatype.ToString();

                        var result = ConvertDataType(dataType, field);
                        ok = result.Item1;
                        elementValue = result.Item2;

                        if (!ok) { elementValue = null; }

                        Outputs[j].Add(date.GetValueAsDatetime().ToSystemDateTime(), elementValue);
                    }
                }

                for (int i = 0; i < Outputs.Length; i++)
                    yield return Tuple.Create(securityName, Outputs[i]);
            }
        }