コード例 #1
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("GetBrokerSpecForUuid");
                    request.Set("uuid", 8049857);

                    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");
                }
            }
        }
コード例 #2
0
        public void AddSubscription(Security security)
        {
            Log.LogMessage(LogLevels.DETAILED, "Adding subscription for security: " + security.GetName());

            CorrelationID cID = new CorrelationID(security.GetName());

            Subscription newSubscription = new Subscription(security.GetName(), fields.GetFieldList(), "", cID);

            Log.LogMessage(LogLevels.DETAILED, "Topic string: " + newSubscription.SubscriptionString);

            List <Subscription> newSubList = new List <Subscription>();

            newSubList.Add(newSubscription);

            messageHandlers.Add(cID, security);

            try {
                Log.LogMessage(LogLevels.DETAILED, "Subscribing...");
                this.session.Subscribe(newSubList);
                Log.LogMessage(LogLevels.DETAILED, "Subscription request sent...");
            }
            catch (Exception ex) {
                Log.LogMessage(LogLevels.BASIC, "Failed to subscribe: " + newSubList.ToString());
                Console.WriteLine(ex.ToString());
            }
        }
コード例 #3
0
ファイル: EasyIOI.cs プロジェクト: tkim/EasyMSXRepository
        public void CreateIOISubscription()
        {
            Log.LogMessage(LogLevels.DETAILED, "Create IOI Subscription");

            CorrelationID cID = new CorrelationID();

            Subscription newSubscription = new Subscription(IOISUBDATA_SERVICE + "/ioi", cID);

            Log.LogMessage(LogLevels.DETAILED, "Topic string: " + newSubscription.SubscriptionString);

            List <Subscription> newSubList = new List <Subscription>();

            newSubList.Add(newSubscription);

            subscriptionMessageHandlers.Add(cID, this.iois);

            Log.LogMessage(LogLevels.DETAILED, "Added new IOIs message handler: " + cID.ToString());


            try
            {
                Log.LogMessage(LogLevels.DETAILED, "Subscribing...");
                this.session.Subscribe(newSubList);
                Log.LogMessage(LogLevels.DETAILED, "Subscription request sent...");
            }
            catch (Exception ex)
            {
                Log.LogMessage(LogLevels.BASIC, "Failed to subscribe: " + newSubList.ToString());
                Console.WriteLine(ex.ToString());
            }
        }
コード例 #4
0
        private bool sendRequest(ITickDataQuery tickDataQuery)
        {
            if (!ConnectAndOpenSession())
            {
                return(false);
            }

            Request request = getBBRequest(tickDataQuery);

            CorrelationID cID = new CorrelationID(tickDataQuery);

            Session.Cancel(cID);
            Session.SendRequest(request, cID);

            var msg = String.Format("Submitted request: {0} ({1} ~ {2}) ...",
                                    tickDataQuery.Security,
                                    tickDataQuery.StartDate.ToString("yy/MM/dd HH:mm:ss"),
                                    tickDataQuery.EndDate.ToString("yy/MM/dd HH:mm:ss"));

            OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg, msg));

            if (!Asynchronous)
            {
                return(synchronousProcessing());
            }

            return(true);
        }
        private bool authorizeUsers()
        {
            bool is_any_user_authorized = false;

            // Authorize each of the users
            for (int i = 0; i < d_tokens.Count; ++i)
            {
                bool isRunning = true;

                Identity identity = d_session.CreateIdentity();
                d_identities.Add(identity);

                Request authRequest = d_apiAuthSvc.CreateAuthorizationRequest();
                authRequest.Set("token", d_tokens[i]);

                CorrelationID correlator = new CorrelationID(i);
                EventQueue    eventQueue = new EventQueue();

                d_session.SendAuthorizationRequest(authRequest, identity,
                                                   eventQueue, correlator);

                Event eventObj = eventQueue.NextEvent();
                while (isRunning)
                {
                    if (eventObj.Type == Event.EventType.RESPONSE ||
                        eventObj.Type == Event.EventType.REQUEST_STATUS)
                    {
                        foreach (Message msg in eventObj)
                        {
                            if (msg.MessageType == AUTHORIZATION_SUCCESS)
                            {
                                System.Console.WriteLine("Authorization SUCCESS for user:"******"Authorization FAILED for user:" + (i + 1));
                                System.Console.WriteLine(msg);
                                isRunning = false;
                                break;
                            }
                            else
                            {
                                System.Console.WriteLine(msg);
                                isRunning = false;
                            }
                        }
                    }
                }
            }
            return(is_any_user_authorized);
        }
 private void printEvent(Event eventObj)
 {
     foreach (Message msg in eventObj)
     {
         CorrelationID correlationId = msg.CorrelationID;
         if (correlationId != null)
         {
             System.Console.WriteLine("Correlator: " + correlationId);
         }
         System.Console.WriteLine(msg);
     }
 }
