Interactive Brokers Python API, auto generated from C++ API using
Latest version: 0.4.1 (TWS API v9.68)
Use pip (recommended)::
$ pip install swigibpy
Alternatively download your archive of choice and run::
$ python setup.py install
swigibpy just provides a wrapper around the TWS C++ API so this needs to be compiled for your target platform during installation. While this should 'just work' for Linux and OSX, Windows users might need to do some extra work.
Download and install
MinGW and follow the steps to
add MinGW to your path. Note there is a
compatability problem_ between the latest
version of MinGW and disutils so it is recommended to install an older version
until this is resolved (mingw-get-inst-20110802.exe has been known to work).
To get pip to use MinGW as the compiler edit or create a
[PYTHON LOCATION]\Lib\distutils where
[PYTHON LOCATION] is the path to your Python install, e.g.
Add the following to
then use the pip command above and with a bit of luck, you're done!
Alternatively you can download and build the package directly. To build and install use::
python setup.py build -c mingw32 python setup.py install
This has been verified to work using MinGW and Python 2.7 on Windows 7, Vista, and XP.
Several users have reported success building swigibpy with Visual Studio, with a few caveats:
/MDcompile flag, which distutils adds. For a workaround see
To use simply import the swigibpy module. The minimum you will need to do is
EWrapper sub-class whose methods will be invoked when a message
is received from TWS, see the
examples_ for more.
By default swigibpy will automatically poll TWS for messages, see
more about this.
For API reference refer to the
C++ API documentation_.
yield parameter in
CommissionReport clashes with a Python reserved
keyword so it is renamed to
By default swigibpy will create a background thread to automatically poll TWS
for messages. If you wish to disable this behaviour and handle polling
yourself use the
poll_auto argument when calling
tws.eConnect("", 7496, 42, poll_auto=False)
The TWS C++ API performs synchronous I/O using socket receive, swigibpy does not alter this behaviour (hence the background thread).
Apart from a few trivial
patches_ to aid compilation and interoperability
with Python swigibpy does not alter the TWS C++ API code in any way.
Contributions are welcome! For development you can build the extension in the current dir::
$ python setup.py build_ext --build-lib .
The majority of the swigibpy code is auto-generated by SWIG and swigibpy also includes a number of trivial patches for TWS's C++ code. The TWS API included in the repository has already been patched and the SWIG code has already been generated, but if you need to rerun these steps the commands are::
$ python setup.py swigify
to regenerate the SWIG wrappers (SWIG 2.0+ required), and::
$ python setup.py patchify
to reapply the patches to the TWS API (specify the option
-r if you want to
un-apply the patches and get back to unaltered TWS code).
swigibpy original code is free software under the New BSD license.
Interactive Brokers propriety C++ API is copyright Interactive Brokers LLC. swigibpy is in no way supported or endorsed by Interactive Brokers LLC.
.. _Interactive Brokers: http://www.interactivebrokers.co.uk/ .. _SWIG: http://www.swig.org/ .. _C++ API documentation: http://www.interactivebrokers.com/en/software/api/api.htm .. _MinGW: http://www.mingw.org/ .. _add MinGW to your path: http://www.mingw.org/wiki/Getting_Started#toc5 .. _compatability problem: http://bugs.python.org/issue12641 .. _here: https://github.com/Komnomnomnom/swigibpy/issues/2 .. _patches: https://github.com/Komnomnomnom/swigibpy/tree/master/patches .. _examples: https://github.com/Komnomnomnom/swigibpy/tree/master/examples