예제 #1
0
        /// <summary>
        /// Get override field informations
        /// </summary>
        /// <param name="ids"></param>
        private void getFieldInformation(List <string> ids)
        {
            // get auth service
            if (d_service == null)
            {
                if (d_session.OpenService(@"//blp/apiflds"))
                {
                    d_service = d_session.GetService(@"//blp/apiflds");
                }
            }

            Request request = d_service.CreateRequest("FieldInfoRequest");

            request.Set("returnFieldDocumentation", true);

            foreach (string id in ids)
            {
                request.Append("id", id);
            }

            // set field info request correlationID to 3000
            CorrelationID cId = new CorrelationID(3000);

            // cancel previous pending request
            d_session.Cancel(cId);
            d_session.SendRequest(request, cId);
        }
        private void processServiceEvent(Event evt, Session session)
        {
            System.Console.WriteLine("\nProcessing " + evt.Type);

            foreach (Message msg in evt)
            {
                if (msg.MessageType.Equals(SERVICE_OPENED))
                {
                    System.Console.WriteLine("Service opened...");

                    Service service = session.GetService(d_service);

                    Request request = service.CreateRequest("CreateBasket");

                    // define the basket name
                    request.Set("EMSX_BASKET_NAME", "TestBasket");


                    // add any number of orders
                    request.Append("EMSX_SEQUENCE", 4313227);
                    request.Append("EMSX_SEQUENCE", 4313228);
                    //request.Append("EMSX_SEQUENCE", 1234567)

                    System.Console.WriteLine("Request: " + request.ToString());

                    requestID = new CorrelationID();

                    // Submit the request
                    try
                    {
                        session.SendRequest(request, requestID);
                    }
                    catch (Exception ex)
                    {
                        System.Console.Error.WriteLine("Failed to send the request: " + ex.Message);
                    }
                }
                else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE))
                {
                    System.Console.Error.WriteLine("Error: Service failed to open");
                }
            }
        }
예제 #3
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");
                }
            }
        }
        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");
                }
            }
        }
