Interactive Brokers 証券の Python API を利用する
Interactive Brokers 証券とは
日本には珍しく自動売買プラットフォームが提供されいてる証券会社です。基本的には全部JAVAで書かれていますが、最近Pythonも公式に対応しました。
Python ライブラリの入手
Latest版のzipをダウンロードしてください。Stable版にはPythonが同梱されていないととても小さい文字で書いてありました。Python3のみ対応とのこと。
Pythonのパッケージディレクトリから下記コマンドでインストールしておきます。
1 2 |
python3 setup.py install |
つなぎ方
IB Gatewayアプリを立ち上げるか、TWSを起動して、ローカルにAPIサーバーを立ち上げます。
まだ開発途中でデバッグがしやすいので、TWSを利用した形での説明をします。
TWSを立ち上げて、File -> Global Configuation -> API の項目からEnable ActiveX and Socket clientsにチェックを入れれば、APIサーバーが立ち上がります。
公式 Python API つらい
ドキュメントを見ながら、実装していこうと思った矢先、ドキュメントに動くコードがあまり載っていないことが発覚。コードの切り出しだけ貼り付けてある感じで、実際にどのようにすれば価格情報を取得できるのかがパット見で全然分かりませんでした。
より使いやすいライブラリを使う
そんななかどりらんさんより救いの手が。
これで簡単に価格情報とかとれました。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 (388)
Adsense
関連記事
-
Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介
以前こんな記事を書いていたのですが、これがまったく不要になるとても便利なPython Libraryがあった
-
Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ
[2015/02/07 追記] [bm url="http://fx-kirin.com/python
-
Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。
pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能がマジックコマンドで
-
stop automatically closeing vim-ipython output with jedi-vim
Even though I commented out the following code in vim_ipytho
-
重回帰分析による米雇用統計の予測モデルを作成してみる
この記事はPython その2 Advent Calendar 2015 の17日目の記事です。 1 はじめに
-
話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件
Rubyの読書会に行ったら、Pythonの面白いお話を聞けたというお話です。 Rubyクローラー本の読書会に参
-
CPP extension vs Cython vs CPython on calculating the mean of numpy array
I'd like to get any feedback to make cython faster like
-
Python での ポートフォリオの計算
Python でのポートフォリオの計算 ポートフォリオの計算について色々調べてみた。とりあえず使いたいって人はpo
-
ipdb だけではなく IPython.embed も使おう
ipdb だと複数行の挿入ができなかったりするが、その問題が解消される。明らかにこちらのほうが使い勝手がいい。行のデ
-
Flast-Sockets + redis-py で簡単 Websocket サーバー実装
参考にしたサイト Using WebSockets on Heroku with Python | Heroku