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("CancelRoute");

                    //request.set("EMSX_REQUEST_SEQ", 1);
                    //request.set("EMSX_TRADER_UUID", 1234567);

                    Element routes = request.GetElement("ROUTES"); //Note, the case is important.
                    Element route  = routes.AppendElement();       // Multiple routes can be cancelled in a single request
                    route.GetElement("EMSX_SEQUENCE").SetValue(3657996);
                    route.GetElement("EMSX_ROUTE_ID").SetValue(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 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");
                }
            }
        }
Exemple #3
0
        private bool GenerateToken()
        {
            bool isTokenSuccess = false;
            bool isRunning      = false;

            CorrelationID tokenReqId      = new CorrelationID(99);
            EventQueue    tokenEventQueue = new EventQueue();

            session.GenerateToken(tokenReqId, tokenEventQueue);

            while (!isRunning)
            {
                Event eventObj = tokenEventQueue.NextEvent();
                if (eventObj.Type == Event.EventType.TOKEN_STATUS)
                {
                    System.Console.WriteLine("processTokenEvents");
                    foreach (Message msg in eventObj)
                    {
                        System.Console.WriteLine(msg.ToString());
                        if (msg.MessageType == TOKEN_SUCCESS)
                        {
                            isTokenSuccess = true;
                            isRunning      = true;
                            break;
                        }
                        else if (msg.MessageType == TOKEN_FAILURE)
                        {
                            Console.WriteLine("Received : " + TOKEN_FAILURE.ToString());
                            isRunning = true;
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Error while Token Generation");
                            isRunning = true;
                            break;
                        }
                    }
                }
            }

            return(isTokenSuccess);
        }
Exemple #4
0
        private void processResponseEvent(Event evt, Session session)
        {
            System.Console.WriteLine("Received Event: " + evt.Type);

            foreach (Message msg in evt)
            {
                if (msg.MessageType.Equals(AUTHORIZATION_SUCCESS))
                {
                    System.Console.WriteLine("Authorization successfull...");

                    sendCreateIOI(session, d_emsx);
                }
                else if (msg.MessageType.Equals(AUTHORIZATION_FAILURE))
                {
                    System.Console.WriteLine("Authorisation failed...");
                    System.Console.WriteLine(msg.ToString());

                    // Here you can insert code to automatically retry the authorisation if required
                }
                else if (msg.CorrelationID == requestID)
                {
                    System.Console.WriteLine(msg.MessageType + ">>" + msg.ToString());

                    if (msg.MessageType.Equals("handle"))
                    {
                        String val = msg.GetElementAsString("value");
                        System.Console.WriteLine("Response: Value=" + val);
                    }
                    else
                    {
                        System.Console.WriteLine("Unexpected message...");
                        System.Console.WriteLine(msg.ToString());
                    }

                    quit = true;
                }
                else
                {
                    System.Console.WriteLine("Unexpected authorization message...");
                    System.Console.WriteLine(msg.ToString());
                }
            }
        }
        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 processResponseEvent(Event evt, Session session)
        {
            System.Console.WriteLine("Received Event: " + evt.Type);

            foreach (Message msg in evt)
            {
                System.Console.WriteLine("MESSAGE: " + msg.ToString());
                System.Console.WriteLine("CORRELATION ID: " + msg.CorrelationID);

                if (evt.Type == Event.EventType.RESPONSE && msg.CorrelationID == requestID)
                {
                    System.Console.WriteLine("Message Type: " + msg.MessageType);

                    if (msg.MessageType.Equals(ERROR_INFO))
                    {
                        int    errorCode    = msg.GetElementAsInt32("ERROR_CODE");
                        String errorMessage = msg.GetElementAsString("ERROR_MESSAGE");
                        System.Console.WriteLine("ERROR CODE: " + errorCode + "\tERROR MESSAGE: " + errorMessage);
                    }
                    else if (msg.MessageType.Equals(GET_BROKER_STRATEGY_INFO_WITH_ASSET_CLASS))
                    {
                        Element strategies = msg.GetElement("EMSX_STRATEGY_INFO");

                        int numValues = strategies.NumValues;

                        for (int i = 0; i < numValues; i++)
                        {
                            Element e = strategies.GetValueAsElement(i);

                            String fieldName   = e.GetElementAsString("FieldName");
                            String disable     = e.GetElementAsString("Disable");
                            String stringValue = e.GetElementAsString("StringValue");

                            System.Console.WriteLine("EMSX_STRATEGY_INFO: " + fieldName + ", " + disable + ", " + stringValue);
                        }
                    }

                    quit = true;
                    session.Stop();
                }
            }
        }
        private void eventLoop(EventQueue evtQueue, Session session)
        {
            bool done = false;

            while (!done)
            {
                Event eventObj = evtQueue.NextEvent();
                if (eventObj.Type == Event.EventType.PARTIAL_RESPONSE)
                {
                    System.Console.WriteLine("Processing Partial Response");
                    processResponseEvent(eventObj);
                }
                else if (eventObj.Type == Event.EventType.RESPONSE)
                {
                    System.Console.WriteLine("Processing Response");
                    processResponseEvent(eventObj);
                    done = true;
                }
            }
        }
