This is a simple IB Client Portal Gateway RESTFul api, IB Client Portal Gateway can be run on Raspberry Pi or any other ARM machine(IB Gateway and TWS are not able to run on ARM). If the api get error, it will return None rather than throw exception.
pip install ib-cp-gateway
or
pip install --upgrade ib-cp-gateway
- Login/Authentication You need go login through https://localhost:5000 before using this api. To run the IB Client Portal Gateway, you can use docker. For ARM architecture,
docker run -d -it --restart=always --name cpgateway-docker -p 5000:5000 hurinhu/ib-clientportal-gateway:RPI4
For others,
docker run -d -it --restart=always --name cpgateway-docker -p 5000:5000 hurinhu/ib-clientportal-gateway
- Initializing
from IB import API
ib = API(url="https://localhost:5000", ssl=False)
- Check version
print(ib.getVersion())
- Check validate session
ib.get_validate()
- Ping server to keep alive
ib.ping_server()
- Get gateway status
ib.get_status()
- Re authentication
ib.reauthenticate()
- Logout
ib.logout()
- Get future conids
ib.get_future_conids(symbol)
- Get stock conids
ib.get_stock_conids(symbol,contract_filters={"isUS": True})
- Find conids details
ib.find_conids(conids)
- Get history data
ib.get_history(conid, period='1w',bar='id',outsideRth=False)
or
ib.get_history_beta(conid, period='1w',bar='id',outsideRth=False)
- Get snapshot data
ib.get_snapshot(conids,since,fields)
or
ib.get_snapshot_beta(conids,fields)
- Get account information
ib.get_accounts()
- Get account meta
ib.get_account_meta(accountId)
- Get account summary
ib.get_account_summary(accountId)
- Get account PDT
ib.get_account_PDT()
- Get account ledger (balance information)
ib.get_account_ledger(account)
- Get account trades
ib.get_trades()
- Get orders (filters: cancelled, filled, submitted)
ib.get_orders(filters=[])
or
ib.get_order_by_id(orderId)
- Create order (side: BUY, SELL)
ib.create_order(accountId, conid, price, quantity, side, orderType='LMT', outsideRTH=True, tif='GTC', useAdaptive=True, isCcyConv=False)
- Cancel order
ib.cancel_order(accountId, orderId)
Example
order = ib.create_order('UXXXXX', 72539702, 41.20, 200, 'BUY', 'LMT', True, 'GTC', True, False)
orderId = order['order_id']
ib.cancel_order('UXXXXX',orderId)
orders = ib.get_orders()
orders[0]['status'] # this is the last order status, it should be 'Cancelled' after cancel order