コード例 #7
0
ファイル: EasyMSX.cs プロジェクト: tkim/cs_EasyMSX
        internal void submitRequest(Request request, MessageHandler handler)
        {
            CorrelationID newCID = new CorrelationID();

            Log.LogMessage(LogLevels.BASIC, "EMSXAPI: Submitting request...adding MessageHandler [" + newCID + "]");
            requestMessageHandlers.Add(newCID, handler);

            try
            {
                session.SendRequest(request, newCID);
            }
            catch (Exception e)
            {
                System.Console.Error.WriteLine(e.StackTrace);
            }
        }
        private bool GenerateApplicationToken(out string token)
        {
            bool isTokenSuccess = false;
            bool isRunning      = false;

            token = string.Empty;
            CorrelationID tokenReqId      = new CorrelationID(99);
            EventQueue    tokenEventQueue = new EventQueue();

            System.Console.WriteLine("Application token generation");
            d_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)
                        {
                            token = msg.GetElementAsString("token");
                            System.Console.WriteLine("Application token sucess");
                            isTokenSuccess = true;
                            isRunning      = true;
                            break;
                        }
                        else if (msg.MessageType == TOKEN_FAILURE)
                        {
                            System.Console.WriteLine("Application token failure");
                            isRunning = true;
                            break;
                        }
                        else
                        {
                            System.Console.WriteLine("Error while application token generation");
                            isRunning = true;
                            break;
                        }
                    }
                }
            }

            return(isTokenSuccess);
        }
コード例 #9
0
ファイル: EasyIOI.cs プロジェクト: tkim/EasyMSXRepository
        public CorrelationID sendRequest(Request request, MessageHandler handler)
        {
            CorrelationID newCID = new CorrelationID();

            Log.LogMessage(LogLevels.BASIC, "EMSXAPI: Send external refdata request...adding MessageHandler [" + newCID + "]");
            requestMessageHandlers.Add(newCID, handler);
            try
            {
                session.SendRequest(request, newCID);
                return(newCID);
            }
            catch (Exception e)
            {
                System.Console.Error.WriteLine(e.StackTrace);
                return(null);
            }
        }
コード例 #10
0
        private void processRequestDataEvent(Event eventObj, Session session)
        {
            // process message
            foreach (Message msg in eventObj)
            {
                if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("IntradayTickResponse")))
                {
                    CorrelationID cID           = msg.CorrelationID;
                    var           tickDateQuery = (ITickDataQuery)msg.CorrelationID.Object;
                    List <string> reponseFields = getReponseFields();
                    if (msg.HasElement(RESPONSE_ERROR))
                    {
                        // process error
                        Element error = msg.GetElement(RESPONSE_ERROR);
                        if (msg.NumElements == 1)
                        {
                            string errorMsg = tickDateQuery.Security + " " + error.GetElementAsString(MESSAGE);
                            OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg, errorMsg));
                            return;
                        }
                    }

                    Element tickDataArray = msg.GetElement("tickData");
                    var     tickData      = new List <TickData>();

                    foreach (Element blmbTickDataElement in tickDataArray.Elements)
                    {
                        if (blmbTickDataElement.Name.ToString() == "tickData")
                        {
                            if (blmbTickDataElement.NumValues > 0)
                            {
                                for (int pointIndex = 0; pointIndex < blmbTickDataElement.NumValues; pointIndex++)
                                {
                                    TickData tick = BBEventToTickData(blmbTickDataElement.GetValueAsElement(pointIndex), tickDateQuery);
                                    tickData.Add(tick);
                                    //Console.WriteLine(tick.ToString());
                                }
                            }
                        }
                    }

                    DataHandler.ParseTickDataList(tickDateQuery.CorrelationIdObj, tickData);
                }
            }
        }
コード例 #11
0
ファイル: EasyMSX.cs プロジェクト: tkim/cs_EasyMSX
        private void processSubscriptionDataEvent(Event evt, Session session)
        {
            Log.LogMessage(LogLevels.DETAILED, "Processing SUBSCRIPTION_DATA event");

            foreach (Message msg in evt)
            {
                CorrelationID cID = msg.CorrelationID;
                if (subscriptionMessageHandlers.ContainsKey(cID))
                {
                    MessageHandler mh = subscriptionMessageHandlers[cID];
                    mh.processMessage(msg);
                }
                else
                {
                    Log.LogMessage(LogLevels.BASIC, "Unexpected SUBSCRIPTION_DATA event recieved (CID=" + cID.ToString() + "): " + msg.ToString());
                }
            }
        }
コード例 #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("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");
                }
            }
        }
コード例 #13
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);
        }
コード例 #14
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("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");
                }
            }
        }
コード例 #15
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("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");
                }
            }
        }
コード例 #16
0
ファイル: EasyMSX.cs プロジェクト: tkim/cs_EasyMSX
        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());
                }
            }
        }
コード例 #17
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("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");
                }
            }
        }
コード例 #19
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;
            }
        }
コード例 #20
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("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");
                }
            }
        }
コード例 #21
0
ファイル: EasyMSX.cs プロジェクト: tkim/cs_EasyMSX
        internal void subscribe(String topic, MessageHandler handler)
        {
            CorrelationID newCID = new CorrelationID();

            subscriptionMessageHandlers.Add(newCID, handler);

            Log.LogMessage(LogLevels.BASIC, "Added Subscription message handler: " + newCID.ToString());

            try
            {
                Subscription sub = new Subscription(topic, newCID);

                List <Subscription> subs = new List <Subscription>();

                subs.Add(sub);

                session.Subscribe(subs);
            }
            catch (Exception e)
            {
                System.Console.Error.WriteLine(e.StackTrace);
            }
        }
