Tutorial: install IBridgePy and run an examples

 

Tutorial: install IBridgePy and run an example

There is a risk of loss when trading stocks, futures, forex, options and other financial instruments. Please trade with capital you can afford to lose. Past performance is not necessarily indicative of future results.
Nothing in this computer program/code is intended to be a recommendation, explicitly or implicitly, and/or solicitation to buy or sell any stocks or futures or options or any securities/financial instruments.
All information and computer programs provided here is for education and entertainment purpose only; accuracy and thoroughness cannot be guaranteed.
Readers/users are solely responsible for how to use these information and are solely responsible any consequences of using these information.
If you have any questions, please send email to IBridgePy@gmail.com
All rights reserved.

Step 0: Prepare

For Windows users, Anaconda Python is required. Python 2.7 or 3.6 or 3.7.

For Ubuntu users, please DO NOT install Anaconda.  IBridgePy supports Ubuntu plain Python 2.7 or 3.7 64-bit.

For Mac usersIBridgePy supports plain Python 2.7 64-bit, plain Python 3.7 64-bit and Anaconda Python 2.7 64-bit.

 

Note: The following steps are for Windows users. For Ubuntu and Mac users, we are working on other tutorials.

Step 1:  Download IBridgePy to your local folder

You need to check the version of your Python, either Python 2.7 or Python 3.x and check if it is 32-bit Python or 64-bit Python. Then, download IBridgePy according to your Python version from www.IBridgePy.com/download
Assume the path of the folder where you save IBridgePy is C:\ABC\DEF\IBridgePy

Step 2: Download, install and config IB Trader Workstation(TWS) or IB Gateway

Please follow the instruction in this webpage to download, install and configure IB Gateway or IB Trader Workstation (TWS)

Step 3: Log in TWS or IB Gateway

IBridgePy can trade using either IB live accounts or paper accounts. It is highly recommended to test your strategies in a paper account. If you don’t have an IB account yet, you can apply a paper account. After you finish this step, either IB Gateway or TWS should be open and active.

Step 4: Spyder is not required to run IBridgePy

Spyder is not required but it is recommended for Windows users. Other IDEs can be used as long as the correct Python executable file is used.

Step 5: Edit RUN_ME.py in Spyder (Spyder is not required, for demo purpose only)

Open RUN_ME.py  (C:\ABC\DEF\IBridgePy\RUN_ME.py) in Spyder.

Put your IB account code into RUN_ME.py

put_in_account_code

 Step 6: Run your algorithm in Spyder.

Actually, you need to run RUN_ME.py to run your algorithm in Spyder so that you can think RUN_ME.py as a main entrance to any customer’s algorithms. In Spyder, you can click “F5” or the green triangle to run a Python script.

run_scripts

Step 8: Watch out any error messages

After IBridgePy completes its initialization procedures, it will print out a summary of your accounts. If you see a similar summary, it means that IBridgePy gets connected with IB Gateway / TWS successfully.

acc_summary

If you see any error messages, you may follow the error messages to debug.

There are many reasons for errors. You may debug from the following areas:

  1. The bugs come from IBridgePy. We will try our best to fix the bugs coming from IBridgePy.
  2. IB servers may not response as you expect. For example, you may not receive historical data around 6PM eastern time, 1:30 AM eastern time because of IB maintenance or data server updates.
  3. Demo account, paper account and live account behave differently.
  4. Bugs in customer’s algorithms.

