MATLAB Answers

Problem getting data from ibtws

27 views (last 30 days)
Will
Will on 21 Dec 2018
Commented: Annie Leonhart on 21 Mar 2020
Hi guys,
I was testing out the trading toolbox with interactive brokers. I established the connection and tried to run the following code:
ib = ibtws('',7496)
ibContract = ib.Handle.createContract;
ibContract.symbol = 'AAPL';
ibContract.secType = 'STK';
ibContract.exchange = 'SMART';
ibContract.primaryExchange = 'NASDAQ';
ibContract.currency = 'USD';
startdate = floor(now) - 5;
enddate = floor(now);
d = history(ib,ibContract,startdate,enddate)
It returned:
ib =
ibtws with properties:
ClientId: 0
Handle: [1×1 COM.TWS_TwsCtrl]
Host: ''
Port: 7496
d =
'Unable to read beyond the end of the stream.'
Does anyone know why?

  4 Comments

Show 1 older comment
Bartlomiej Winter
Bartlomiej Winter on 30 Jun 2019
Same problem, hope we get an answer!
Rosanna Campagna
Rosanna Campagna on 28 Jul 2019
Same problem, could you help me?
Oliver Rubicon
Oliver Rubicon on 28 Dec 2019
Same problem, can someone help?

Sign in to comment.

Answers (2)

Will
Will on 7 Jan 2019
Anyone?

  0 Comments

Sign in to comment.


Annie Leonhart
Annie Leonhart on 1 Dec 2019
Please set the primaryExchange to 'SMART', they cannot be different from my testing. In some cases you need to run the command twice, becasue Matlab isn't accounting for the time needed for the API to connect to the historical data feed.
I am using Matlab 2019a: Trading Toolbox 3.5.1 & TWS Api 9.76
ib = ibtws('',4001, 0)
ibContract = ib.Handle.createContract;
ibContract.symbol = 'AAPL';
ibContract.secType = 'STK';
ibContract.exchange = 'SMART';
ibContract.primaryExchange = 'SMART';
ibContract.currency = 'USD';
startdate = floor(now) - 5;
enddate = floor(now);
d = history(ib,ibContract,startdate,enddate)
Screenshot_4.jpg

  9 Comments

Show 6 older comments
Sandro Hantke
Sandro Hantke on 21 Mar 2020
Hi Annie,
i still have the same problem. The connection to the TWS is established and verified. I also subscribed to market data from the German spot market (Spot Market Germany / Frankfurt). Maybe you can help me again?
Output: 'Unable to read beyond the end of the stream.'
ib = ibtws('',7496)
ibContract = ib.Handle.createContract;
ibContract.symbol = 'WDI';
ibContract.secType = 'STK';
ibContract.exchange = 'SMART';
ibContract.primaryExchange = 'IBIS';
ibContract.currency = 'EUR';
startdate = floor(now) - 5;
enddate = floor(now);
d = history(ib,ibContract,startdate,enddate)
close(ib)
Sandro Hantke
Sandro Hantke on 21 Mar 2020
Annie,
I just solved the problem! IBContract.exchange=IBIS
Annie Leonhart
Annie Leonhart on 21 Mar 2020
That’s right. SMART only works for stocks. Futures, bonds, etc you must specify the exact exchange.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by