예제 #5
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("GroupRouteEx");

                    // Multiple order numbers can be added
                    request.Append("EMSX_SEQUENCE", 3663923);
                    request.Append("EMSX_SEQUENCE", 3663924);
                    request.Append("EMSX_SEQUENCE", 3663925);

                    // The fields below are mandatory
                    request.Set("EMSX_AMOUNT_PERCENT", 100); // Note the amount here is %age of order amount
                    request.Set("EMSX_BROKER", "BMTB");

                    // For GroupRoute, the below values need to be added, but are taken
                    // from the original order when the route is created.
                    request.Set("EMSX_HAND_INSTRUCTION", "ANY");
                    request.Set("EMSX_ORDER_TYPE", "MKT");
                    request.Set("EMSX_TICKER", "IBM US Equity");
                    request.Set("EMSX_TIF", "DAY");

                    // The fields below are optional
                    //request.Set("EMSX_ACCOUNT","TestAccount");
                    //request.Set("EMSX_BOOKNAME","BookName");
                    //request.Set("EMSX_CFD_FLAG", "1");
                    //request.Set("EMSX_CLEARING_ACCOUNT", "ClrAccName");
                    //request.Set("EMSX_CLEARING_FIRM", "FirmName");
                    //request.Set("EMSX_EXEC_INSTRUCTION", "Drop down values from EMSX Ticket");
                    //request.Set("EMSX_GET_WARNINGS", "0");
                    //request.Set("EMSX_GTD_DATE", "20170105");
                    //request.Set("EMSX_LIMIT_PRICE", 123.45);
                    //request.Set("EMSX_LOCATE_BROKER", "BMTB");
                    //request.Set("EMSX_LOCATE_ID", "SomeID");
                    //request.Set("EMSX_LOCATE_REQ", "Y");
                    //request.Set("EMSX_NOTES", "Some notes");
                    //request.Set("EMSX_ODD_LOT", "0");
                    //request.Set("EMSX_P_A", "P");
                    //request.Set("EMSX_RELEASE_TIME", 34341);
                    //request.Set("EMSX_REQUEST_SEQ", 1001);
                    //request.Set("EMSX_STOP_PRICE", 123.5);
                    //request.Set("EMSX_TRADER_UUID", 1234567);

                    // Set the Request Type if this is for multi-leg orders
                    // only valid for options

                    /*
                     * Element requestType = request.GetElement("EMSX_REQUEST_TYPE");
                     * requestType.SetChoice("Multileg");
                     * Element multileg = requestType.GetElement("Multileg");
                     * multileg.SetElement("EMSX_AMOUNT",10);
                     * multileg.GetElement("EMSX_ML_RATIO").AppendValue(2);
                     * multileg.GetElement("EMSX_ML_RATIO").AppendValue(3);
                     */

                    // Add the Route Ref ID values
                    Element routeRefIDPairs = request.GetElement("EMSX_ROUTE_REF_ID_PAIRS");
                    Element route1          = routeRefIDPairs.AppendElement();
                    route1.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef1");
                    route1.SetElement("EMSX_SEQUENCE", 3663923);

                    Element route2 = routeRefIDPairs.AppendElement();
                    route2.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef2");
                    route2.SetElement("EMSX_SEQUENCE", 3663924);

                    Element route3 = routeRefIDPairs.AppendElement();
                    route3.SetElement("EMSX_ROUTE_REF_ID", "MyRouteRef3");
                    route3.SetElement("EMSX_SEQUENCE", 3663925);

                    // Below we establish the strategy details. Strategy details
                    // are common across all orders in a GroupRoute operation.
                    // The following segment can be removed if no broker strategies are used

                    Element strategy = request.GetElement("EMSX_STRATEGY_PARAMS");
                    strategy.SetElement("EMSX_STRATEGY_NAME", "VWAP");

                    Element indicator = strategy.GetElement("EMSX_STRATEGY_FIELD_INDICATORS");
                    Element data      = strategy.GetElement("EMSX_STRATEGY_FIELDS");

                    // Strategy parameters must be appended in the correct order. See the output
                    // of GetBrokerStrategyInfo request for the order. The indicator value is 0 for
                    // a field that carries a value, and 1 where the field should be ignored

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "09:30:00"); // StartTime
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 0);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "10:30:00"); // EndTime
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 0);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // Max%Volume
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // %AMSession
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // OPG
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // MOC
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // CompletePX
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // TriggerPX
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // DarkComplete
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // DarkCompPX
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // RefIndex
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    data.AppendElement().SetElement("EMSX_FIELD_DATA", "");         // Discretion
                    indicator.AppendElement().SetElement("EMSX_FIELD_INDICATOR", 1);

                    System.Console.WriteLine("Request: " + request.ToString());

                    requestID = new CorrelationID();

                    // Submit the request
                    try
                    {
                        session.SendRequest(request, requestID);
                    }
                    catch (Exception ex)
                    {
                        System.Console.Error.WriteLine("Failed to send the request: " + ex.Message);
                    }
                }
                else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE))
                {
                    System.Console.Error.WriteLine("Error: Service failed to open");
                }
            }
        }
        private void run(String[] args)
        {
            d_port  = 8194;
            d_hosts = new List <string>();

            if (!parseCommandLine(args))
            {
                return;
            }

            // create session
            if (!createSession())
            {
                System.Console.Error.WriteLine("Failed to open session");
                return;
            }

            if (d_authOption != "NONE")
            {
                // Authenticate user using Generate Token Request
                if (!GenerateToken(out d_token))
                {
                    return;
                }

                //Authorization : pass Token into authorization request. Returns User handle with user's entitlements info set by server.
                if (!IsBPipeAuthorized(d_token, out d_identity))
                {
                    return;
                }
            }

            if (!d_session.OpenService(APIFLDS_SVC))
            {
                System.Console.Error.WriteLine("Failed to open " + APIFLDS_SVC);
                return;
            }

            Service fieldInfoService = d_session.GetService(APIFLDS_SVC);
            Request request          = fieldInfoService.CreateRequest(
                "FieldInfoRequest");
            Element idList = request.GetElement("id");

            request.Append("id", "LAST_PRICE");
            request.Append("id", "pq005");
            request.Append("id", "zz0002");

            request.Set("returnFieldDocumentation", false);

            System.Console.WriteLine("Sending Request: " + request);
            if (d_authOption == "NONE")
            {
                d_session.SendRequest(request, null);
            }
            else
            {
                // request data with identity object
                d_session.SendRequest(request, d_identity, null);
            }

            while (true)
            {
                try
                {
                    Event eventObj = d_session.NextEvent();
                    foreach (Message msg in eventObj)
                    {
                        if (eventObj.Type != Event.EventType.RESPONSE &&
                            eventObj.Type != Event.EventType.PARTIAL_RESPONSE)
                        {
                            continue;
                        }

                        Element fields      = msg.GetElement(FIELD_DATA);
                        int     numElements = fields.NumValues;

                        printHeader();
                        for (int i = 0; i < numElements; i++)
                        {
                            printField(fields.GetValueAsElement(i));
                        }
                        System.Console.WriteLine();
                    }
                    if (eventObj.Type == Event.EventType.RESPONSE)
                    {
                        break;
                    }
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine("Got Exception:" + ex);
                }
            }
        }