Exemple #8
0
        private void processSubscriptionDataEvent(Event evt, Session session)
        {
            Log.LogMessage(LogLevels.DETAILED, "Processing " + evt.Type.ToString());

            foreach (Message msg in evt)
            {
                Log.LogMessage(LogLevels.DETAILED, "Looking for handler : " + msg.CorrelationID.ToString());

                if (subscriptionMessageHandlers.ContainsKey(msg.CorrelationID))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Message handler found: " + msg.CorrelationID.ToString());
                    // process the incoming market data event
                    subscriptionMessageHandlers[msg.CorrelationID].handleMessage(msg);
                }
                else
                {
                    Log.LogMessage(LogLevels.DETAILED, "Failed to find message handler for: " + msg.CorrelationID.ToString());
                }
            }
        }
Exemple #9
0
        private void processResponse(Event evt, Session session)
        {
            Log.LogMessage(LogLevels.DETAILED, "Processing RESPONSE event");

            foreach (Message msg in evt)
            {
                CorrelationID cID = msg.CorrelationID;
                if (requestMessageHandlers.ContainsKey(cID))
                {
                    MessageHandler mh = requestMessageHandlers[cID];
                    mh.processMessage(msg);
                    requestMessageHandlers.Remove(cID);
                    Log.LogMessage(LogLevels.BASIC, "EMSXAPI: MessageHandler removed [" + cID + "]");
                }
                else
                {
                    Log.LogMessage(LogLevels.BASIC, "Unexpected RESPONSE event recieved: " + msg.ToString());
                }
            }
        }
Exemple #10
0
        private void processSubscriptionStatus(Event evt, Session session)
        {
            Log.LogMessage(LogLevels.BASIC, "Processing " + evt.Type.ToString());

            foreach (Message msg in evt)
            {
                if (msg.MessageType.Equals(SUBSCRIPTION_STARTED))
                {
                    Log.LogMessage(LogLevels.BASIC, "Subscription started successfully: " + msg.CorrelationID.ToString());
                }
                else if (msg.MessageType.Equals(SUBSCRIPTION_FAILURE))
                {
                    Log.LogMessage(LogLevels.BASIC, "Error: Subscription failed: " + msg.CorrelationID.ToString());
                }
                else if (msg.MessageType.Equals(SUBSCRIPTION_TERMINATED))
                {
                    Log.LogMessage(LogLevels.BASIC, "Subscription terminated : " + msg.CorrelationID.ToString());
                }
            }
        }
        }//end eventLoop

        private void processResponseEvent(Event eventObj)
        {
            foreach (Message msg in eventObj)
            {
                if (msg.HasElement(RESPONSE_ERROR))
                {
                    printErrorInfo("REQUEST FAILED: ", msg.GetElement(RESPONSE_ERROR));
                    continue;
                }
                if ((eventObj.Type != Event.EventType.PARTIAL_RESPONSE) && (eventObj.Type != Event.EventType.RESPONSE))
                {
                    continue;
                }
                if (!ProcessErrors(msg))
                {
                    ProcessExceptions(msg);
                    ProcessFields(msg);
                }
            }
        }//end processResponseEvent
Exemple #12
0
        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");
                }
            }
        }
Exemple #13
0
        /// <summary>
        /// Data event
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processEvent(Event eventObj, Session session)
        {
            switch (eventObj.Type)
            {
            case Event.EventType.RESPONSE:
                // process final respose for request
                processRequestDataEvent(eventObj, session);


                break;

            case Event.EventType.PARTIAL_RESPONSE:
                // process partial response
                processRequestDataEvent(eventObj, session);
                break;

            default:
                processMiscEvents(eventObj, session);
                break;
            }
        }
        /// <summary>
        /// Process SubscriptionData event
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processSubscriptionDataEvent(Event eventObj, Session session)
        {
            System.Console.WriteLine("Processing SUBSCRIPTION_DATA");
            foreach (Message msg in eventObj.GetMessages())
            {
                string topic = (string)msg.CorrelationID.Object;
                System.Console.WriteLine(System.DateTime.Now.ToString("s") +
                                         ": " + topic + " - " + msg.MessageType);
                //System.Console.WriteLine(msg.AsElement);
                if (msg.MessageType.Equals("PageUpdate"))
                {
                    processPageElement(msg.AsElement, topic);
                }
                else if (msg.MessageType.Equals("RowUpdate"))
                {
                    processRowElement(msg.AsElement, topic);
                }

                //showUpdatedPage(topic);
            }
        }
 private void processResponseEvent(Event eventObj)
 {
     foreach (Message msg in eventObj)
     {
         if (msg.AsElement.Name.Equals(ERROR_RESPONSE))
         {
             printErrorInfo("REQUEST FAILED: ", msg.AsElement);
             continue;
         }
         else if (msg.AsElement.Name.Equals(REPLAY_RESPONSE))
         {
             System.Console.WriteLine("# of Recovered data: " + msg.GetElement(MARKET_DATAS).NumValues);
             continue;
         }
         else
         {
             System.Console.WriteLine("Received Response: " + msg.ToString());
             continue;
         }
     }
 }
