Interactive Brokers 証券の Python API を利用する
目次
Interactive Brokers 証券とは
日本には珍しく自動売買プラットフォームが提供されいてる証券会社です。基本的には全部JAVAで書かれていますが、最近Pythonも公式に対応しました。
Python ライブラリの入手
Latest版のzipをダウンロードしてください。Stable版にはPythonが同梱されていないととても小さい文字で書いてありました。Python3のみ対応とのこと。
Pythonのパッケージディレクトリから下記コマンドでインストールしておきます。
1 |
python3 setup.py install |
つなぎ方
IB Gatewayアプリを立ち上げるか、TWSを起動して、ローカルにAPIサーバーを立ち上げます。
まだ開発途中でデバッグがしやすいので、TWSを利用した形での説明をします。
TWSを立ち上げて、File -> Global Configuation -> API の項目からEnable ActiveX and Socket clientsにチェックを入れれば、APIサーバーが立ち上がります。
公式 Python API つらい
ドキュメントを見ながら、実装していこうと思った矢先、ドキュメントに動くコードがあまり載っていないことが発覚。コードの切り出しだけ貼り付けてある感じで、実際にどのようにすれば価格情報を取得できるのかがパット見で全然分かりませんでした。
2018-08-07 追記
そのままibapiを使うと、loggingのrootでのログが大量に発生してしまいます。
インストール時に下記コマンドでインストールしておけば、名前でログの管理ができるようになります。
1 2 3 4 5 6 7 8 9 |
unzip twsapi_macunix.973.07.zip cd IBJts/source/pythonclient/ibapi sed -i -e 's/import logging/\0\nlogger = logging.getLogger("ibapi")/g' * sed -i -e 's/logging.debug/logger.debug/g' * sed -i -e 's/logging.info/logger.info/g' * sed -i -e 's/logging.error/logger.error/g' * sed -i -e 's/logging.log/logger.log/g' * cd .. python3 setup.py install |
より使いやすいライブラリを使う
そんななかどりらんさんより救いの手が。
こういうのあります https://t.co/yXXt5AfRLs
— driller/どりらん (@patraqushe) July 31, 2018
これで簡単に価格情報とかとれました。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from ib_insync import * import time def onPendingTickers(tickers): for t in tickers: print(t.bidSize, t.bid, t.ask, t.askSize, t.high, t.low, t.close) if __name__ == "__main__": ib = IB() ib.connect('127.0.0.1', 4001, clientId=1) contracts = [Forex(pair) for pair in 'EURUSD USDJPY GBPUSD USDCHF USDCAD AUDUSD'.split()] eurusd = contracts[0] for contract in contracts: ib.reqMktData(contract, '', False, False) ib.pendingTickersEvent += onPendingTickers while True: ib.sleep(1) |
ib.sleep
を使わないと、イベントループが周ってくれません。ハマった・・・。
参考リンク



About Fx-Kirin
2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。
- Web |
- More Posts (410)
Adsense
関連記事
-
-
joblib によって謎のバグが起こる
joblib 0.14.1 にて確認.0.13.2 だと起こらない.import joblib を消すと正常に動く.
-
-
stop automatically closeing vim-ipython output with jedi-vim
Even though I commented out the following code in vim_ipytho
-
-
まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ
タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ、最近Pandasの
-
-
ipdb だけではなく IPython.embed も使おう
ipdb だと複数行の挿入ができなかったりするが、その問題が解消される。明らかにこちらのほうが使い勝手がいい。行のデ
-
-
話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件
Rubyの読書会に行ったら、Pythonの面白いお話を聞けたというお話です。 Rubyクローラー本の読書会に参
-
-
Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。
pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能がマジックコマンドで
-
-
Python での Log 収集
プロジェクトが大きくなるにつれて、プログラムの不備を見つけるのにログの構成、ログデザインを考えることが重要になってく
-
-
Python Pandas からお手軽に highcharts が使える kanichart 作りました。
Kanichart fx-kirin/kanichart: Easy(簡易) plotting library.
-
-
Quantopian の pyfolio を単利運用に対応させる。
pyfolio は どんなデータを入れても複利運用として計算してしまうので、人によっては望まない検証方法だったりし
Adsense
NEW ENTRY
-
- Linux Mint 20 での日本語の設定について。
フォントの設定とかはいろいろなところで触れられているので、他にない情報だけ。 TL;DR F
-
- joblib によって謎のバグが起こる
joblib 0.14.1 にて確認.0.13.2 だと起こらない.import joblib を消
-
- Fixing kernel error AMD-Vi: Event logged IO_PAGE_FAULT on Ryzen Machine
My pc was periodically shut down on 7:40 am JS
-
- Ubuntu で仮想ディスプレイを使う
雑多な備忘録ですが、せっかくなので残しておきます。 Ubuntu 18.04 の resolv.c
-
- PYPIへの登録を10秒でできるようになる方法
pip 使ってますよね Pythonを使っている人であれば、pip installでライブラリ
Twitter
RSS
カテゴリー
-
人気記事一覧
任意のインジケータのシグナルでアラートやメール機能を追加する 391ビュー
Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介 184ビュー
まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ 140ビュー
Synology DS216j の MySQL に外部からつなぐ 110ビュー
Ubuntu で仮想ディスプレイを使う 96ビュー
Linux Mint 20 での日本語の設定について。 93ビュー
Add Alert and SendMailの改造 90ビュー