예제 #7
0
        public Dictionary <string, string> DownloadFieldInfo(string securityName, IEnumerable <IField> fields)
        {
            var outDict = new Dictionary <string, string>();

            Request request = refDataService.CreateRequest("FieldInfoRequest");

            if (fields == null || fields.Count() == 0)
            {
                return(null);
            }
            foreach (var item in fields)
            {
                request.Append("id", item.FieldName);
            }

            request.Set("returnFieldDocumentation", true);
            session.SendRequest(request, null);

            bool done = false;

            while (!done)
            {
                Event eventObj = session.NextEvent();

                if (eventObj.Type == Event.EventType.RESPONSE || eventObj.Type == Event.EventType.PARTIAL_RESPONSE)
                {
                    foreach (var msg in eventObj)
                    {
                        if (msg.AsElement.HasElement("responseError"))
                        {
                            throw new Exception("Response error for fields [" + fields.ToExtendedString() + "]: " + msg.GetElement("responseError").GetElement("message") + "field: ");
                        }

                        Element securityDataArray = msg.GetElement("fieldData");
                        for (int i = 0; i < securityDataArray.NumValues; i++)
                        {
                            Element fieldData = securityDataArray.GetValueAsElement(i);

                            try
                            {
                                Element fieldInfo = fieldData.GetElement("fieldInfo");

                                string fieldName = fieldInfo.GetElementAsString("mnemonic");
                                string output    = fieldInfo.GetElementAsString("documentation");

                                var fieldNickName = from f in fields
                                                    where f.FieldName == fieldName
                                                    select f.FieldNickName;

                                foreach (var f in fieldNickName)
                                {
                                    if (!outDict.ContainsKey(f))
                                    {
                                        outDict.Add(f, output);
                                    }
                                }
                            }
                            catch
                            {
                                Trace.WriteLine("Problem Downloading Field Definition for " + fieldData.GetElement("id"));
                            }
                        }
                    }
                }
                if (eventObj.Type == Event.EventType.RESPONSE)
                {
                    done = true;
                }
            }
            return(outDict);
        }