Exemple #16
0
        private void processSubscriptionDataEvent(Event eventObj, Session session)
        {
            System.Console.WriteLine("Processing SUBSCRIPTION_DATA");
            foreach (Message msg in eventObj)
            {
                string topic = (string)msg.CorrelationID.Object;
                System.Console.WriteLine(System.DateTime.Now.ToString("s")
                                         + ": " + topic + " - " + msg.MessageType);

                foreach (Element field in msg.Elements)
                {
                    if (field.IsNull)
                    {
                        System.Console.WriteLine("\t\t" + field.Name + " is NULL");
                        continue;
                    }

                    processElement(field);
                }
            }
        }
Exemple #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"
                    toolStripStatusLabel1.Text = msg.MessageType.ToString();
                    break;

                case "SessionTerminated":
                case "SessionStopped":
                    // "Session Terminated"
                    toolStripStatusLabel1.Text = msg.MessageType.ToString();
                    break;

                case "SessionStartupFailure":
                    // Failed to start session
                    toolStripStatusLabel1.Text = msg.MessageType.ToString();
                    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;
                }
            }
        }
Exemple #18
0
        private void processEvent(Event eventObj, Session session)
        {
            switch (eventObj.Type)
            {
            case Event.EventType.RESPONSE:     // final respose

                OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg,
                                                 String.Format("Response ({0} of {1})  received", requestPointer.ToString(), TickDataQueries.Count.ToString())));

                processRequestDataEvent(eventObj, session);

                foreach (Message msg in eventObj)
                {
                    if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("IntradayTickResponse")))
                    {
                        CorrelationID cID           = msg.CorrelationID;
                        var           tickDateQuery = (ITickDataQuery)msg.CorrelationID.Object;
                        OnBBHTDUpdate(new BBHTDEventArgs(EventType.DataMsg,
                                                         String.Format("Completed ({0} of {1})", requestPointer.ToString(), TickDataQueries.Count.ToString()), tickDateQuery));
                    }
                }

                if (AutoChainQueries)
                {
                    SendNextRequest();
                }

                break;

            case Event.EventType.PARTIAL_RESPONSE:
                partialResponseCnt++;
                OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg, "Pratial Response #" + partialResponseCnt.ToString()));
                processRequestDataEvent(eventObj, session);
                break;

            default:
                // processMiscEvents(eventObj, session);
                break;
            }
        }
        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("GetBrokerStrategyInfoWithAssetClass");

                    //request.set("EMSX_REQUEST_SEQ", 1);

                    request.Set("EMSX_ASSET_CLASS", "EQTY"); //one of EQTY, OPT, FUT or MULTILEG_OPT
                    request.Set("EMSX_BROKER", "BMTB");
                    request.Set("EMSX_STRATEGY", "VWAP");

                    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");
                }
            }
        }
Exemple #20
0
        /// <summary>
        /// Process data and populate to listview
        /// </summary>
        /// <param name="eventObj"></param>
        private void processData(Event eventObj)
        {
            // process data
            foreach (Message msg in eventObj)
            {
                // get correlation id
                int scenario   = (int)msg.CorrelationID.Value % NUMBER_OF_SCENARIO + 1;
                int priceIndex = (int)msg.CorrelationID.Value / NUMBER_OF_SCENARIO;

                // check for request error
                if (msg.HasElement(RESPONSE_ERROR))
                {
                    MessageBox.Show("REQUEST FAILED: " +
                                    msg.GetElement(RESPONSE_ERROR).ToString(), "Request Error");
                    continue;
                }

                // get securities
                Element securities    = msg.GetElement(SECURITY_DATA);
                int     numSecurities = securities.NumValues;
                for (int i = 0; i < numSecurities; ++i)
                {
                    // get security
                    Element security = securities.GetValueAsElement(i);
                    string  ticker   = security.GetElementAsString(SECURITY);
                    // check for security error
                    if (security.HasElement("securityError"))
                    {
                        MessageBox.Show("SECURITY FAILED: " +
                                        security.GetElement(SECURITY_ERROR).ToString(), "Security Error");
                        continue;
                    }
                    // get fields
                    Element returnFields = security.GetElement(FIELD_DATA);

                    // populate scenario fields on Analytic tab
                    populateScenario(dataGridViewAnalyticInput.Columns[scenario].HeaderText, priceIndex, returnFields);
                }
            }
        }
Exemple #21
0
 private void processSubscriptionDataEvent(Event eventObj, Session session)
 {
     System.Console.WriteLine("Processing SUBSCRIPTION_DATA");
     foreach (Message msg in eventObj)
     {
         string topic = (string)msg.CorrelationID.Object;
         foreach (Element field in msg.Elements)
         {
             switch (d_subscriptionDataMsgEnumTable[field.Name])
             {
             case SubscriptionDataMsgType.BID:
             case SubscriptionDataMsgType.ASK:
             case SubscriptionDataMsgType.LAST_PRICE:
             {
                 System.Console.WriteLine(System.DateTime.Now.ToString("s")
                                          + ": " + topic + " " + field.Name + " " +
                                          field.GetValueAsString());
             } break;
             }
         }
     }
 }
