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"); } } }
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()); } }
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()); } }
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); } }
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); }
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); } }
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); } } }
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()); } } }
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"); } } }
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); }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("CancelRoute"); //request.set("EMSX_REQUEST_SEQ", 1); //request.set("EMSX_TRADER_UUID", 1234567); Element routes = request.GetElement("ROUTES"); //Note, the case is important. Element route = routes.AppendElement(); // Multiple routes can be cancelled in a single request route.GetElement("EMSX_SEQUENCE").SetValue(3657996); route.GetElement("EMSX_ROUTE_ID").SetValue(1); System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("SellSideAck"); //request.set("EMSX_REQUEST_SEQ", 1); // Append is used as any number of orders can be ack'ed in a single request request.Append("EMSX_SEQUENCE", 3852531); // If performing the ack on an order owned by another team member, provide owner's UUID //request.Set("EMSX_TRADER_UUID", 7654321); System.Console.WriteLine("Request: " + request.ToString()); requestID = new CorrelationID(); // Submit the request try { session.SendRequest(request, requestID); } catch (Exception ex) { System.Console.Error.WriteLine("Failed to send the request: " + ex.Message); } } else if (msg.MessageType.Equals(SERVICE_OPEN_FAILURE)) { System.Console.Error.WriteLine("Error: Service failed to open"); } } }
private void 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()); } } }
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"); } } }
private void processEvent(Event eventObj, Session session) { switch (eventObj.Type) { case Event.EventType.RESPONSE: // final respose OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg, String.Format("Response ({0} of {1}) received", requestPointer.ToString(), TickDataQueries.Count.ToString()))); processRequestDataEvent(eventObj, session); foreach (Message msg in eventObj) { if (msg.MessageType.Equals(Bloomberglp.Blpapi.Name.GetName("IntradayTickResponse"))) { CorrelationID cID = msg.CorrelationID; var tickDateQuery = (ITickDataQuery)msg.CorrelationID.Object; OnBBHTDUpdate(new BBHTDEventArgs(EventType.DataMsg, String.Format("Completed ({0} of {1})", requestPointer.ToString(), TickDataQueries.Count.ToString()), tickDateQuery)); } } if (AutoChainQueries) { SendNextRequest(); } break; case Event.EventType.PARTIAL_RESPONSE: partialResponseCnt++; OnBBHTDUpdate(new BBHTDEventArgs(EventType.StatusMsg, "Pratial Response #" + partialResponseCnt.ToString())); processRequestDataEvent(eventObj, session); break; default: // processMiscEvents(eventObj, session); break; } }
private void processServiceEvent(Event evt, Session session) { System.Console.WriteLine("\nProcessing " + evt.Type); foreach (Message msg in evt) { if (msg.MessageType.Equals(SERVICE_OPENED)) { System.Console.WriteLine("Service opened..."); Service service = session.GetService(d_service); Request request = service.CreateRequest("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"); } } }
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); } }
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); } }
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; }
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"); } } }
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); }
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"); } } }
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; }
/// <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"; } }
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()); }
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"); } } }
/// <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"; } }
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"); } } }
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"); } } }
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; }