Connectivity issues to Interactive Broker
-
Connecting to Interactive Broker gets stuck at delay. I am using a simplified script to isolate the problem.
def run(args=None): cerebro = bt.Cerebro(stdstats=False) store = bt.stores.IBStore(host='127.0.0.1', port=7497, clientId=147) cerebro.broker = store.getbroker() # also: 'TQQQ-STK-ISLAND-USD' data = store.getdata(dataname='AAPL-STK-SMART-USD', timeframe=bt.TimeFrame.Days) cerebro.resampledata(data, timeframe=bt.TimeFrame.Days, compression=1) cerebro.addstrategy(St) cerebro.run()
The error message is:
Server Version: 76 TWS Time at connection:20190825 07:09:20 EST ***** STORE NOTIF: <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm.nj> ***** STORE NOTIF: <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:eufarm> ***** STORE NOTIF: <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm> ***** STORE NOTIF: <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:euhmds> ***** STORE NOTIF: <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:ushmds.nj> ***** STORE NOTIF: <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:ushmds> ***** DATA NOTIF: DELAYED
I have verified the connection to TWS works using IBDataCache script which connects using ibConnection. I am connecting using an approved and funded account and connected to a paper trading account.
When debugging, I can get as far as notify_data. Script does not get to next().
I've installed Interactive Brokers Python API Version 0.9/70 Author Troy Melhase. I've also created a new 'clean' envirnment to reduce the posibility of conflicts. The same error comes up.
I'm using:
Python 3.7
Backtrader 1.9.74.123
ib-api 0.9.70
linux-ubuntu 18.04.3 LTSThanks for any assistance, I've exhausted the docs...
-
@run-out said in Connectivity issues to Interactive Broker:
I've installed Interactive Brokers Python API Version 0.9/70 Author Troy Melhase
I know Troy Melhase was the original author of the Java => Python translator, which he used to create the Python wrapper of the API. But his work ended long ago and his project was continued by other people, to ensure the API remained compatible.
@run-out said in Connectivity issues to Interactive Broker:
ib-api 0.9.70
I don't know what that is. Never seen that in my life. If that was created by Troy Melhase it must be a real relic, probably meant for a museum. That's not even the latest package created by Troy. See
The backtrader docs Docs - Live Trading - Interactive Brokers - (https://www.backtrader.com/docu/live/ib/ib/ say:
pip install git+https://github.com/blampe/IbPy.git
There is the possibility to install directly from
pypi
with:pip install IbPy2
as indicated in the repository: https://github.com/blampe/IbPy
(The package did not exist back when the docs were first written)
-
Thanks for the reply. Turns out I was selecting the wrong item from inside pycharm. I'm now using IbPy2 but still the program is hanging up at
/home/runout/Documents/quant/ibtest/venv/bin/python /home/runout/Documents/quant/ibtest/ibsimple.py Server Version: 76 TWS Time at connection:20190825 13:02:17 EST ***** STORE NOTIF: <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm.nj> ***** STORE NOTIF: <error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm> ***** STORE NOTIF: <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:euhmds> ***** STORE NOTIF: <error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:ushmds> ***** DATA NOTIF: DELAYED
The program is still active here.
Also, the TWS is showing an API Connection status of 'accepted', not connected.
When I break/stop the program, I get the following:
Traceback (most recent call last): File "/home/runout/Documents/quant/ibtest/ibsimple.py", line 95, in <module> run() File "/home/runout/Documents/quant/ibtest/ibsimple.py", line 91, in run cerebro.run() File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/cerebro.py", line 1127, in run runstrat = self.runstrategies(iterstrat) File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/cerebro.py", line 1298, in runstrategies self._runnext(runstrats) File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/cerebro.py", line 1542, in _runnext drets.append(d.next(ticks=False)) File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/feed.py", line 407, in next ret = self.load() File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/feed.py", line 479, in load _loadret = self._load() File "/home/runout/Documents/quant/ibtest/venv/lib/python3.7/site-packages/backtrader/feeds/ibdata.py", line 442, in _load self.qlive.get(timeout=self._qcheck)) File "/home/runout/anaconda3/lib/python3.7/queue.py", line 179, in get self.not_empty.wait(remaining) File "/home/runout/anaconda3/lib/python3.7/threading.py", line 300, in wait gotit = waiter.acquire(True, timeout) KeyboardInterrupt Process finished with exit code 1
-
Never checked the
Connected/Accepted
states but the position in the code only simply means that the data feed is awaiting data.Actually ... and leaving the
ib-api 0.9.70
topic behind ...The program is awaiting data because
AAPL
is NOT trading right now, which means there are no incoming ticks.Check the
historical
parameter in the documentation linked above if you simply want to download data and not actually engage in live trading. -
As a side note,
PyCharm
and all other kernel-hijacking super-duper-integrated-destruction-environments are known to have problems with (for example)multiprocessing
. I don't know aboutthreading
, but I personally would never execute code from inside those things. -
Thanks for your support. I appreciate it and all the work you do.
I tried running historical and was still hanging up, so I did what your'e not supposed to do, I deleted and reinstalled backtrader, IbPy2, and TWS all at the same time.
When I reinstalled TWS I installed the 'older' version.
And now, no problem, historical info coming in at light speed. Which is great.
But since I also did the other uninstalls and installs, I can only speculate that the latest/best/greatest stable TWS was the problem? Personally I think that was it.
Regarding your side note, what do you normally use for running your programs if not an IDE like pycharm?
Thanks again DR for all your help! Awesome package. Keep up the great work.
-
@run-out said in Connectivity issues to Interactive Broker:
Regarding your side note, what do you normally use for running your programs if not an IDE like pycharm?
The shell ...