Exemple #22
0
        private void processServiceEvent(Event evt, Session session)
        {
            Log.LogMessage(LogLevels.BASIC, "Processing " + evt.Type.ToString());

            foreach (Message msg in evt)
            {
                if (msg.MessageType.Equals(SERVICE_OPENED))
                {
                    Log.LogMessage(LogLevels.BASIC, "Service opened...");

                    this.service = session.GetService(MKTDATA_SERVICE);

                    Log.LogMessage(LogLevels.BASIC, "Got service...ready...");

                    this.ready = true;
                }
                else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE))
                {
                    Log.LogMessage(LogLevels.BASIC, "Error: Service failed to open");
                }
            }
        }
Exemple #23
0
        private void processSubscriptionStatusEvent(Event evt, Session session)
        {
            System.Console.WriteLine("Received Event: " + evt.Type);

            foreach (Message msg in evt)
            {
                if (msg.MessageType.Equals(SUBSCRIPTION_STARTED))
                {
                    System.Console.WriteLine("IOI subscription started successfully");
                }
                else if (msg.MessageType.Equals(SUBSCRIPTION_FAILURE))
                {
                    System.Console.WriteLine("Error: IOI subscription failed");
                    System.Console.WriteLine("MESSAGE: " + msg);
                }
                else if (msg.MessageType.Equals(SUBSCRIPTION_TERMINATED))
                {
                    System.Console.WriteLine("IOI subscription terminated");
                    System.Console.WriteLine("MESSAGE: " + msg);
                }
            }
        }
 // Event handler for the session
 public void processBBEvent(Event eventObject, Session session)
 {
     // We are only interested in market data events related to
     // our subscription
     if (eventObject.Type == Event.EventType.SUBSCRIPTION_DATA)
     {
         // Each event may have multiple messages. So loop
         // through all of the messages
         foreach (Message msg in eventObject)
         {
             // For Debugging use the display all of the fields:
             System.Console.WriteLine(msg);
             // If we have both LAST_TRADE and SIZE_LAST_TRADE elements then
             // assign the values to the text boxes
             if (msg.HasElement("LAST_TRADE") &&
                 msg.HasElement("SIZE_LAST_TRADE"))
             {
                 // Obtain the topic of the message
                 string topic = (string)msg.CorrelationID.Object;
                 try
                 {
                     tbPrice.Invoke(new MethodInvoker(delegate
                     {
                         tbPrice.Text = (string)msg.GetElementAsString("LAST_TRADE");
                     }));
                     tbVolume.Invoke(new MethodInvoker(delegate
                     {
                         tbVolume.Text = (string)msg.GetElementAsString("SIZE_LAST_TRADE");
                     }));
                 }
                 catch (Exception e)
                 {
                     // Send an error message to console
                     System.Console.WriteLine("Error: " + e.ToString());
                 }
             } // end if msg has both last trade and size
         } // end loop over Messages in the eventObject
     } // end if event type is subscription data
 }
        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("DeleteOrder");

                    //request.set("EMSX_REQUEST_SEQ", 1);

                    request.GetElement("EMSX_SEQUENCE").AppendValue(4116556);
                    request.GetElement("EMSX_SEQUENCE").AppendValue(4116561);

                    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 processResponseEvent(Event evt, Session session)
        {
            System.Console.WriteLine("Received Event: " + evt.Type);

            foreach (Message msg in evt)
            {
                System.Console.WriteLine("MESSAGE: " + msg.ToString());
                System.Console.WriteLine("CORRELATION ID: " + msg.CorrelationID);

                if (evt.Type == Event.EventType.RESPONSE && msg.CorrelationID == requestID)
                {
                    System.Console.WriteLine("Message Type: " + msg.MessageType);

                    if (msg.MessageType.Equals(ERROR_INFO))
                    {
                        int    errorCode    = msg.GetElementAsInt32("ERROR_CODE");
                        String errorMessage = msg.GetElementAsString("ERROR_MESSAGE");
                        System.Console.WriteLine("ERROR CODE: " + errorCode + "\tERROR MESSAGE: " + errorMessage);
                    }
                    else if (msg.MessageType.Equals(GET_TRADERS))
                    {
                        Element traders = msg.GetElement("EMSX_TRADER_UUID");

                        int numValues = traders.NumValues;

                        for (int i = 0; i < numValues; i++)
                        {
                            String trader = traders.GetValueAsString(i);

                            System.Console.WriteLine("TRADERS: " + trader);
                        }
                    }

                    quit = true;
                    session.Stop();
                }
            }
        }
