ib = ibtws('',4001,0);
contract = ib.Handle.createContract;
contract.symbol = 'AAPL';
contract.secType = 'STK';
contract.exchange = 'SMART';
contract.primaryExchange = 'SMART';
contract.currency = 'USD';
ib.Handle.registerevent({'fundamentalData',@(varargin)fundHandler(varargin{:},ib)});
tickerid = randperm(10000,1);
ib.Handle.reqFundamentalData(tickerid,contract,'ReportsFinSummary'); pause(0.2);
ib.Handle.cancelFundamentalData(tickerid);
listeners = ib.Handle.eventlisteners;
i = strcmp(listeners(:,1),'fundamentalData');
ib.Handle.unregisterevent([{listeners{i,1}}' {listeners{i,2}}']);
function fundHandler(varargin)
switch varargin{end-1}
    case 'fundamentalData'
        fundamentaldata = varargin{5}.data
        
        filename = ['fundamentaldata.xml'];
        fid = fopen(filename,'Wt');
        fwrite(fid,fundamentaldata);
        fclose(fid);
        
        
        data = xml2struct(filename);
        
        
        assignin('base','fundamentaldata',data)
end
end