ib_insyncとは
Interactive Brokers の API を python で操作するためのライブラリです.
GitHub - erdewit/ib_insync: Python sync/async framework for Interactive Brokers API
スゴく使いやすいので,使って行こうと思いますが,ちょこちょこハマったので,メモします.
必要環境
- python3.6以上
私の環境
$ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=18.1
DISTRIB_CODENAME=serena
DISTRIB_DESCRIPTION="Linux Mint 18.1 Serena"
準備
Download
- Interactive Brokers - API Software Version: API 9.73.06 以上.(2018/03/16現在,LATEST版をDLする.Stableではダメ)
-
IBゲートウェイ最新版 | Interactive Brokers
- 2022/09/18 Updated: IB Gateway Latest へのURLが更新されていました -> https://www.interactivebrokers.com/en/trading/ibgateway-latest.php
Install
-
IB API LATESTをインストール.(windows はインストーラーがあるっぽいのでソレに従えばいい?)
$ cd /tmp $ unzip twsapi_macunix.972.18.zip -d $HOME/ # file が解凍されているか確認 $ cd ~/IBJts # owner を確認 ~/IBJts $ ls -alt drwxr-xr-x 2 root root 4096 3月 14 11:52 ibapi drwxr-xr-x 2 root root 4096 12月 28 18:35 tests .... .... # もし,↑のようにowner が root なら,自分に変更する ~/IBJts $ sudo chown -R shineitaro:shineitaro ./ # pythonclient の setup.py を実行 $ cd ~/IBJts/source/pythonclient ~/IBJts/source/pythonclient $ pip install .
-
$ cd /tmp $ chmod u+x ibgateway-latest-standalone-linux-x64.sh $ ./ibgateway-latest-standalone-linux-x64.sh
-
ib_insync をインストール
$ pip install -U ib_insync
試す
IB Gatway設定
- IBゲートウェイをインストール後,Demoアカウントでログイン.
- Configure -> Settings と進む.(Show Log / Show API message に✔入れておくと,実行中にログがでる.オススメ.)
- 設定はこんな感じです.赤枠のところを抑えておけば多分大丈夫かな?と思います.
jupyter notebook で historical data を取得
# version は 3.6 以上か確認
import sys
print(sys.version)
# 3.6.4 ~~~
from ib_insync import *
# Jupyter Notebook で実行するときは必ずイベントループをスタートさせる必要があります.
# (ターミナルでは不要.)
util.startLoop()
# IB に接続
ib = IB()
# clientIdは適当な数値.
ib.connect('127.0.0.1', 4002, clientId=3)
contract = Index('SPX', exchange="CBOE", currency='USD', )
ib.reqHistoricalData(contract,
endDateTime='',
durationStr='10 D',
barSizeSetting='1 day',
whatToShow='TRADES',
useRTH=True,
formatDate=1)
#[BarData(date=datetime.date(2018, 3, 2), open=2660.42, high=2696.13, low=2647.79, close=2691.25, barCount=10119),
# BarData(date=datetime.date(2018, 3, 5), open=2684.75, high=2727.97, low=2675.9, close=2720.94, barCount=6243),
# BarData(date=datetime.date(2018, 3, 6), open=2728.86, high=2731.36, low=2711.55, close=2728.12, barCount=5745),
# ......
はまったところ
- 本家githubには install時に,pythonclient の setup.py を実行しろとは書いてない.これをやっていないと,
No module named ‘ibapi’ / IB API from http://interactivebrokers.github.io is required
というエラーが出る. - Jupyter Notebookで実行するときは必ず
util.startLoop()
を記述する - IB Gatwayを最新にしないと,CBOEのIndexヒストリカルデータを取得できない.参照:Re: historical data for indexes on cboe suddenly not working?
使ってみて
- よく出来てると思う.スゴく使いやすい.たのしい
- datafeed がこない週末は使えない。とほほ。