Exemple #27
0
 public void processEvent(Event eventObj, Session session)
 {
     try
     {
         if (eventObj.Type == Event.EventType.SUBSCRIPTION_DATA)
         {
             foreach (Message msg in eventObj)
             {
                 if (msg.HasElement(LAST_PRICE))
                 {
                     Element field = msg.GetElement(LAST_PRICE);
                     System.Console.WriteLine(eventObj.Type
                                              + ": " + field.Name +
                                              " = " + field.GetValueAsString());
                 }
             }
         }
     }
     catch (Exception e)
     {
         System.Console.WriteLine(e.ToString());
     }
 }
        public void processEvent(Event eventObj, Session session)
        {
            try
            {
                switch (eventObj.Type)
                {
                case Event.EventType.SESSION_STATUS:
                case Event.EventType.SERVICE_STATUS:
                case Event.EventType.REQUEST_STATUS:
                case Event.EventType.AUTHORIZATION_STATUS:
                    printEvent(eventObj);
                    break;

                case Event.EventType.SUBSCRIPTION_DATA:
                    processSubscriptionDataEvent(eventObj, session);
                    break;
                }
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e.ToString());
            }
        }
 public void processSubscriptionDataEvent(Event eventObj, Session session)
 {
     foreach (Message msg in eventObj)
     {
         if (!msg.HasElement(d_fieldAsName))
         {
             continue;
         }
         string topic = (string)msg.CorrelationID.Object;
         System.Console.WriteLine(System.DateTime.Now.ToString("s")
                                  + ": " + topic + " - " + msg.MessageType);
         Element field = msg.GetElement(d_fieldAsName);
         if (field.IsNull)
         {
             System.Console.WriteLine(d_field + "is null, ignoring");
         }
         Service service          = msg.Service;
         bool    needsEntitlement = msg.HasElement(EID);
         for (int j = 0; j < d_identities.Count; ++j)
         {
             Identity identity = (Identity)d_identities[j];
             if (!needsEntitlement ||
                 identity.HasEntitlements(msg.GetElement(EID), service))
             {
                 System.Console.WriteLine("User: "******" is entitled to " + field);
                 // Now Distribute message to the user.
             }
             else
             {
                 System.Console.WriteLine("User: "******" is NOT entitled for " + d_field + " because of " +
                                          msg.GetElement(EID));
             }
         }
     }
 }
        // return true if processing is completed, false otherwise
        private void processResponseEvent(Event eventObj)
        {
            foreach (Message msg in eventObj)
            {
                if (msg.HasElement(RESPONSE_CODE))
                {
                    Element responseCode = msg.GetElement(RESPONSE_CODE);
                    int     resultCode   = responseCode.GetElementAsInt32(RESULT_CODE);
                    if (resultCode > 0)
                    {
                        string message  = responseCode.GetElementAsString(RESULT_TEXT);
                        string sourceId = responseCode.GetElementAsString(SOURCE_ID);
                        System.Console.WriteLine("Request Failed: " + message);
                        System.Console.WriteLine("Source ID: " + sourceId);
                        System.Console.WriteLine("Resoult Code: " + resultCode);
                        continue;
                    }
                }

                Element snapshot    = msg.GetElement(SNAPSHOT);
                int     numElements = snapshot.NumElements;
                for (int i = 0; i < numElements; ++i)
                {
                    Element dataItem = snapshot.GetElement(i);
                    // Checking if the data item is Bulk data item
                    if (dataItem.IsArray)
                    {
                        processBulkData(dataItem);
                    }
                    else
                    {
                        System.Console.WriteLine("\t" + dataItem.Name + " = "
                                                 + dataItem.GetValueAsString());
                    }
                }
            }
        }
Exemple #31
0
        private void processSubscriptionStatus(Event eventObj, Session session)
        {
            System.Console.Out.WriteLine("Processing SUBSCRIPTION_STATUS");
            foreach (Message msg in eventObj)
            {
                string topic = (string)msg.CorrelationID.Object;
                switch (d_subscriptionStatusMsgEnumTable[msg.MessageType])
                {
                case SubscriptionStatusMsgType.SUBSCRIPTION_STARTED:
                {
                    System.Console.Out.WriteLine("Subscription for: " +
                                                 topic + " started");
                } break;


                case SubscriptionStatusMsgType.SUBSCRIPTION_FAILURE:
                {
                    System.Console.Out.WriteLine("Subscription for: " +
                                                 topic + " failed");
                    printEvent(eventObj, session);
                } break;


                case SubscriptionStatusMsgType.SUBSCRIPTION_TERMINATED:
                {
                    System.Console.Out.WriteLine("Subscription for: " +
                                                 topic + " has been terminated");
                    printEvent(eventObj, session);
                } break;

                default:
                    System.Console.Out.WriteLine(
                        "Unhandled subscription status: " + msg.MessageType);
                    break;
                }
            }
        }
        private static void ProcessRequestDataEvent(Event eventObj, Session session)
        {
            // process message
            foreach (Message msg in eventObj)
            {
                // get correlation id
                var securityObj = (BloombergSecurity)msg.CorrelationID.Object;

                // process market data
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("MarketDataEvents")))
                {
                    // check for initial paint
                    if (msg.HasElement("SES_START"))
                    {
                        if (msg.GetElementAsBool("IS_DELAYED_STREAM"))
                        {
                            securityObj.SetDelayedStream();
                        }
                    }

                    // process tick data
                    for (int fieldIndex = 1; fieldIndex < securityObj.SecurityFields.Count; fieldIndex++)
                    {
                        string field = securityObj.SecurityFields[fieldIndex].ToUpper();
                        if (msg.HasElement(field))
                        {
                            //msg.GetElementAsDatetime(Element.)
                            // check element to see if it has null value
                            if (!msg.GetElement(field).IsNull)
                            {
                                string value = msg.GetElementAsString(field);
                                securityObj.Setfield(securityObj.SecurityFields[fieldIndex], value);
                            }
                        }
                    }
                    // allow application to update UI
                    Application.DoEvents();
                }
            }
        }