コード例 #22
0
        private void sendUpdateIOI(Session session, String ioiSvc)
        {
            Service service = session.GetService(ioiSvc);
            Request request = service.CreateRequest("updateIoi");

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

            handle.SetElement("value", "832f0c5f-8330-4c50-8cf7-95c1c6f240db");

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

            // Set the good-until time of this option to 15 minutes from now
            ioi.SetElement("goodUntil", new Bloomberglp.Blpapi.Datetime(DateTime.Now.AddSeconds(900)));

            // Create the option
            Element option = ioi.GetElement("instrument").SetChoice("option");

            option.SetElement("structure", "CallSpread");

            // This option has two legs. Create the first leg
            Element leg1 = option.GetElement("legs").AppendElement();

            leg1.SetElement("type", "Call");
            leg1.SetElement("strike", 230);
            leg1.SetElement("expiry", "2017-11-08T00:00:00.000+00:00");
            leg1.SetElement("style", "European");
            leg1.SetElement("ratio", +1.00);
            leg1.SetElement("exchange", "LN");
            leg1.GetElement("underlying").SetChoice("ticker");
            leg1.GetElement("underlying").SetElement("ticker", "VOD LN Equity");

            // Create the second leg
            Element leg2 = option.GetElement("legs").AppendElement();

            leg1.SetElement("type", "Call");
            leg2.SetElement("strike", 240);
            leg2.SetElement("expiry", "2017-11-08T00:00:00.000+00:00");
            leg2.SetElement("style", "European");
            leg2.SetElement("ratio", -1.25);
            leg2.SetElement("exchange", "LN");
            leg2.GetElement("underlying").SetChoice("ticker");
            leg2.GetElement("underlying").SetElement("ticker", "VOD LN Equity");

            // Create a quote consisting of a bid and an offer
            Element bid = ioi.GetElement("bid");

            bid.GetElement("price").SetChoice("fixed");
            bid.GetElement("price").GetElement("fixed").GetElement("price").SetValue(83.643);
            bid.GetElement("size").SetChoice("quantity");
            bid.GetElement("size").GetElement("quantity").SetValue(2000);
            bid.GetElement("referencePrice").SetElement("price", 202.155);
            bid.GetElement("referencePrice").SetElement("currency", "GBP");
            bid.SetElement("notes", "offer notes");

            // Set the offer
            Element offer = ioi.GetElement("offer");

            offer.GetElement("price").SetChoice("fixed");
            offer.GetElement("price").GetElement("fixed").GetElement("price").SetValue(83.64);
            offer.GetElement("size").SetChoice("quantity");
            offer.GetElement("size").GetElement("quantity").SetValue(2000);
            offer.GetElement("referencePrice").SetElement("price", 202.15);
            offer.GetElement("referencePrice").SetElement("currency", "GBP");
            offer.SetElement("notes", "offer notes");

            // Set targets
            Element includes = ioi.GetElement("targets").GetElement("includes");

            Element t1 = includes.AppendElement();

            t1.SetChoice("acronym");
            t1.SetElement("acronym", "BLPA");

            Element t2 = includes.AppendElement();

            t2.SetChoice("acronym");
            t2.SetElement("acronym", "BLPB");

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

            requestID = new CorrelationID();

            // Submit the request
            try
            {
                session.SendRequest(request, requestID);
                System.Console.WriteLine("Request Sent.");
            }
            catch (Exception ex)
            {
                System.Console.Error.WriteLine("Failed to send the request: " + ex.Message);
            }
        }
