www.gusucode.com > trading工具箱matlab源码程序 > trading/tradingdemos/ibExampleOrderEventHandler.m
function ibExampleOrderEventHandler(varargin) %IBEXAMPLEORDEREVENTHANDLER Interactive Brokers' Trader Workstation order example event handler. % Copyright 2012-2013 The MathWorks, Inc. t = findobj('Tag','OrderDataTable'); data = get(t,'data'); if ~isempty(data) currentData = str2num(char(data{:,5})); %#ok else currentData = []; end % Process event based on identifier switch varargin{end} case 'orderStatus' if varargin{13}.id == 0 return end if ~isempty(currentData) permIdIndex = find(varargin{13}.permId == currentData); else permIdIndex = []; end if isempty(permIdIndex) && ~isempty(currentData) permIdIndex = length(currentData)+1; elseif isempty(currentData) permIdIndex = 1; end data{permIdIndex,1} = varargin{13}.status; data{permIdIndex,2} = varargin{13}.filled; data{permIdIndex,3} = varargin{13}.remaining; data{permIdIndex,4} = varargin{13}.avgFillPrice; data{permIdIndex,5} = num2str(varargin{13}.permId); data{permIdIndex,6} = varargin{13}.parentId; data{permIdIndex,7} = varargin{13}.lastFillPrice; data{permIdIndex,8} = varargin{13}.clientId; data{permIdIndex,9} = varargin{13}.whyHeld; set(t,'Data',data) case {'openOrderEx'} orderState = get(varargin{7}.orderState); order = get(varargin{7}.order); if ~isempty(currentData) permIdIndex = find(order.permId == currentData); else permIdIndex = []; end if isempty(permIdIndex) && ~isempty(currentData) permIdIndex = length(currentData)+1; elseif isempty(currentData) permIdIndex = 1; end data{permIdIndex,1} = orderState.status; data{permIdIndex,5} = num2str(order.permId); data{permIdIndex,6} = order.parentId; data{permIdIndex,8} = order.clientId; set(t,'Data',data) end