routeOrder

Route Bloomberg EMSX order

Syntax

  • events = routeOrder(c,route) example
  • events = routeOrder(c,route,'timeOut',timeout) example
  • routeOrder(___,'useDefaultEventHandler',false) example
  • ___ = routeOrder(c,route,options) example

Description

example

events = routeOrder(c,route) routes a Bloomberg® EMSX order using the Bloomberg EMSX connection c and route request route. routeOrder returns a status message using the default event handler.

example

events = routeOrder(c,route,'timeOut',timeout) specifies a timeout value timeout for the execution of the default event handler.

example

routeOrder(___,'useDefaultEventHandler',false) routes a Bloomberg EMSX order using any of the input arguments in the previous syntaxes and a custom event handler. Write a custom event handler to process the events associated with routing orders. This syntax does not have an output argument because the custom event handler processes the contents of the event queue. If you want to use the default event handler instead, set the flag 'useDefaultEventHandler' to true and use the events output argument. By default, the flag 'useDefaultEventHandler' is set to true.

example

___ = routeOrder(c,route,options) uses the options structure to customize the output, which is useful to preconfigure and save your options for repeated use. The available options structure fields are timeOut and useDefaultEventHandler. Use the events output argument when the flag useDefaultEventHandler is set to true and omit this output argument when useDefaultEventHandler is set to false.

Examples

expand all

Route an Order Using the Default Event Handler

To route a Bloomberg EMSX order, create the connection c using emsx, set up the order subscription using orders, and create the order using createOrder. For an example showing these activities, see Create and Manage a Bloomberg EMSX Order. Set up the route subscription using routes.

Define the route request structure route. Convert the numbers to 32-bit signed integers using int32. This code specifies to route 100 shares of IBM® to the broker BB using any hand instruction and the order number 335877.

route.EMSX_SEQUENCE = int32(335877);
route.EMSX_TICKER = 'IBM';
route.EMSX_AMOUNT = int32(100);
route.EMSX_BROKER = 'BB';
route.EMSX_HAND_INSTRUCTION = 'ANY';

Route the order using the Bloomberg EMSX connection c and route.

events = routeOrder(c,route)
events = 
 
     EMSX_SEQUENCE: 335877
     EMSX_ROUTE_ID: 1
           MESSAGE: 'Order Routed'

The default event handler processes the events associated with routing the order. routeOrder returns events as a structure that contains these fields:

  • Bloomberg EMSX order number

  • Bloomberg EMSX route identifier

  • Bloomberg EMSX message

Unsubscribe from order and route events using the Bloomberg EMSX subscription list objects osubs and rsubs. This code assumes that orders creates osubs and routes creates rsubs.

b.Session.unsubscribe(osubs)
b.Session.unsubscribe(rsubs)

Close the Bloomberg EMSX connection.

close(c)

Route an Order Using a Timeout

To route a Bloomberg EMSX order, create the connection c using emsx, set up the order subscription using orders, and create the order using createOrder. For an example showing these activities, see Create and Manage a Bloomberg EMSX Order. Set up the route subscription using routes.

Define the route request structure route. Convert the numbers to 32-bit signed integers using int32. This code specifies to route 100 shares of IBM to the broker BB using any hand instruction and the order number 335877.

route.EMSX_SEQUENCE = int32(335877);
route.EMSX_TICKER = 'IBM';
route.EMSX_AMOUNT = int32(100);
route.EMSX_BROKER = 'BB';
route.EMSX_HAND_INSTRUCTION = 'ANY';

Route the order using the Bloomberg EMSX connection c and route. Set the timeout value to 200 milliseconds. timeOut specifies how long the event handler listens to the queue for an event for each iteration of the code.

events = routeOrder(c,route,'timeOut',200)
events = 
 
     EMSX_SEQUENCE: 335877
     EMSX_ROUTE_ID: 1
           MESSAGE: 'Order Routed'

The default event handler processes the events associated with routing the order. routeOrder returns events as a structure that contains these fields:

  • Bloomberg EMSX order number

  • Bloomberg EMSX route identifier

  • Bloomberg EMSX message

Unsubscribe from order and route events using the Bloomberg EMSX subscription list objects osubs and rsubs. This code assumes that orders creates osubs and routes creates rsubs.

b.Session.unsubscribe(osubs)
b.Session.unsubscribe(rsubs)

Close the Bloomberg EMSX connection.

close(c)

Route an Order Using a Custom Event Handler

To route a Bloomberg EMSX order, create the connection c using emsx, set up the order subscription using orders, and create the order using createOrder. For an example showing these activities, see Create and Manage a Bloomberg EMSX Order. Set up the route subscription using routes.

Define the route request structure route. Convert the numbers to 32-bit signed integers using int32. This code specifies to route 100 shares of IBM to the broker BB using any hand instruction and the order number 335877.

