www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@ibtws/orderid.m
function d = orderid(c) %ORDERID Interactive Brokers next valid order id. % D = ORDERID(C) returns the next valid order identification number % given the connection object, C. % % See also IBTWS, CLOSE, CREATEORDER, GETDATA,HISTORY, TIMESERIES. % Copyright 2015 The MathWorks, Inc. % Define event handlers for error and tick events eventNames = {'nextValidId'}; for i = 1:length(eventNames) c.Handle.registerevent({eventNames{i},@(varargin)ibBuiltInOrderIdEventHandler(varargin{:},c)}) end % IB market data request API call c.DataRequest = true; c.Handle.reqIds(1); while c.DataRequest drawnow end % Return data to method workspace and convert dates to date numbers try d = evalin('base','ibNextOrderId'); catch d = evalin('base','ibBuiltInErrMsg'); end % Clear temporary variables evalin('base','clear ibNextOrderId'); function ibBuiltInOrderIdEventHandler(varargin) %IBBUILTINORDERIDEVENTHANDLER Interactive Brokers' Trader Workstation built in order id event handler. persistent ibNextOrderId % Trap event type switch varargin{end-1} case {'nextValidId'} ibNextOrderId = varargin{3}; % Return data to base workspace assignin('base','ibNextOrderId',ibNextOrderId); clear ibNextOrderId evtListeners = varargin{1}.eventlisteners; i = strcmp(evtListeners(:,1),'nextValidId'); varargin{1}.unregisterevent({evtListeners{i,1} evtListeners{i,2}}); varargin{end}.DataRequest = false; %#ok end