www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@emsx/routeOrderWithStrat.m
function r = routeOrderWithStrat(b,reqstruct,stratstruct,varargin) %ROUTEORDER Route Bloomberg EMSX order with strategy. % R = ROUTEORDERWITHSTRAT(B,REQSTRUCT,STRATSTRUCT) routes a Bloomberg EMSX order with % strategies and returns the order sequence number, route id and status % message using the default event handler. % The elements of the fields EMSX_STRATEGY_FIELD_INDICATORS and % EMSX_STRATEGY_FIELDS in the STRATSTRUCT must coincide with the order of % the fields for the strategy specified by % STRATSTRUCT.EMSX_STRATEGY_NAME. See the method GETBROKERINFO for % information on strategy fields and ordering. Set % STRATSTRUCT.EMSX_STRATEGY_FIELD_INDICATORS equal to 0 for each field % so that the field data setting in STRATSTRUCT.EMSX_FIELD_DATA is used % and set STRATSTRUCT.EMSX_STRATEGY_FIELD_INDICATORS equal to 1 to ignore % the data in STRATSTRUCT.EMSX_FIELD_DATA. % % ROUTEORDERWITHSTRAT(B,REQSTRUCT,STRATSTRUCT,'useDefaultEventHandler',false) routes % a Bloomberg EMSX order with strategies. To process events, the user % must invoke a custom event handler. % % ROUTEORDERWITHSTRAT(B,REQSTRUCT,STRATSTRUCT,'timeOut',200) routes a Bloomberg EMSX % order with strategies and returns the order sequence number, route id and % status message using the default event handler specifying a timeOut value % in milliseconds for the event handler. The default timeOut value is 500 % milliseconds. % % For example, % % reqStruct.EMSX_SEQUENCE = int32(335877); % reqStruct.EMSX_TICKER = 'XYZ'; % reqStruct.EMSX_AMOUNT = int32(100); % reqStruct.EMSX_ORDER_TYPE = 'MKT'; % reqStruct.EMSX_BROKER = 'BB'; % reqStruct.EMSX_TIF = 'DAY'; % reqStruct.EMSX_HAND_INSTRUCTION = 'ANY'; % stratStruct.EMSX_STRATEGY_NAME = 'SSP'; % stratStruct.EMSX_STRATEGY_FIELD_INDICATORS = int32([0 0 0]); % stratStruct.EMSX_STRATEGY_FIELDS = {'09:30:00','14:30:00',50}; % % Note that EMSX_SEQUENCE must denote an existing order sequence number. % % r = routeOrderWithStrat(b,reqStruct,stratStruct) % % returns % % r = % % EMSX_SEQUENCE: 335877 % EMSX_ROUTE_ID: 1 % MESSAGE: 'Order Routed' % % routeOrderWithStrat(b,reqStruct,stratStruct,'useDefaultEventHandler',false) % b.processEvent % % returns % % Route = { % % EMSX_SEQUENCE = 335877 % % EMSX_ROUTE_ID = 1 % % MESSAGE = Order Routed % % } % % Note that the name/value pairs can be input as a single input structure % containing some or all of the property fields, for example, % % p.timeOut = 1000; % routeOrderWithStrat(b,reqStruct,stratStruct,p) % % See also orders, createOrder, createOrderAndRoute, modifyOrder, deleteOrder, routes. % Copyright 2012 The MathWorks, Inc. %get request fields routeFields = fieldnames(reqstruct); %parse name/value pair settings p.timeOut = 500; p.useDefaultEventHandler = true; if nargin > 2 p = b.parsenv(varargin); end %build request request = b.Service.createRequest('RouteWithStrat'); for i = 1:length(routeFields) request.set(routeFields{i},reqstruct.(routeFields{i})); end %build strategy strategy = request.getElement('EMSX_STRATEGY_PARAMS'); strategy.setElement('EMSX_STRATEGY_NAME',stratstruct.EMSX_STRATEGY_NAME); indicator = strategy.getElement('EMSX_STRATEGY_FIELD_INDICATORS'); data = strategy.getElement('EMSX_STRATEGY_FIELDS'); for i = 1:length(stratstruct.EMSX_STRATEGY_FIELD_INDICATORS) indicator.appendElement.setElement('EMSX_FIELD_INDICATOR',stratstruct.EMSX_STRATEGY_FIELD_INDICATORS(i)); data.appendElement.setElement('EMSX_FIELD_DATA',stratstruct.EMSX_STRATEGY_FIELDS{i}); end %send request b.Session.sendRequest(request, []); %process events with default handler if p.useDefaultEventHandler r = processOrderRouteEvents(b,p.timeOut); elseif nargout == 1 r = []; end