route.EMSX_SEQUENCE = int32(335877);
route.EMSX_TICKER = 'IBM';
route.EMSX_AMOUNT = int32(100);
route.EMSX_BROKER = 'BB';
route.EMSX_HAND_INSTRUCTION = 'ANY';

Suppose you create a custom event handler function called eventhandler with input argument c. Run eventhandler using timer. Start the timer to run eventhandler immediately using start. For details, see Writing and Running Custom Event Handler Functions.

t = timer('TimerFcn',{@eventhandler,c},'Period',1,...
          'ExecutionMode','fixedRate')
start(t)

t is the MATLAB® timer object. For details, see timer.

Route the order using the Bloomberg EMSX connection c and route. Set the flag 'useDefaultEventHandler' to false so that eventhandler processes the events associated with routing an order.

routeOrder(c,route,'useDefaultEventHandler',false)

Unsubscribe from order and route events using the Bloomberg EMSX subscription list objects osubs and rsubs. This code assumes that orders creates osubs and routes creates rsubs. Stop the timer to stop data updates using stop.

b.Session.unsubscribe(osubs)
b.Session.unsubscribe(rsubs)
stop(t)

Delete the timer if you are done processing data updates using delete.

delete(t)

Close the Bloomberg EMSX connection.

close(c)

Route an Order Using an Options Structure

To route a Bloomberg EMSX order, create the connection c using emsx, set up the order subscription using orders, and create the order using createOrder. For an example showing these activities, see Create and Manage a Bloomberg EMSX Order. Set up the route subscription using routes.

Define the route request structure route. Convert the numbers to 32-bit signed integers using int32. This code specifies to route 100 shares of IBM to the broker BB using any hand instruction and the order number 335877.

route.EMSX_SEQUENCE = int32(335877);
route.EMSX_TICKER = 'IBM';
route.EMSX_AMOUNT = int32(100);
route.EMSX_BROKER = 'BB';
route.EMSX_HAND_INSTRUCTION = 'ANY';

Create a structure options. To use the default event handler, set the field useDefaultEventHandler to true. Set the field timeOut to 200 milliseconds. timeOut specifies how long the event handler listens to the queue for an event for each iteration of the code. Route the order using the Bloomberg EMSX connection c, route, and options structure options.

options.useDefaultEventHandler = true;
options.timeOut = 200;

events = routeOrder(c,route,options)
events = 
 
     EMSX_SEQUENCE: 335877
     EMSX_ROUTE_ID: 1
           MESSAGE: 'Order Routed'

The default event handler processes the events associated with routing the order. routeOrder returns events as a structure that contains these fields:

  • Bloomberg EMSX order number

  • Bloomberg EMSX route identifier

  • Bloomberg EMSX message

Unsubscribe from order and route events using the Bloomberg EMSX subscription list objects osubs and rsubs. This code assumes that orders creates osubs and routes creates rsubs.

b.Session.unsubscribe(osubs)
b.Session.unsubscribe(rsubs)

Close the Bloomberg EMSX connection.

close(c)

Input Arguments

expand all

c — Bloomberg EMSX service connectionconnection object

Bloomberg EMSX service connection, specified as a connection object created using emsx.

route — Route requeststructure

Route request, specified as a structure containing these fields.

Convert the numbers to 32-bit signed integers using int32. EMSX_SEQUENCE must denote an existing order sequence number.

Field

Description

EMSX_SEQUENCE

Bloomberg EMSX order sequence number

EMSX_TICKER

Bloomberg EMSX ticker symbol

EMSX_AMOUNT

Bloomberg EMSX number of shares

EMSX_BROKER

Bloomberg EMSX broker name

EMSX_HAND_INSTRUCTION

Bloomberg EMSX hand instruction

Example: route.EMSX_SEQUENCE = int32(728918);
route.EMSX_TICKER = 'XYZ';
route.EMSX_AMOUNT = int32(100);
route.EMSX_BROKER = 'BB';
route.EMSX_HAND_INSTRUCTION = 'ANY';

Data Types: struct

timeout — Timeout value500 milliseconds (default) | nonnegative integer

Timeout value, specified as a nonnegative integer to denote the time in milliseconds the default or custom event handler waits for an event in the current queue.

Data Types: double

options — Options for custom event handler or timeout valuestructure

Options for custom event handler or timeout value, specified as a structure. Use the options structure to reuse the settings for specifying a custom event handler or timeout value for the event handler.

Specify using a custom event handler and a timeout value of 500 milliseconds.

Example: options.useDefaultEventHandler = false;
options.timeOut = 500;

Data Types: struct

Output Arguments

expand all

events — Event queue contentsdouble | structure

Event queue contents, returned as a double or structure.

If the event queue contains events, events is a structure containing the current contents of the event queue. Otherwise, events is an empty double.

More About

expand all

Tips

For details about Bloomberg EMSX, see the EMSX API Programmer's Guide using the WAPI <GO> option from the Bloomberg terminal.

Was this topic helpful?