Exemple #33
0
        /// <summary>
        /// Process subscription data
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processRequestDataEvent(Event eventObj, Session session)
        {
            string securityName = string.Empty;
            // process message
            foreach (Message msg in eventObj.GetMessages())
            {
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("ReferenceDataResponse")))
                {
                    // process errors
                    if (msg.HasElement(RESPONSE_ERROR))
                    {
                        Element error = msg.GetElement(RESPONSE_ERROR);
                        Error(String.Format("{0}, {1}", kKospiIndex, error.GetElementAsString(MESSAGE)));
                    }
                    else
                    {
                        Element secDataArray = msg.GetElement(SECURITY_DATA);
                        int numberOfSecurities = secDataArray.NumValues;
                        if (secDataArray.HasElement(SECURITY_ERROR))
                        {
                            // security error
                            Element secError = secDataArray.GetElement(SECURITY_ERROR);
                            Element security = secDataArray.GetElement(SECURITY);
                            Error(secError.GetElementAsString(MESSAGE));
                            Error(security.ToString());
                        }
                        if (secDataArray.HasElement(FIELD_EXCEPTIONS))
                        {
                            // field error
                            Element error = secDataArray.GetElement(FIELD_EXCEPTIONS);
                            for (int errorIndex = 0; errorIndex < error.NumValues; errorIndex++)
                            {
                                Element errorException = error.GetValueAsElement(errorIndex);
                                string field = errorException.GetElementAsString(FIELD_ID);
                                Element errorInfo = errorException.GetElement(ERROR_INFO);
                                string message = errorInfo.GetElementAsString(MESSAGE);
                                logger.Warn("{0} has field error.", kKospiIndex);
                            } // end for
                        } // end if
                        // process securities
                        for (int index = 0; index < numberOfSecurities; index++)
                        {
                            Element secData = secDataArray.GetValueAsElement(index);

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

                            if (fieldData.HasElement(kIndexWeight))
                            {
                                Element weightField = fieldData.GetElement(kIndexWeight);

                                for (int i = 0; i < weightField.NumValues; ++i)
                                {
                                    String memberTicker = "";
                                    double weight = 0.0;
                                    Element row = weightField.GetValueAsElement(i);
                                    if (row.HasElement("Member Ticker and Exchange Code"))
                                    {
                                        Element item = row.GetElement("Member Ticker and Exchange Code");
                                        memberTicker = item.GetValueAsString();
                                    }
                                    else
                                    {
                                        continue;
                                    }

                                    if (row.HasElement("Percentage Weight"))
                                    {
                                        Element item = row.GetElement("Percentage Weight");
                                        weight = item.GetValueAsFloat64();
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                    _resultDict.Add(memberTicker + " Equity", weight);
                                }
            //                                logger.Info(fieldStr);
                            }

                        } // end for
                    } // end else
                } // end if
            } // end foreach
        }
Exemple #34
0
 /// <summary>
 /// Request status event
 /// </summary>
 /// <param name="eventObj"></param>
 /// <param name="session"></param>
 private void processMiscEvents(Event eventObj, Session session)
 {
     foreach (Message msg in eventObj.GetMessages())
     {
         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));
                 logger.Info(message);
                 break;
             default:
                 logger.Info(msg.MessageType.ToString());
                 break;
         }
     }
 }
