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