コード例 #23
0
ファイル: TransactionSender.cs プロジェクト: platypu5/reiska
        private int checkOneFill(int key)
        {
            Request request = service.CreateRequest("OrderInfo");
            request.Set("EMSX_SEQUENCE", key);

            CorrelationID requestID = new CorrelationID(1);

            session.SendRequest(request, requestID);

            int timeoutInMilliSeconds = 5000;

            Event evt = session.NextEvent(timeoutInMilliSeconds);
            do
            {
                System.Console.WriteLine("Received Event: " + evt.Type);

                foreach (Bloomberglp.Blpapi.Message msg in evt.GetMessages())
                {
                    System.Console.WriteLine(msg.ToString());

                    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("ORDER_INFO"))
                        {
                            int emsx_amount = msg.GetElementAsInt32("EMSX_AMOUNT");
                            double emsx_avg_price = msg.GetElementAsFloat64("EMSX_AVG_PRICE");
                            string emsx_basket_name = msg.GetElementAsString("EMSX_BASKET_NAME");
                            string emsx_broker = msg.GetElementAsString("EMSX_BROKER");
                            string emsx_exchange = msg.GetElementAsString("EMSX_EXCHANGE");
                            int emsx_filled = msg.GetElementAsInt32("EMSX_FILLED");
                            int emsx_flag = msg.GetElementAsInt32("EMSX_FLAG");
                            int emsx_idle_amount = msg.GetElementAsInt32("EMSX_IDLE_AMOUNT");
                            double emsx_limit_price = msg.GetElementAsFloat64("EMSX_LIMIT_PRICE");
                            string emsx_notes = msg.GetElementAsString("EMSX_NOTES");
                            string emsx_order_create_date = msg.GetElementAsString("EMSX_ORDER_CREATE_DATE");
                            string emsx_order_create_time = msg.GetElementAsString("EMSX_ORDER_CREATE_TIME");
                            string emsx_order_type = msg.GetElementAsString("EMSX_ORDER_TYPE");
                            string emsx_port_mgr = msg.GetElementAsString("EMSX_PORT_MGR");
                            string emsx_position = msg.GetElementAsString("EMSX_POSITION");
                            string emsx_side = msg.GetElementAsString("EMSX_SIDE");
                            string emsx_step_out_broker = msg.GetElementAsString("EMSX_STEP_OUT_BROKER");
                            int emsx_sub_flag = msg.GetElementAsInt32("EMSX_SUB_FLAG");
                            string emsx_ticker = msg.GetElementAsString("EMSX_TICKER");
                            string emsx_tif = msg.GetElementAsString("EMSX_TIF");
                            string emsx_trader = msg.GetElementAsString("EMSX_TRADER");
                            long emsx_trader_uuid = msg.GetElementAsInt64("EMSX_TRADER_UUID");
                            long emsx_ts_ordnum = msg.GetElementAsInt64("EMSX_TS_ORDNUM");
                            int emsx_working = msg.GetElementAsInt32("EMSX_WORKING");
                            string emsx_yellow_key = msg.GetElementAsString("EMSX_YELLOW_KEY");

                            System.Console.WriteLine("EMSX_AMOUNT: " + emsx_amount);
                            System.Console.WriteLine("EMSX_AVG_PRICE: " + emsx_avg_price);
                            System.Console.WriteLine("EMSX_BASKET_NAME: " + emsx_basket_name);
                            System.Console.WriteLine("EMSX_BROKER: " + emsx_broker);
                            System.Console.WriteLine("EMSX_EXCHANGE: " + emsx_exchange);
                            System.Console.WriteLine("EMSX_FILLED: " + emsx_filled);
                            System.Console.WriteLine("EMSX_FLAG: " + emsx_flag);
                            System.Console.WriteLine("EMSX_IDLE_AMOUNT: " + emsx_idle_amount);
                            System.Console.WriteLine("EMSX_LIMIT_PRICE: " + emsx_limit_price);
                            System.Console.WriteLine("EMSX_NOTES: " + emsx_notes);
                            System.Console.WriteLine("EMSX_ORDER_CREATE_DATE: " + emsx_order_create_date);
                            System.Console.WriteLine("EMSX_ORDER_CREATE_TIME: " + emsx_order_create_time);
                            System.Console.WriteLine("EMSX_ORDER_TYPE: " + emsx_order_type);
                            System.Console.WriteLine("EMSX_PORT_MGR: " + emsx_port_mgr);
                            System.Console.WriteLine("EMSX_POSITION: " + emsx_position);
                            System.Console.WriteLine("EMSX_SIDE: " + emsx_side);
                            System.Console.WriteLine("EMSX_STEP_OUT_BROKER: " + emsx_step_out_broker);
                            System.Console.WriteLine("EMSX_SUB_FLAG: " + emsx_sub_flag);
                            System.Console.WriteLine("EMSX_TICKER: " + emsx_ticker);
                            System.Console.WriteLine("EMSX_TIF: " + emsx_tif);
                            System.Console.WriteLine("EMSX_TRADER: " + emsx_trader);
                            System.Console.WriteLine("EMSX_TRADER_UUID: " + emsx_trader_uuid);
                            System.Console.WriteLine("EMSX_TS_ORDNUM: " + emsx_ts_ordnum);
                            System.Console.WriteLine("EMSX_WORKING: " + emsx_working);
                            System.Console.WriteLine("EMSX_YELLOW_KEY: " + emsx_yellow_key);

                            return emsx_amount - emsx_filled; // FIXME: No idea how we should deal with partial fill
                        }

                    }
                }

                evt = session.NextEvent(timeoutInMilliSeconds);

            }
            while (evt.Type != Event.EventType.TIMEOUT);

            return 1;
        }
コード例 #24
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("CreateOrderAndRouteManually");

                    // The fields below are mandatory
                    request.Set("EMSX_TICKER", "IBM US Equity");
                    request.Set("EMSX_AMOUNT", 1000);
                    request.Set("EMSX_ORDER_TYPE", "MKT");
                    request.Set("EMSX_TIF", "DAY");
                    request.Set("EMSX_HAND_INSTRUCTION", "ANY");
                    request.Set("EMSX_SIDE", "BUY");
                    request.Set("EMSX_BROKER", "BB");

                    // The fields below are optional
                    //request.Set("EMSX_ACCOUNT","TestAccount");
                    //request.Set("EMSX_CFD_FLAG", "1");
                    //request.Set("EMSX_CLEARING_ACCOUNT", "ClrAccName");
                    //request.Set("EMSX_CLEARING_FIRM", "FirmName");
                    //request.Set("EMSX_EXCHANGE_DESTINATION", "ExchDest");
                    //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_INVESTOR_ID", "InvID");
                    //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_ORDER_ORIGIN", "");
                    //request.Set("EMSX_ORDER_REF_ID", "UniqueID");
                    //request.Set("EMSX_P_A", "P");
                    //request.Set("EMSX_RELEASE_TIME", 34341);
                    //request.Set("EMSX_REQUEST_SEQ", 1001);
                    //request.Set("EMSX_SETTLE_DATE", 20170106);
                    //request.Set("EMSX_STOP_PRICE", 123.5);

                    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");
                }
            }
        }
