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