Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/utilmon/EasyIB
Python wrapper for Interactive Brokers Client Portal Web API
https://github.com/utilmon/EasyIB
client-portal interactive-brokers python rest-api trading-api
Last synced: 8 days ago
JSON representation
Python wrapper for Interactive Brokers Client Portal Web API
- Host: GitHub
- URL: https://github.com/utilmon/EasyIB
- Owner: utilmon
- License: bsd-3-clause
- Created: 2021-08-04T00:56:34.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-19T08:09:57.000Z (5 months ago)
- Last Synced: 2024-11-08T11:12:50.551Z (about 1 month ago)
- Topics: client-portal, interactive-brokers, python, rest-api, trading-api
- Language: Python
- Homepage:
- Size: 1.06 MB
- Stars: 88
- Watchers: 6
- Forks: 24
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - utilmon/EasyIB - Python wrapper for Interactive Brokers Client Portal Web API (Python)
README
EasyIB: Python Wrapper for Interactive Brokers API
======================================================.. image:: https://img.shields.io/pypi/v/easyib
:target: https://pypi.org/pypi/easyib/
.. image:: https://img.shields.io/pypi/pyversions/easyib
:target: https://pypi.org/pypi/easyib/
.. image:: https://img.shields.io/pypi/l/easyib
:target: https://pypi.org/pypi/easyib/
.. image:: https://readthedocs.org/projects/easyib/badge/?version=latest
:target: https://easyib.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status|
.. figure:: https://raw.githubusercontent.com/ashpipe/EasyIB/main/docs/logo.png
:width: 400
:align: center
"Logo for 'EasyIB'" according to Midjourney|
| EasyIB is an unofficial python wrapper for `Interactive Brokers Client Portal Web API `__. The motivation for the project was to build a Python wrapper that can run on Linux/cloud environments. Thus, Client Portal API was preferred over Trader Workstation (TWS) API.Please see https://easyib.readthedocs.io for the full documentation.
Features
---------
Notable functionality includes:* Pull account info, portfolio, cash balance, the net value
* Pull historical market data
* Submit, modify, cancel orders
* Get order status, list of live orders
* Ping (tickle) server, get authentication status, re-authenticateHow to install
--------------EasyIB assumes a gateway session is active and authenticated.
Follow instructions at https://interactivebrokers.github.io/cpwebapi/ for authentication.
A custom package such as `Voyz/IBeam `__ can also be used for setting up an active session.
Part Time Larry has an excellent youtube tutorial on this topic: https://www.youtube.com/watch?v=O1OhiiCx6Ho.EasyIB was developed under the `Voyz/IBeam `__ docker image environment.
You can verify if a gateway session is active by typing ``curl -X GET "https://localhost:5000/v1/api/one/user" -k`` at bash terminal.Once a gateway session is running, ``pip`` command can be used to install EasyIB:
.. code-block:: bash
pip install easyib
Quick start
------------
Historical data
^^^^^^^^^^^^^^^^.. code-block:: python
import easyib
ib = easyib.REST() # default parameters: url="https://localhost:5000", ssl=False
bars = ib.get_bars("AAPL", period="1w", bar="1d")
print(bars)Submitting an order
^^^^^^^^^^^^^^^^^^^^^.. code-block:: python
list_of_orders = [
{
"conid": ib.get_conid("AAPL"),
"orderType": "MKT",
"side": "BUY",
"quantity": 7,
"tif": "GTC",
}
]
order = ib.submit_orders(list_of_orders)
print(order)Reference
-------------
For the complete reference, please visit https://easyib.readthedocs.io/en/latest/reference.html.REST
^^^^^
By default, EasyIB assumes the gateway session is open at https://localhost:5000 without an SSL certificate. A custom URL and SSL certificate can be set by:.. code-block:: python
ib = easyib.REST(url="https://localhost:5000", ssl=False)
API REST Methods
^^^^^^^^^^^^^^^^^
Documentation of available functions is at https://easyib.readthedocs.io/en/latest/reference.html.See the official documentation of the End Point at https://www.interactivebrokers.com/api/doc.html.
.. list-table::
:widths: 50 50 25
:header-rows: 1* - REST Method
- End Point
- Result
* - ``get_accounts()``
- ``Get portfolio/accounts``
- ``list``
* - ``switch_account(accountId: str)``
- ``Post iserver/account/{accountId}``
- ``dict``
* - ``get_cash()``
- ``Get portfolio/{accountId}/ledger``
- ``float``
* - ``get_netvalue()``
- ``Get portfolio/{accountId}/ledger``
- ``float``
* - ``get_conid(symbol: str, instrument_filters: Dict = None, contract_filters: Dict = {"isUS": True})``
- ``Get trsv/stocks``
- ``int``
* - ``get_fut_conids(symbol: str)``
- ``Get trsv/futures``
- ``list``
* - ``get_portfolio()``
- ``Get portfolio/{accountId}/positions/0``
- ``dict``
* - ``reply_yes(id: str)``
- ``Post iserver/reply/{id}``
- ``dict``* - ``submit_orders(list_of_orders: list, reply_yes=True)``
- ``Post iserver/account/{acountId}/orders``
- ``dict``* - ``get_order(orderId: str)``
- ``Get iserver/account/order/status/``
- ``dict``* - ``get_live_orders(filters=None)``
- ``Get iserver/account/orders``
- ``dict``* - ``cancel_order(orderId: str)``
- ``Delete iserver/account/{accountId}/order/{orderId}``
- ``dict``* - ``modify_order(orderId=None, order=None, reply_yes=True)``
- ``Post iserver/account/{accountId}/order/{orderId}``
- ``dict``* - ``get_bars(symbol: str, period="1w", bar="1d", outsideRth=False, conid="default")``
- ``Get iserver/marketdata/history``
- ``dict``* - ``ping_server()``
- ``Post tickle``
- ``dict``
* - ``get_auth_status()``
- ``Post iserver/auth/status``
- ``dict``
* - ``re_authenticate()``
- ``Post iserver/reauthenticate``
- ``None``
* - ``log_out()``
- ``Post logout``
- ``None``