Exemple #35
0
 /// <summary>
 /// Bloomberg data event
 /// </summary>
 /// <param name="eventObj"></param>
 /// <param name="session"></param>
 private void processEvent(Event eventObj, Session session)
 {
     if (InvokeRequired)
     {
         Invoke(new EventHandler(processEvent), new object[] { eventObj, session });
     }
     else
     {
         try
         {
             switch (eventObj.Type)
             {
                 case Event.EventType.RESPONSE:
                     // process data
                     processRequestDataEvent(eventObj, session);
                     break;
                 case Event.EventType.PARTIAL_RESPONSE:
                     // process partial data
                     processRequestDataEvent(eventObj, session);
                     break;
                 default:
                     // process misc events
                     processMiscEvents(eventObj, session);
                     break;
             }
         }
         catch (System.Exception e)
         {
             logger.Info(e.Message.ToString());
         }
     }
 }
 /// <summary>
 /// Data Event
 /// </summary>
 /// <param name="eventObj"></param>
 /// <param name="session"></param>
 private void ProcessEvent(Event eventObj, Session session)
 {
     //if (InvokeRequired)
     //{
     //    try
     //    {
     //        Invoke(new EventHandler(processEvent), new object[] { eventObj, session });
     //    }
     //    catch (Exception)
     //    {
     //        Console.WriteLine("Invoke failed");
     //    }
     //}
     //else
     //{
     //try
     //{
         switch (eventObj.Type)
         {
             case Event.EventType.SUBSCRIPTION_DATA:
                 // process subscription data
                 ProcessRequestDataEvent(eventObj, session);
                 break;
             case Event.EventType.SUBSCRIPTION_STATUS:
                 // process subscription status
                 ProcessRequestStatusEvent(eventObj, session);
                 break;
             default:
                 ProcessMiscEvents(eventObj, session);
                 break;
         }
     //}
     //catch (System.Exception e)
     //{
     //    //toolStripStatusLabel1.Text = e.Message.ToString();
     //}
     //}
 }
        /// <summary>
        /// Request status event
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private static void ProcessRequestStatusEvent(Event eventObj, Session session)
        {
            List<string> dataList = new List<string>();
            // process status message
            foreach (Message msg in eventObj)
            {

                var securityObj = (BloombergSecurity)msg.CorrelationID.Object;
                DataGridViewRow dataRow = securityObj.DataGridRow;

                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;
                        }
                    }
                }
            }
        }
Exemple #38
0
        // Event handler for the session
        public void processBBEvent(Event eventObject, Session session)
        {
            //Only use the data coming in related to our subscription data
            if (eventObject.Type == Event.EventType.SUBSCRIPTION_DATA)
            {
                //Loop through the messages in the eventObject
                foreach (Message msg in eventObject)
                {
                    // Get only the messages that have the last trade price and size of last trade
                    if (msg.HasElement("LAST_TRADE") &&
                        msg.HasElement("SIZE_LAST_TRADE"))
                    {
                        // Obtain the topic of the message
                        string topic = (string)msg.CorrelationID.Object;
                        try
                        {
                            //Creates a new thread for getting the price of last trade
                            tbPrice.Invoke(new MethodInvoker(delegate
                            {
                                tbPrice.Text = (string)msg.GetElementAsString("LAST_TRADE");
                            }));
                            //Creates a new thread for getting volume or size of trade
                            tbVolume.Invoke(new MethodInvoker(delegate
                            {
                                tbVolume.Text = (string)msg.GetElementAsString("SIZE_LAST_TRADE");
                            })); // end of tvVolume.Invoke()
                            tbVWAP.Invoke(new MethodInvoker(delegate
                            {
                                String VWAP = calculateVWAP(Convert.ToDouble(msg.GetElementAsString("LAST_TRADE")),
                                                            Convert.ToDouble(msg.GetElementAsString("SIZE_LAST_TRADE")));
                                tbVWAP.Text = VWAP;
                                chtPrices.Series[1].Points.AddY(Convert.ToDouble(VWAP));
                            })); // end of tbVWAP.invoke()
                            chtPrices.Invoke(new MethodInvoker(delegate
                            {
                                double lastTradePrice = Convert.ToDouble(msg.GetElementAsString("LAST_TRADE"));
                                double myVolume = Convert.ToDouble(msg.GetElementAsString("SIZE_LAST_TRADE"));
                                if (firstPointY)
                                {
                                    //Set the Y axis range to the lastTradePrice-1 to lastTradePrice+1
                                    chtPrices.ChartAreas[0].AxisY.Minimum = lastTradePrice - 1;
                                    chtPrices.ChartAreas[0].AxisY.Maximum = lastTradePrice + 1;

                                    //It is no longer the first plotted point from here on out
                                    firstPointY = false;
                                }
                                //This will change the primary y axis scale if price is smaller than the minimum y axis
                                else if(lastTradePrice < chtPrices.ChartAreas[0].AxisY.Minimum)
                                    chtPrices.ChartAreas[0].AxisY.Minimum = lastTradePrice-0.01;

                                //This will change the primary y axis scale if price is smaller than the minimum y axis
                                else if(lastTradePrice > chtPrices.ChartAreas[0].AxisY.Maximum)
                                    chtPrices.ChartAreas[0].AxisY.Maximum = lastTradePrice+0.01;

                                // Get previous tickTest and price
                                double prevTick = tickTestsResults[tickTestsResults.Count - 1];
                                double prevPrice = prices[prices.Count - 1];
                                // Calculate the new sum of money flow with tickTest()
                                tickTest(lastTradePrice, myVolume, prevPrice, prevTick);
                                // Plot the money flow first to get the previous trade price
                                chtPrices.Series[2].Points.AddY(sumMF);

                                //Add the lastTradePrice to our prices list
                                prices.Add(lastTradePrice);
                                // Plot the last trade price
                                chtPrices.Series[0].Points.AddY(lastTradePrice);
                            })); //end of chtPrices.Invoke()
                        }
                        catch (Exception e)
                        {
                            // Send an error message to console
                            System.Console.WriteLine("Error: " + e.ToString());
                        }
                    } // end if msg has both last trade and size
                } // end loop over Messages in the eventObject
            } // end if event type is subscription data
        }