32 comments on “Tutorial: install IBridgePy and run an examples
  1. tony says:

    Do I need to uninstall official Python 3.6.4 and Python Launcher before installing Anaconda?
    Thanks.

  2. tobyBull says:

    hi

    For Mac or Ubuntu user, please DO NOT install Anaconda <– if i don't install Anaconda, how can i download spyder?

    and i hv Python3.6 installed, and IBridgePy is 2.7 for Mac, can it works ?

    regards
    toby

  3. IBridgePy says:

    Try python 2.7 on Mac.

  4. yliu31 says:

    Hi Dr. Liu,

    I followed instruction and try to run the first example: example_show_positions.py. But got the following error message:

    brokerName = InteractiveBrokers; dataProviderName = InteractiveBrokers
    runMode = regular
    IBridgePy version 3.1.6
    fileName = example_show_positions.py
    IBridgePy.IBAccountManager:EXIT errorId = -1, errorCode = 326, error message: Unable connect as the client id is already in use. Retry with a unique client id.
    IBridgePy.IBAccountManager:EXIT IBridgePy version = 3.1.6
    An exception has occurred, use %tb to see the full traceback.

    SystemExit

    Spyder would not trace the super_configuration.txt file, so I am stuck and don’t know what to do.

    Could you give some clue? I am sure I don’t have a second client trying to access TWS. Shouldn’t an previously exited program automatically release the client id?

    Thanks very much for your help.

  5. yliu31 says:

    Now I understand. The program, once ran, doesn’t really exit, it stays there. So when you try to run it again, the client id is already in use.

    • sgmacr087 says:

      Could you elaborate ?
      I am not familiar with Python but I can understand basic script.
      I am getting this error while few weeks ago I did not and I could send order to IB.
      Now I cant.
      Thanks

  6. bingoboy says:

    Oops, I missed updated version, my bad.

  7. mattage86 says:

    I got it now. I was running Python 3.7 and had to rollback to 3.6.

  8. alexmarian says:

    Hi ! I executed the code and I receive the following error:

    Exchange of FUT ECF is missing.
    Please add this str_security in IBridgePy/security_info.csv
    An exception has occurred, use %tb to see the full traceback.

    Do you have a sollution to this ? Thank you very much for your help

  9. Ask@2019 says:

    I executed RUN_ME.py and got error message
    File “…\IBridgePy\IbridgepyTools.py”, line 29, in
    from IBridgePy import IBCpp
    ImportError: DLL load failed: The specified module could not be found.

    But file IBCpp.pyd exists!!!

  10. julien095 says:

    Hi,

    I had the IBCPP error above, moved to 3.6 and it got resolve, thank you. Now I get this KeyedIbridgePyOrders.py error, for any of the file I try to run, here’s the complete message:

    runfile(‘C:/Users/julie/Documents/IBridgePy/RUN_ME.py’, wdir=’C:/Users/julie/Documents/IBridgePy’)
    Reloaded modules: BasicPyLib, BasicPyLib.MarketCalendarWrapper, BasicPyLib.FakeMarketCalendar, BasicPyLib.MarketCalendar, BasicPyLib.pandas_market_calendars, BasicPyLib.pandas_market_calendars.market_calendar, BasicPyLib.pandas_market_calendars.calendar_utils, BasicPyLib.pandas_market_calendars.exchange_calendar_cfe, BasicPyLib.pandas_market_calendars.us_holidays, BasicPyLib.pandas_market_calendars.exchange_calendar_ice, BasicPyLib.pandas_market_calendars.exchange_calendar_nyse, BasicPyLib.pandas_market_calendars.exchange_calendar_cme, BasicPyLib.pandas_market_calendars.exchange_calendar_bmf, BasicPyLib.pandas_market_calendars.exchange_calendar_lse, BasicPyLib.pandas_market_calendars.exchange_calendar_tsx, BasicPyLib.pandas_market_calendars.exchange_calendar_eurex, IBridgePy, IBridgePy.MarketManagerBase, broker_client_factory, broker_client_factory.broker_client_utils, IBridgePy.constants, BasicPyLib.BasicTools, broker_service_factory, broker_service_factory.BrokerService, broker_client_factory.BrokerClientDefs, models, models.utils, broker_service_factory.BrokerService_utils, data_provider_factory, data_provider_factory.data_provider, IBridgePy.IbridgepyTools, BasicPyLib.Printable, IBridgePy.IBCpp, IBridgePy.quantopian, models.KeyedIbridgePyOrders, Config, Config.util, BasicPyLib.simpleLogger, Config.BrokerClientConfig, Config.BrokerClientConfig.BrokerClientConfig, data_provider_factory.data_provider_utils, IBridgePy.TimeGenerator, models.Traders, models.AccountInfo, models.Positions, models.Data, IBridgePy.TraderExtendedResources, IBridgePy.TraderBasicResources, IBridgePy.TraderBase, IBridgePy.trader_defs, IBridgePy.validator, data_provider_factory.dataProvider_IB, data_provider_factory.data_provider_nonRandom, broker_client_factory.BrokerClient_IB, broker_client_factory.CallBacks, broker_client_factory.BrokerClient, broker_service_factory.BrokerService_IB, broker_service_factory.BrokerService_callback, broker_service_factory.BrokerService_Common
    IBridgePy version 5.6.4
    fileName = example_get_historical_data.py
    models.KeyedIbridgePyOrders::get_value: KeyError orderId=2011562457
    models.KeyedIbridgePyOrders::get_value: DEBUG PRINT self.keyedIbridgePyOrders
    {}
    An exception has occurred, use %tb to see the full traceback.

    SystemExit

    D:\Anaconda3.6\lib\site-packages\IPython\core\interactiveshell.py:2870: UserWarning: To exit: use ‘exit’, ‘quit’, or Ctrl-D.
    warn(“To exit: use ‘exit’, ‘quit’, or Ctrl-D.”, stacklevel=1)

    %tb
    Traceback (most recent call last):

    File “”, line 1, in
    runfile(‘C:/Users/julie/Documents/IBridgePy/RUN_ME.py’, wdir=’C:/Users/julie/Documents/IBridgePy’)

    File “D:\Anaconda3.6\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 710, in runfile
    execfile(filename, namespace)

    File “D:\Anaconda3.6\lib\site-packages\spyder\utils\site\sitecustomize.py”, line 101, in execfile
    exec(compile(f.read(), filename, ‘exec’), namespace)

    File “C:/Users/julie/Documents/IBridgePy/RUN_ME.py”, line 38, in
    exec(script)

    File “”, line 39, in

    File “”, line 18, in

    File “C:\Users\julie\Documents\IBridgePy\IBridgePy\MarketManagerBase.py”, line 75, in run
    self.run_once()

    File “C:\Users\julie\Documents\IBridgePy\IBridgePy\MarketManagerBase.py”, line 71, in run_once
    self.trader.initialize_Function()

    File “C:\Users\julie\Documents\IBridgePy\IBridgePy\TraderBasicResources.py”, line 64, in initialize_Function
    ReqPositions())

    File “C:\Users\julie\Documents\IBridgePy\broker_service_factory\BrokerService.py”, line 58, in submit_requests
    return self.brokerClient.request_data(*args)

    File “C:\Users\julie\Documents\IBridgePy\broker_client_factory\BrokerClient.py”, line 240, in request_data
    self.processMessagesWrapper(None)

    File “C:\Users\julie\Documents\IBridgePy\broker_client_factory\BrokerClient_IB.py”, line 108, in processMessagesWrapper
    self.processMessages() # IBCpp function

    File “C:\Users\julie\Documents\IBridgePy\broker_client_factory\CallBacks.py”, line 310, in orderStatus
    accountCode = self.singleTrader.get_accountCode_by_orderId(self.name, permId)

    File “C:\Users\julie\Documents\IBridgePy\models\Traders.py”, line 109, in get_accountCode_by_orderId
    ibridgePyOrder = self.get_order(brokerName, accountCode, orderId)

    File “C:\Users\julie\Documents\IBridgePy\models\Traders.py”, line 90, in get_order
    return account.keyedIbridgePyOrders.get_value(orderId, ‘IbridgePyOrder’)

    File “C:\Users\julie\Documents\IBridgePy\models\KeyedIbridgePyOrders.py”, line 109, in get_value
    exit()

  11. sahilmax says:

    I am trying to download ibridge py from the ibrdige py website but is showing 404 – fancy meeting u here i am not able to download it

  12. jejete says:

    hi..ibridgepy for linux only works in ubuntu? I’m trying to run this on arch and I get

    IBridgePy version 5.7.2
    fileName = example_show_positions.py
    broker_client_factory.BrokerClient::request_data: EXIT, the following requestRecord failed
    {reqId=3;reqType=reqPositions;followUp=True;param={}}

    this happen with every request, I check and interactive broker is correctly configured, also I tried 3.6 and 3.7 python version

    not sure how enable DEBUG as loglevel, I tried as env var and passing as argument to python RUN_ME.py and in any case this work

    thank you

  13. sidhardha444 says:

    I am getting an error message: No module named ‘BasicPyLib’. Lease help

  14. kniarnaj says:

    broker_client_factory.CallBacks:errorId=-1 errorCode=502 errorMessage=Couldn’t connect to TWS. Confirm that “Enable ActiveX and Socket Clients” is enabled on the TWS “Configure->API” menu.
    broker_client_factory.CallBacks:EXIT IBridgePy version= 5.7.6

    after installation, trying RUN_ME.py, got above message – i have enabled the “activeX and Socket Clients”, what else should i do?

  15. jlynde says:

    I am running on a Mac with Anaconda running OSX 10.15.2 (Catalina).

    First I downloaded and installed the IB Gateway and configured it to use socket port 7496 as described. I did note that only the Interactive Brokers API Server is connected. The other two (FIX Server and FIX Client) are not connected. That probably makes sense but I thought I would mention it just in case.

    Then I downloaded the version of IBridgePy above. Given that it is Python 2.7… I created an environment in Anaconda for Python 2.7 and tried to run the TEST_ME.py script (after updating it with my accountCode). The first try failed because the pandas package was not installed. So I installed that and tried again. This time:

    (py2) Johns-iMac-2:IBridgePy jlynde$ python TEST_ME.py
    Traceback (most recent call last):
    File “TEST_ME.py”, line 2, in
    from data_provider_factory.data_loading_plan import HistIngestionPlan, Plan
    File “/Users/jlynde/IBridgePy/data_provider_factory/__init__.py”, line 1, in
    from .data_provider import DataProvider
    File “/Users/jlynde/IBridgePy/data_provider_factory/data_provider.py”, line 14, in
    from IBridgePy.IbridgepyTools import calculate_startTimePosition
    File “/Users/jlynde/IBridgePy/IBridgePy/IbridgepyTools.py”, line 29, in
    from IBridgePy import IBCpp
    ImportError: dlopen(/Users/jlynde/IBridgePy/IBridgePy/IBCpp.so, 2): no suitable image found. Did find:
    /Users/jlynde/IBridgePy/IBridgePy/IBCpp.so: code signature in (/Users/jlynde/IBridgePy/IBridgePy/IBCpp.so) not valid for use in process using Library Validation: library load disallowed by system policy

    Questions:
    1) Did I miss a step and not configure something? Can you point me to what I missed?
    2) Is there going to be a version of IBridgePy for Mac / Anaconda Python 3 coming any time soon? I would much prefer to code in Python 3.x.

    Thanks,
    John

  16. Alex says:

    Python 3.6.3 |Anaconda, Inc.| (default, Oct 15 2017, 03:27:45) [MSC v.1900 64 bit (AMD64)]
    Type “copyright”, “credits” or “license” for more information.

    IPython 6.1.0 — An enhanced Interactive Python.

    runfile(‘C:/Users/elpha/OneDrive/Documents/IBridgePy_Win_Anaconda36_64/RUN_ME.py’, wdir=’C:/Users/elpha/OneDrive/Documents/IBridgePy_Win_Anaconda36_64′)
    Config.configTools::_validate_user_input: EXIT, initialize does not in RUN_ME.py
    An exception has occurred, use %tb to see the full traceback.

    SystemExit

    C:\Users\elpha\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:2870: UserWarning: To exit: use ‘exit’, ‘quit’, or Ctrl-D.
    warn(“To exit: use ‘exit’, ‘quit’, or Ctrl-D.”, stacklevel=1)

    Any ideas?? Thanks in advance!

  17. bhagya says:

    I am getting this error. I am using Anaconda Python 3.7

    errorMessage=Unable connect as the client id is already in use. Retry with a unique client id.
    broker_client_factory.CallBacks:EXIT IBridgePy version = 6.1.3

    What should I do?

Leave a Reply

Your email address will not be published.