コード例 #25
0
        public void get_BBG(string sec, string field, string over, string ovrVal, string xmlFilePathIn, string xmlfileNameIn, string dtNameIn)
        {
            clearData();
            initUI();
            addSecurities(sec);
            addFields(field);

            xmlFilePath = xmlFilePathIn;
            xmlFileName = xmlfileNameIn;
            dtName      = dtNameIn;


            if (over != null)
            {
                addOverrides(over, ovrVal);
            }

            // create session
            if (!createSession())
            {
                return;
            }
            // open reference data service
            if (!d_session.OpenService("//blp/refdata"))
            {
                return;
            }

            Service refDataService = d_session.GetService("//blp/refdata");
            // create reference data request
            Request request = refDataService.CreateRequest("ReferenceDataRequest");
            // set request parameters
            Element securities       = request.GetElement("securities");
            Element fields           = request.GetElement("fields");
            Element requestOverrides = request.GetElement("overrides");

            request.Set("returnEids", true);
            // populate security
            foreach (DataRow secRow in d_data.Rows)
            {
                securities.AppendValue(secRow["security"].ToString());
            }
            // populate fields
            for (int fieldIndex = 1; fieldIndex < d_data.Columns.Count; fieldIndex++)
            {
                fields.AppendValue(d_data.Columns[fieldIndex].ColumnName);
            }


            if (d_overRides.Rows.Count > 0)
            {
                // populate overrides
                foreach (DataRow row in d_overRides.Rows)
                {
                    Element ovr = requestOverrides.AppendElement();
                    ovr.SetElement(FIELD_ID, row["override"].ToString());
                    ovr.SetElement("value", row["value"].ToString());
                }
            }
            // create correlation id
            CorrelationID cID = new CorrelationID(1);

            d_session.Cancel(cID);
            // send request
            d_session.SendRequest(request, cID);
        }
コード例 #26
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("GetFills");

                    // The Date/Time values from and to may contain a timezone element
                    request.Set("FromDateTime", "2017-11-06T00:00:00.000+00:00");
                    request.Set("ToDateTime", "2017-11-06T23:59:00.000+00:00");

                    Element scope = request.GetElement("Scope");


                    // The name of the user team
                    //scope.SetChoice("Team");
                    //scope.SetElement("Team", "RCAM_API");

                    // Use the Trading System view - boolean
                    //scope.SetChoice("TradingSystem");
                    //scope.SetElement("TradingSystem",False);

                    // One or more specified UUIDs
                    scope.SetChoice("Uuids");
                    scope.GetElement("Uuids").AppendValue(1234567);

                    //filterBy = request.GetElement("FilterBy");

                    // The backet name, as created in the terminal
                    //filterBy.SetChoice("Basket");
                    //filterBy.GetElement("Basket").AppendValue("TESTRJC");

                    // The Multileg ID, can append multiple values
                    //filterBy.SetChoice("Multileg");
                    //filterBy.GetElement("Multileg").AppendValue("12345");
                    //filterBy.GetElement("Multileg").AppendValue("56478");

                    // Specific order numbers and route IDs
                    //filterBy.SetChoice("OrdersAndRoutes");
                    //newOrder = filterBy.GetElement("OrdersAndRoutes").AppendElement();
                    //newOrder.SetElement("OrderId",2744093);
                    //newOrder.SetElement("RouteId",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");
                }
            }
        }
コード例 #27
0
    public static DatedDataCollectionGen<BarDataPoint> Get(DateTime startDate_, DateTime endDate_, int interval_, string security_)
    {
      Request request = BbgTalk.Core.Instance.SyncRefService.CreateRequest("IntradayBarRequest");
      request.Set("eventType", "TRADE");
      request.Set("security", security_);
      request.Set("startDateTime", new BDateTime(startDate_.Year, startDate_.Month, startDate_.Day, startDate_.Hour, startDate_.Minute, startDate_.Second, 0));
      request.Set("endDateTime", new BDateTime(endDate_.Year, endDate_.Month, endDate_.Day, endDate_.Hour, endDate_.Minute, endDate_.Second, 0));
      request.Set("gapFillInitialBar", true);
      request.Set("interval", interval_);
      CorrelationID cID = new CorrelationID(BbgTalk.Core.NextID());
      BbgTalk.Core.Instance.SyncSession.SendRequest(request, cID);

      DatedDataCollectionGen<BarDataPoint> ret = null;
      while (true && ret == null)
      {
        Event eventObj = BbgTalk.Core.Instance.SyncSession.NextEvent();
        foreach (Message msg in eventObj.GetMessages())
        {
          if ((msg.CorrelationID != null && msg.CorrelationID.Value == cID.Value) || msg.MessageType.Equals(Name.GetName("IntradayBarResponse")))
          {
            if (msg.HasElement("responseError"))
            {
              // process error
              Element error = msg.GetElement("responseError");
              if (msg.NumElements == 1)
              {
                string errorMsg = error.GetElementAsString("message");
                Console.WriteLine(errorMsg);
                ret = null;
                break;
              }
            }

            List<DateTime> dates = new List<DateTime>();
            List<BarDataPoint> points = new List<BarDataPoint>();
            Element barDataArray = msg.GetElement("barData");
            int numberOfBars = barDataArray.NumValues;

            foreach (Element barData in barDataArray.Elements)
            {
              if (barData.Name.ToString() == "barTickData")
              {
                for (int pointIndex = 0; pointIndex < barData.NumValues; ++pointIndex)
                {
                  Element fields = barData.GetValueAsElement(pointIndex);
                  DateTime time = fields.GetElement("time").GetValueAsDatetime().ToSystemDateTime();
                  double high = Convert.ToDouble(fields.GetElement("high").GetValueAsFloat64());
                  double low = Convert.ToDouble(fields.GetElement("low").GetValueAsFloat64());
                  double open = Convert.ToDouble(fields.GetElement("open").GetValueAsFloat64());
                  double close = Convert.ToDouble(fields.GetElement("close").GetValueAsFloat64());
                  int numEvent = fields.GetElement("numEvents").GetValueAsInt32();

                  dates.Add(time);
                  points.Add(new BarDataPoint(open, close, high, low, numEvent));
                }
              }
            }

            ret = new DatedDataCollectionGen<BarDataPoint>(dates.ToArray(), points.ToArray());


            break;
          }
        }
      }
      return ret;
    }
