In this initial lesson we introduce Trader Workstation (TWS), IBKR’s flagship desktop trading application, and the TWS Application Programming Interface (API). An overview is provided of what the TWS API is, what it can provide, and where it can be found. We discuss the hardware and software requirements for this course on programming with the TWS API, and describe experienced programmers as the intended audience. We end by discussing the most frequently-asked questions about the API, with their respective answers.
Prerequisites for this course:
- Windows, Linux, or Mac OSX computer with GUI and Python 3.3 or higher installed.
- Familiarity with Python programming.
- The TWS API utilizes socket programming, multiple threads, and other concepts which it is recommended to be familiar with beforehand. If not, it is suggested to first try an Introduction to Python course which covers these topics.
Programmers with experience in Python who are interested in building custom applications.
IBKR offers several trading platforms, including:
Trader Workstation (TWS), the flagship desktop application. TWS is a Java-based application which can run on any major desktop operating system supporting a graphical user interface, such as Windows, Linux, or MacOS. For security reasons, TWS is designed to require the end user to manually enter credentials into the user interface. Client Portal, which is a web-based platform for trading and other account functions, Or, IBKR mobile, the mobile trading app for Apple and Android smartphones.
In addition to using IBKR’s trading software, there are several ways by which custom or 3rd party trading applications can place trades to IBKR accounts. One common means of connection available for all clients is the TWS API. Other connections types include the Client Portal API, currently in Beta, and FIX/CTCI connections.
The API offerings are detailed on the API Solutions page on the website under the Technology menu at interactivebrokers.com.
The Trader Workstation API is an open-source interface to TWS which can be used by custom or 3rd party applications to automate TWS functionality, including but not limited to:
- Order placement
- Receiving account values
- Receiving portfolio data
- Receiving market data
- Querying financial instrument details
It is important to keep in mind that the TWS API itself does not provide new functionality unavailable in TWS, but rather provides the ability to automate some actions within TWS from external software. The source code for the TWS API is provided under a non-commercial license agreement from http://interactivebrokers.github.io/ and can be used by a developer to write a custom application that connects to TWS. Since this code is entirely in general programming languages such as Python, Java, C#, and C++, the intended audience for the source code are experienced third party programmers with a background in the respective technology.
To develop applications which do not fit under the default non-commercial license agreement, a commercial license agreement is available on request. More than 100 applications compatible with the TWS API have been developed by third party developers, and many are advertised on the Investors Marketplace on the Interactive Brokers website.
Common questions about the TWS API
TWS API FAQs:
Q. What account types can be used with the TWS API?
A. Any IB account type, including Individual, Financial Advisor, STL, and linked account
structures are compatible with the TWS API. However it’s important to note many third party applications are developed to support only IB individual accounts.
Q. Does the API require a specific version of TWS, or vice-versa?
A. TWS is backwards compatible with the API so it is not necessary to upgrade the API to use a
new version of TWS. API applications designed for a specific API version generally cannot use a different API
version without some changes.
Q. Aside from Python, what other languages are included in the download from IBKR?
A. The other official API languages are C++, Java, C#/.NET, VB.NET, and ActiveX and DDE (for
Q. Is there a preferred language, or difference in offered functionality between different programming
A. There are no differences in API functions offered between the available languages (except
for DDE for Excel).
Q. Can independent programmers make suggestions to the API source code directly?
A. Yes, it is possible to make suggestions for changes to the API source code and raise
questions directly on the Github repository. Access can be requested by following directions
under ‘API Beta’ link at http://interactivebrokers.github.io/
Q. Does IBKR provide hosting services for custom algorithms?
A. Unfortunately no, web hosting is not provided.
Q. Can I use another trading application (IBKR mobile, WebTrader, TWS) while an API program is
A. To connect to the same IBKR account simultaneously with multiple trading applications it is
necessary to have multiple usernames. Additional usernames can be created through
Account Management free of charge. Market data subscriptions however only apply to
individual usernames so the fees would be charged separately.
Disclosure: Interactive Brokers
The analysis in this material is provided for information only and is not and should not be construed as an offer to sell or the solicitation of an offer to buy any security. To the extent that this material discusses general market activity, industry or sector trends or other broad-based economic or political conditions, it should not be construed as research or investment advice. To the extent that it includes references to specific securities, commodities, currencies, or other instruments, those references do not constitute a recommendation by IBKR to buy, sell or hold such investments. This material does not and is not intended to take into account the particular financial conditions, investment objectives or requirements of individual customers. Before acting on this material, you should consider whether it is suitable for your particular circumstances and, as necessary, seek professional advice.
Supporting documentation for any claims and statistical information will be provided upon request.
Any stock, options or futures symbols displayed are for illustrative purposes only and are not intended to portray recommendations.