예제 #8
0
        public IEnumerable <Tuple <string, SortedList <DateTime, dynamic> > > DownloadData(List <string> securityNames, List <IField> fields, DateTime?startDate = null, DateTime?endDate = null)
        {
            try
            {
                Request request = refDataService.CreateRequest(fields[0].requestType);

                foreach (var name in securityNames)
                {
                    request.Append("securities", name);
                }

                foreach (var f in fields)
                {
                    request.Append("fields", f.FieldName);
                }

                Element overrides = request["overrides"];

                foreach (var item in fields[0].Overrides)
                {
                    if (item.Key.Length > 0 && item.Value.Length > 0)
                    {
                        dynamic value = ParseBool(item.Value);

                        if (!IsOverride(item.Key))
                        {
                            request.Set(item.Key, value);
                        }
                        else
                        {
                            Element override1 = overrides.AppendElement();
                            override1.SetElement("fieldId", item.Key);
                            override1.SetElement("value", value);
                        }
                    }
                }

                if (fields[0].requestType == "HistoricalDataRequest")
                {
                    var d = startDate.Value;

                    if (startDate != null)
                    {
                        request.Set("startDate", startDate.Value.ToString("yyyyMMdd"));
                    }

                    if (endDate != null)
                    {
                        var      nextYear   = new DateTime(DateTime.Today.Year + 1, 1, 1);
                        DateTime upperLimit = endDate.Value > nextYear ? nextYear : endDate.Value;

                        request.Set("endDate", upperLimit.ToString("yyyyMMdd"));
                    }

                    request.Set("maxDataPoints", 10000);
                }

                session.SendRequest(request, null);
            }
            catch
            {
                Trace.WriteLine("\nWrong bloomberg request for " + fields[0].FieldNickName);
                yield break;
            }

            bool done = false;

            while (!done)
            {
                Event eventObj = session.NextEvent();

                if (eventObj.Type == Event.EventType.RESPONSE || eventObj.Type == Event.EventType.PARTIAL_RESPONSE)
                {
                    foreach (var msg in eventObj)
                    {
                        if (msg.AsElement.HasElement("responseError"))
                        {
                            throw new Exception("Response error for fields [" + fields.ToExtendedString() + "]: " + msg.GetElement("responseError").GetElement("message") + "field: ");
                        }

                        Element securityData = msg.GetElement("securityData");

                        foreach (var item in ParseUniversal(securityData, fields))
                        {
                            yield return(item);
                        }
                    }
                }
                if (eventObj.Type == Event.EventType.RESPONSE)
                {
                    done = true;
                }
            }
        }
        private void run(String[] args)
        {
            d_serverHost = "localhost";
            d_serverPort = 8194;

            if (!parseCommandLine(args))
            {
                return;
            }

            SessionOptions sessionOptions = new SessionOptions();

            sessionOptions.ServerHost = d_serverHost;
            sessionOptions.ServerPort = d_serverPort;

            System.Console.WriteLine("Connecting to " + d_serverHost
                                     + ":" + d_serverPort);
            Session session        = new Session(sessionOptions);
            bool    sessionStarted = session.Start();

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

            Service fieldInfoService = session.GetService(APIFLDS_SVC);
            Request request          = fieldInfoService.CreateRequest(
                "FieldInfoRequest");
            Element idList = request.GetElement("id");

            request.Append("id", "LAST_PRICE");
            request.Append("id", "pq005");
            request.Append("id", "zz0002");

            request.Set("returnFieldDocumentation", false);

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

            while (true)
            {
                try
                {
                    Event eventObj = session.NextEvent();
                    foreach (Message msg in eventObj)
                    {
                        if (eventObj.Type != Event.EventType.RESPONSE &&
                            eventObj.Type != Event.EventType.PARTIAL_RESPONSE)
                        {
                            continue;
                        }

                        Element fields      = msg.GetElement(FIELD_DATA);
                        int     numElements = fields.NumValues;

                        printHeader();
                        for (int i = 0; i < numElements; i++)
                        {
                            printField(fields.GetValueAsElement(i));
                        }
                        System.Console.WriteLine();
                    }
                    if (eventObj.Type == Event.EventType.RESPONSE)
                    {
                        break;
                    }
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine("Got Exception:" + ex);
                }
            }
        }