コード例 #28
0
ファイル: Form1.cs プロジェクト: gcompagnon/FGA_Soft_Automate
        /// <summary>
        /// Send reference data request
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonSendRequest_Click(object sender, EventArgs e)
        {
            clearData();
            // create session
            if (!createSession())
            {
                toolStripStatusLabel1.Text = "Failed to start session.";
                return;
            }
            // open reference data service
            if (!d_session.OpenService("//blp/refdata"))
            {
                toolStripStatusLabel1.Text = "Failed to open //blp/refdata";
                return;
            }
            toolStripStatusLabel1.Text = "Connected sucessfully";
            Service refDataService = d_session.GetService("//blp/refdata");
            // create reference data request
            Request request = refDataService.CreateRequest("ReferenceDataRequest");
            // set request parameters
            Element securities       = request.GetElement("securities");
            Element fields           = request.GetElement("fields");
            Element requestOverrides = request.GetElement("overrides");

            request.Set("returnEids", true);
            // populate security
            foreach (DataRow secRow in d_data.Rows)
            {
                securities.AppendValue(secRow["security"].ToString());
            }
            // populate fields
            for (int fieldIndex = 1; fieldIndex < d_data.Columns.Count; fieldIndex++)
            {
                fields.AppendValue(d_data.Columns[fieldIndex].ColumnName);
            }
            if (listViewOverrides.Items.Count > 0)
            {
                // populate overrides
                foreach (ListViewItem item in listViewOverrides.Items)
                {
                    Element ovr = requestOverrides.AppendElement();
                    ovr.SetElement(FIELD_ID, item.Text);
                    ovr.SetElement("value", item.SubItems[1].Text);
                }
            }
            // create correlation id
            CorrelationID cID = new CorrelationID(1);

            d_session.Cancel(cID);
            // send request
            d_session.SendRequest(request, cID);
            toolStripStatusLabel1.Text = "Submitted request. Waiting for response...";
            if (radioButtonSynch.Checked)
            {
                // Allow UI to update
                Application.DoEvents();
                // Synchronous mode. Wait for reply before proceeding.
                while (true)
                {
                    Event eventObj = d_session.NextEvent();
                    toolStripStatusLabel1.Text = "Processing data...";
                    // process data
                    processEvent(eventObj, d_session);
                    if (eventObj.Type == Event.EventType.RESPONSE)
                    {
                        break;
                    }
                }
                setControlStates();
                toolStripStatusLabel1.Text = "Completed";
            }
        }
コード例 #29
0
ファイル: TransactionSender.cs プロジェクト: platypu5/reiska
        private void sendSellTransaction(
            Transaction t
            )
        {
            double sellVal = (t.amountSell * t.priceSell);

            Request requestSell = service.CreateRequest("CreateOrderAndRouteEx");
            //Request requestSell = service.CreateRequest("CreateOrder");
            requestSell.Set("EMSX_LIMIT_PRICE", (t.priceSell).ToString());
            //requestSell.Set("EMSX_LIMIT_PRICE", 1.0);
            //requestSell.Set("EMSX_AMOUNT", t.amountSell);
            requestSell.Set("EMSX_AMOUNT", 1);
            requestSell.Set("EMSX_BROKER", "NORS"); // BMTB
            requestSell.Set("EMSX_HAND_INSTRUCTION", "DMA");
            requestSell.Set("EMSX_ORDER_TYPE", "LMT");
            requestSell.Set("EMSX_SIDE", "SELL");
            requestSell.Set("EMSX_TICKER", t.securitySell);
            requestSell.Set("EMSX_TIF", "DAY");
            requestSell.Set("EMSX_ACCOUNT", "LAGOTRAD");

            int sellStamp = GetTimestamp(DateTime.Now);
            requestSell.Set("EMSX_SEQUENCE", sellStamp);
            this.unfilledOrders[sellStamp] = requestSell;
            this.unfilledTransactions[sellStamp] = t;

            CorrelationID requestID = new CorrelationID("-2222");
            session.SendRequest(requestSell, requestID);

            Lgr.WriteTrade(sellVal, " ..... SELL: " + t.securitySell +
                " ..... amount " + t.amountSell + " price " + t.priceSell + " EUR" +
                " curr rate " + t.currencyRateSell.ToString());
        }
