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

    function cqgintradayeventhandler(varargin)
%CQGINTRADAYEVENTHANDLER Example CQG intraday request event handler.

% Trap error condition
cqgError = varargin{4};
if cqgError.Code
  disp(cqgError.Description)
  return
end
    
switch varargin{end}
  
  case {'TicksResolved','TicksAdded'}
    % Raw ticks
    
    % Get number of ticks
    cqgTicks = varargin{3};
    numTicks = cqgTicks.Count;
    
    % Preallocate output
    if numTicks
      tickFields = fieldnames(cqgTicks.Item(0));
      numTickFields = length(tickFields);
      for i = 1:numTickFields
        switch tickFields{i}
          case {'Price','Volume','SalesConditionCode','ContributorIdCode'}
            rawTicks.(tickFields{i}) = nan(numTicks,1);
          otherwise
            rawTicks.(tickFields{i}) = cell(numTicks,1);
        end
      end
    else
      rawTicks = [];
    end
    
    % Get data
    for i = 0:cqgTicks.Count-1
      for j = 1:numTickFields
        switch tickFields{j}
          case {'Price','Volume','SalesConditionCode','ContributorIdCode'}
            rawTicks.(tickFields{j})(i+1) = cqgTicks.Item(i).(tickFields{j});
          otherwise
            rawTicks.(tickFields{j}){i+1} = cqgTicks.Item(i).(tickFields{j});
        end
      end
    end
    
    % Send data to base workspace
    assignin('base','cqgTickData',rawTicks)
    
  case {'TimedBarsAdded','TimedBarsInserted','TimedBarsResolved',...
        'TimedBarsRemoved','TimeBarsUpdated'}
    % Aggregated ticks
    
    % Get number of ticks
    cqgTimedBars = varargin{3};
    numBars = cqgTimedBars.Count;
    
    % Preallocate output
    timedBars = zeros(numBars,9);
    
    % Get data
    for i = 0:numBars-1
      timedBars(i+1,1) = datenum(cqgTimedBars.Item(i).Timestamp);
      timedBars(i+1,2) = cqgTimedBars.Item(i).Open;
      timedBars(i+1,3) = cqgTimedBars.Item(i).High;
      timedBars(i+1,4) = cqgTimedBars.Item(i).Low;
      timedBars(i+1,5) = cqgTimedBars.Item(i).Close;
      timedBars(i+1,6) = cqgTimedBars.Item(i).Mid;
      timedBars(i+1,7) = cqgTimedBars.Item(i).HLC3;
      timedBars(i+1,8) = cqgTimedBars.Item(i).Avg;
      timedBars(i+1,9) = cqgTimedBars.Item(i).TickVolume;
    end
    
    % Send data to base workspace
    assignin('base','cqgTimedBarData',timedBars)
    
end