www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@emsx/modifyOrder.m

    function r = modifyOrder(b,reqstruct,varargin)
%MODIFYORDER Modify Bloomberg EMSX order.
%   R = MODIFYORDER(B,REQSTRUCT) modifies a Bloomberg EMSX order and returns
%   the order sequence number and status message using the default event
%   handler.
%  
%   MODIFYORDER(B,REQSTRUCT,'useDefaultEventHandler',false) modifies a 
%   Bloomberg EMSX order.  To process events, the user must invoke a
%   custom event handler.
% 
%   MODIFYORDER(B,REQSTRUCT,'timeOut',200) modifies a Bloomberg EMSX order 
%   and returns the order sequence number 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(200);
%   r = modifyOrder(b,reqStruct)
%
%   returns 
%
%   r = 
%   
%       EMSX_SEQUENCE: 3335877
%             MESSAGE: 'Order Modified'
%
%   modifyOrder(b,reqStruct,'useDefaultEventHandler',false)
%   b.processEvent
%
%   returns
%
%   ModifyOrder = {
%
%    EMSX_SEQUENCE = 335877
%
%    MESSAGE = Order Modified
%
%    }
%
%   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;
%   modifyOrder(b,reqStruct,p)
%
%    See also orders, createOrderAndRoute, createOrder, deleteOrder, routes.

%   Copyright 2012 The MathWorks, Inc.

%imports
import com.bloomberglp.blpapi.*;

%get request fields
orderFields = fieldnames(reqstruct);

%parse name/value pair settings
p.timeOut = 500;
p.useDefaultEventHandler = true;
if nargin > 2
  p = b.parsenv(varargin);
end

%Modify order
request = b.Service.createRequest('ModifyOrder');
for i = 1:length(orderFields)
  request.set(orderFields{i},reqstruct.(orderFields{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