コード例 #30
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("RouteEx");

                    // The fields below are mandatory
                    request.Set("EMSX_SEQUENCE", 3664532); // Order number
                    request.Set("EMSX_AMOUNT", 500);
                    request.Set("EMSX_BROKER", "BMTB");
                    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_ROUTE_REF_ID", "UniqueRef");
                    //request.Set("EMSX_STOP_PRICE", 123.5);
                    //request.Set("EMSX_TRADER_UUID", 1234567);

                    // Below we establish the strategy details

                    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");
                }
            }
        }
コード例 #31
0
        /// <summary>
        /// Submit Intraday Bar Request
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonSendRequest_Click(object sender, EventArgs e)
        {
            // clear security data if requested before
            string security = textBoxSecurity.Text.Trim();

            d_requestSecurity = security + " [" + checkedListBoxEventTypes.CheckedItems[0].ToString() + "]";
            clearSecurityData(d_requestSecurity);
            // create session
            if (!createSession())
            {
                toolStripStatusLabel1.Text = "Failed to start session.";
                return;
            }
            // open reference data services
            if (!d_session.OpenService("//blp/refdata"))
            {
                toolStripStatusLabel1.Text = "Failed to open //blp/refdata";
                return;
            }
            toolStripStatusLabel1.Text = "Connected sucessfully";
            Service refDataService = d_session.GetService("//blp/refdata");
            // create intraday bar request
            Request request = refDataService.CreateRequest("IntradayBarRequest");

            // set request parameters
            request.Set("eventType", checkedListBoxEventTypes.CheckedItems[0].ToString());
            request.Set("security", security);
            DateTime startDate = dateTimePickerStartDate.Value;
            DateTime endDate   = dateTimePickerEndDate.Value;

            request.Set("startDateTime", new BDateTime(startDate.Year, startDate.Month, startDate.Day,
                                                       startDate.Hour, startDate.Minute, startDate.Second, 0));
            request.Set("endDateTime", new BDateTime(endDate.Year, endDate.Month, endDate.Day,
                                                     endDate.Hour, endDate.Minute, endDate.Second, 0));
            request.Set("gapFillInitialBar", checkBoxGapFill.Checked);
            request.Set("interval", int.Parse(numericUpDownInterval.Value.ToString()));
            // create correlation id
            CorrelationID cID = new CorrelationID(1);

            d_session.Cancel(cID);
            // send request
            d_session.SendRequest(request, cID);
            toolStripStatusLabel1.Text = "Submitted request. Waiting for response...";
            if (radioButtonSynch.Checked)
            {
                // allow UI to update
                Application.DoEvents();
                // synchronous mode. Wait for reply before proceeding.
                while (true)
                {
                    // process data
                    Event eventObj = d_session.NextEvent();
                    toolStripStatusLabel1.Text = "Processing data...";
                    processEvent(eventObj, d_session);
                    if (eventObj.Type == Event.EventType.RESPONSE)
                    {
                        break;
                    }
                }
                // select requested security in listbox to disply data
                setControlStates();
                int itemIndex = -1;
                if (!listBoxSecurities.Items.Contains(d_requestSecurity))
                {
                    itemIndex = listBoxSecurities.Items.Add(d_requestSecurity);
                }
                else
                {
                    listBoxSecurities.SelectedIndex = -1;
                    itemIndex = listBoxSecurities.Items.IndexOf(d_requestSecurity);
                }
                listBoxSecurities.SelectedIndex = itemIndex;
                toolStripStatusLabel1.Text      = "Completed";
            }
        }
コード例 #32
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("ModifyRouteEx");

                    // The fields below are mandatory
                    request.Set("EMSX_SEQUENCE", 3867744);
                    request.Set("EMSX_ROUTE_ID", 1);
                    request.Set("EMSX_AMOUNT", 500);
                    request.Set("EMSX_ORDER_TYPE", "MKT");
                    request.Set("EMSX_TIF", "DAY");

                    // The fields below are optional
                    //request.Set("EMSX_ACCOUNT","TestAccount");
                    //request.Set("EMSX_CLEARING_ACCOUNT", "ClearingAcnt");
                    //request.Set("EMSX_CLEARING_FIRM", "ClearingFirm");
                    //request.Set("EMSX_COMM_TYPE", "Absolute");
                    //request.Set("EMSX_EXCHANGE_DESTINATION", "DEST");
                    //request.Set("EMSX_GET_WARNINGS", "0");
                    //request.Set("EMSX_GTD_DATE", "20170105");
                    //request.Set("EMSX_LIMIT_PRICE", 123.45);
                    //request.Set("EMSX_LOC_BROKER", "ABCD");
                    //request.Set("EMSX_LOC_ID", "1234567");
                    //request.Set("EMSX_LOC_REQ", "Y");
                    //request.Set("EMSX_NOTES", "Some notes");
                    //request.Set("EMSX_ODD_LOT", "" );
                    //request.Set("EMSX_P_A", "P");
                    //request.Set("EMSX_REQUEST_SEQ", 1001);
                    //request.Set("EMSX_STOP_PRICE", 123.5);
                    //request.Set("EMSX_TRADER_NOTES", "Trader notes");
                    //request.Set("EMSX_USER_COMM_RATE", 0.02);
                    //request.Set("EMSX_USER_FEES", "1.5");

                    // Note: When changing order type to a LMT order, you will need to provide the EMSX_LIMIT_PRICE value.
                    //       When changing order type away from LMT order, you will need to reset the EMSX_LIMIT_PRICE value
                    //       by setting the content to -99999

                    // Note: To clear down the stop price, set the content to -1

                    // Set the strategy parameters, if required

                    /*
                     * 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);
                     */

                    // If modifying on behalf of another trader, set the order owner's UUID
                    //request.Set("EMSX_TRADER_UUID", 1234567);

                    // If modifying a multi-leg route, indicate the Multileg ID
                    //request.GetElement("EMSX_REQUEST_TYPE").SetChoice("Multileg").SetElement("EMSX_ML_ID", "123456");

                    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");
                }
            }
        }