Exemple #39
0
        /// <summary>
        /// Process subscription data
        /// </summary>
        /// <param name="eventObj"></param>
        /// <param name="session"></param>
        private void processRequestDataEvent(Event eventObj, Session session)
        {
            string securityName = string.Empty;
            Boolean hasFieldError = false;
            // clear column tag of field error message.
            foreach (DataGridViewColumn col in dataGridViewData.Columns)
            {
                col.Tag = null;
            }
            // process message
            foreach (Message msg in eventObj.GetMessages())
            {
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("HistoricalDataResponse")))
                {
                    // process errors
                    if (msg.HasElement(RESPONSE_ERROR))
                    {
                        Element error = msg.GetElement(RESPONSE_ERROR);

                        Error(error.GetElementAsString(MESSAGE));
                    }
                    else
                    {
                        Element secDataArray = msg.GetElement(SECURITY_DATA);
                        int numberOfSecurities = secDataArray.NumValues;
                        if (secDataArray.HasElement(SECURITY_ERROR))
                        {
                            // security error
                            Element secError = secDataArray.GetElement(SECURITY_ERROR);
                            Element security = secDataArray.GetElement(SECURITY);
                            Error(secError.GetElementAsString(MESSAGE));
                            Error(security.ToString());
                        }
                        if (secDataArray.HasElement(FIELD_EXCEPTIONS))
                        {
                            // field error
                            Element error = secDataArray.GetElement(FIELD_EXCEPTIONS);
                            for (int errorIndex = 0; errorIndex < error.NumValues; errorIndex++)
                            {
                                Element errorException = error.GetValueAsElement(errorIndex);
                                string field = errorException.GetElementAsString(FIELD_ID);
                                Element errorInfo = errorException.GetElement(ERROR_INFO);
                                string message = errorInfo.GetElementAsString(MESSAGE);
                                dataGridViewData.Columns[field].Tag = message;
                                hasFieldError = true;
                            } // end for
                        } // end if
                        // process securities
                        for (int index = 0; index < numberOfSecurities; index++)
                        {
                            foreach (Element secData in secDataArray.Elements)
                            {
                                switch (secData.Name.ToString())
                                {
                                    case "eidsData":
                                        // process security eid data here
                                        break;
                                    case "security":
                                        // security name
                                        securityName = secData.GetValueAsString();
                                        break;
                                    case "fieldData":
                                        if (hasFieldError && secData.NumValues == 0)
                                        {
                                            // no data but have field error
                                            object[] dataValues = new object[dataGridViewData.ColumnCount];
                                            dataValues[0] = securityName;
                                            int fieldIndex = 0;
                                            foreach (DataGridViewColumn col in dataGridViewData.Columns)
                                            {
                                                if (col.Tag != null)
                                                {
                                                    dataValues[fieldIndex] = col.Tag.ToString();
                                                }
                                                fieldIndex++;
                                            }
                                            d_data.Rows.Add(dataValues);
                                        }
                                        else
                                        {
                                            // get field data
                                            d_data.BeginLoadData();
                                            for (int pointIndex = 0; pointIndex < secData.NumValues; pointIndex++)
                                            {
                                                int fieldIndex = 0;
                                                object[] dataValues = new object[dataGridViewData.ColumnCount];
                                                Element fields = secData.GetValueAsElement(pointIndex);
                                                foreach (DataGridViewColumn col in dataGridViewData.Columns)
                                                {
                                                    try
                                                    {
                                                        if (col.Name == "security")
                                                            dataValues[fieldIndex] = securityName;
                                                        else
                                                        {
                                                            if (fields.HasElement(col.Name))
                                                            {
                                                                Element item = fields.GetElement(col.Name);
                                                                if (item.IsArray)
                                                                {
                                                                    // bulk field data
                                                                    dataValues[fieldIndex] = "Bulk Data";
                                                                }
                                                                else
                                                                {
                                                                    // field data
                                                                    dataValues[fieldIndex] = item.GetValueAsString();
                                                                }
                                                            }
                                                            else
                                                            {
                                                                // no field value
                                                                if (col.Tag.ToString().Length > 0)
                                                                {
                                                                    // field has error
                                                                    dataValues[fieldIndex] = col.Tag.ToString();
                                                                }
                                                                else
                                                                    dataValues[fieldIndex] = DBNull.Value;
                                                            }
                                                        }  // end if
                                                    }
                                                    catch (Exception ex)
                                                    {
                                                        // display error
                                                        dataValues[fieldIndex] = ex.Message;
                                                    }
                                                    finally
                                                    {
                                                        fieldIndex++;
                                                    }
                                                } // end foreach
                                                // add data to data table
                                                d_data.Rows.Add(dataValues);
                                            } // end for
                                            d_data.EndLoadData();
                                        }
                                        break;
                                } // end switch
                            } // end foreach
                        } // end for
                    } // end else
                } // end if
            } // end foreach
        }