www.gusucode.com > trading工具箱matlab源码程序 > trading/tradingdemos/ibExampleRealtimeEventHandler.m

    function ibExampleRealtimeEventHandler(varargin)
%IBEXAMPLEREALTIMEEVENTHANDLER Interactive Brokers' Trader Workstation streaming data example event handler.

%   Copyright 2012-2013 The MathWorks, Inc. 

% Get figure
t = findobj('Tag','SecurityDataTable');
data = get(t,'data');

% Get ticker request ID's
tickerID = evalin('base','tickerID');

% Process event based on identifier
switch varargin{end}
  
  case 'tickSize'
    
    % Get table index
    tInd = find(varargin{6}.id == tickerID);
    
    switch varargin{6}.tickType
      case 0
        % BID SIZE
        data{tInd,4} = varargin{6}.size;
      case 3
        % ASK SIZE
        data{tInd,6} = varargin{6}.size;
      case 5
        % LAST SIZE
        data{tInd,2} = varargin{6}.size;
      case 8
        % VOLUME
        data{tInd,7} = varargin{6}.size;
    end
    set(t,'Data',data)
    
  case 'tickString'
    
    switch varargin{6}.tickType
      
      case 45
        % Display current time
    
        % IB base date is 01/01/1970
        dateEpoch = datenum('01-Jan-1970');
    
        % Convert IB current time to MATLAB date number
        currentTime = datestr(dateEpoch + str2double(varargin{6}.value)/(24*60*60));
        
        set(findobj('Tag','IBStreamingDataWorkflow'),'Name',currentTime)
        
    end
    
  case 'tickPrice'
    
    % Get table index
    tInd = find(varargin{7}.id == tickerID);
    
    switch varargin{7}.tickType
      case 1
        % BID PRICE
        data{tInd,3} = varargin{7}.price;
      case 2
        % ASK PRICE
        data{tInd,5} = varargin{7}.price;
      case 4
        % LAST PRICE
        data{tInd,1} = varargin{7}.price;
    end
    set(t,'Data',data)
    
end