コード例 #33
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");
                }
            }
        }
コード例 #34
0
ファイル: TransactionSender.cs プロジェクト: platypu5/reiska
        public string sendBuyTransaction(
            Transaction t
            )
        {
            double tradeValToday = Lgr.GetTradeValToday();
            double maxEurPerDay = Convert.ToDouble(ConfigurationManager.AppSettings["maxEurPerDay"]);
            double maxEurPerTrade = Convert.ToDouble(ConfigurationManager.AppSettings["maxEurPerTrade"]);
            double buyVal = (t.amountBuy * t.priceBuy);
            double sellVal = (t.amountSell * t.priceSell);

            if (tradeValToday + (t.amountBuy * t.priceBuy) + (t.amountSell * t.priceSell) > maxEurPerDay)
            {
                Lgr.Log("INFO", "Trades value today " + tradeValToday.ToString() +
                    " + Sell value " + sellVal.ToString() +
                    " + Buy value " + buyVal.ToString() +
                    " > maxEurPerDay " + maxEurPerDay.ToString() +
                    " NOT SENDING TRANSACTION");
                return "";
            }
            if ((t.amountBuy * t.priceBuy) + (t.amountSell * t.priceSell) > maxEurPerTrade)
            {
                Lgr.Log("INFO", "Sell value " + sellVal.ToString() +
                    " + Buy value " + buyVal.ToString() +
                    " > maxEurPerTrade " + maxEurPerTrade.ToString() +
                    " NOT SENDING TRANSACTION");
                return "";
            }

            string retstr = "";

            //Request requestBuy = service.CreateRequest("CreateOrderAndRouteEx");
            Request requestBuy = service.CreateRequest("CreateOrder");
            requestBuy.Set("EMSX_AMOUNT", t.amountBuy);
            //double price = t.priceBuy * t.currencyRateBuy;
            requestBuy.Set("EMSX_LIMIT_PRICE", (t.priceBuy).ToString());
            //requestBuy.Set("EMSX_LIMIT_PRICE", 1.0);
            //requestBuy.Set("EMSX_AMOUNT", 1);
            requestBuy.Set("EMSX_BROKER", "NORS"); // BMTB
            requestBuy.Set("EMSX_HAND_INSTRUCTION", "DMA");
            requestBuy.Set("EMSX_ORDER_TYPE", "LMT");
            requestBuy.Set("EMSX_SIDE", "BUY");
            requestBuy.Set("EMSX_TICKER", t.securityBuy);
            requestBuy.Set("EMSX_TIF", "DAY");
            requestBuy.Set("EMSX_ACCOUNT", "LAGOTRAD");

            int buyStamp = GetTimestamp(DateTime.Now);
            requestBuy.Set("EMSX_SEQUENCE", buyStamp);
            this.unfilledOrders[buyStamp] = requestBuy;

            CorrelationID requestID = new CorrelationID("-1111");
            session.SendRequest(requestBuy, requestID);

            //Request requestInfo = service.CreateRequest("OrderInfo");
            //requestInfo.Set("EMSX_SEQUENCE", requestBuy.EMSX_SEQUENCE);
            //CorrelationID infoID = new CorrelationID("-3333");
            //session.SendRequest(requestInfo, infoID);
            //use this to get buy order info and if order status == FILLED -> sell

            int timeoutInMilliSeconds = 5000;

            Event evt = session.NextEvent(timeoutInMilliSeconds);
            do
            {
                retstr += "Received Event: " + evt.Type + "\n";
                foreach (Message msg in evt)
                {
                    retstr += "MESSAGE: " + msg.ToString() + "\n";
                    retstr += "CORRELATION ID: " + msg.CorrelationID + "\n";
                    if (evt.Type == Event.EventType.RESPONSE && msg.CorrelationID == requestID)
                    {
                    }
                }
                evt = session.NextEvent(timeoutInMilliSeconds);
            } while (evt.Type != Event.EventType.TIMEOUT);
            Lgr.Log("DEBUG", retstr);

            Lgr.WriteTrade(buyVal, " ..... BUY: " + t.securityBuy +
                " ..... amount " + t.amountBuy + " price " + t.priceBuy + " EUR" +
                " curr rate " + t.currencyRateBuy.ToString());

            return "\nSUCCESFULLY SENT: " + t.toString() + "\n" + retstr;
        }