プログラム環境構築初心者用におすすめ!Windows10にPython3.9.2をインストールしてIB証券のTWS経由でAPI接続してみた!

スポンサーリンク
投資

インタラクティブ・ブローカーズ証券(以下IB証券)のTrader Workstation (トレーダー・ワークステーショ)(以下TWS)のAPIを利用します。口座開設など、いくつかこの段階でハードルがありますが、本記事ではすでに口座開設が行われている前提での生地となります。

日系の証券会社を含めて、TWSはもっとも高機能なツールだと思います。とくに、API連携など、その拡張性など考えても、個人投資家にとっては、現在利用できるツールのうちの最高峰のものであると思っています。

現実的・具体的な利用方法として、本記事では過去データの取得にフォーカスして記述していきま、その設定に必要な手順や、備忘録として書いておきます。

準備・チェックポイント

3つの設定が必要となります。

1.手元PC(Windows10)でPythonが使えるようにする設定

2.TWSのAPI経由でIB証券サーバーに接続するための設定 

3.PythonでIB証券に問い合わせを行うコーディング

の3点が重要になってきます。

Python3.9.2のダウンロードとインストール

3.9.2を選んだ理由は現在私が利用しているバージョンだからです。爆

コードを移植したときに問題なく動くようにするために、必要な労力を最小にしたかったからです。爆爆

ダウンロードリンク:

Python Releases for Windows
The official home of the Python Programming Language

今回は一番下のWindows Installer (64-bit)を選択しました。

インストールファイルの実行:

PATHは入れるように指定します。Install Nowで開始します。

はい、で管理者権限で実行します。

Disable path length limit などありますが、特に指定せずに Close をクリックしてインストール自体は終了。

Pythonのインストールされているか確認

実際にインストールされているかコマンドプロンプトを起動して確認します。

インストールされているか確認のコマンド

python --version

3.9.2がインストールされている様です。

Jupyter Notebookのインストール

事前にpipのアップグレードをしておきます。

コマンドプロンプトを管理者として実行して以下のように実行します。

python -m pip install --upgrade pip

Jupyter notebookのインストール

pip install notebook

Jupyter Notebookの起動チェック

Jupyter Notebookはコマンドプロンプトから実行するのですが、実行したディレクト以下のファイルが参照されるので、まず先にディレクトリ構造を決めておきます。

今回の例ではGoogleドライブの直下にPythonというフォルダを作って、その中に起動コマンドや関連のpython関係のファイルを置いていくディレクトリ構造にします。

コマンドプロンプトのショートカットを

G:\マイドライブ\python

フォルダの下にコピーしておきます。

このショートカットのプロパティを選び、作業フォルダーの情報を空欄にします。

このようにすることで、次回このショートカットを実行すると現在のディレクトリで実行することができます。

Jupyter Notebookの起動

このコマンドプロンプトで

jupyter-notebook

と打って起動するとChromeの新規タブでJupyterが起動します。

IB証券のTrader WorkstationでAPI接続を可能にする設定

データの取得はインタラクティブ・ブローカーズ証券(以下IB証券)のTrader Workstation (トレーダー・ワークステーショ)(以下TWS)のAPIを利用します。口座開設など、いくつかこの段階でハードルがありますが、本記事ではすでに口座開設が行われている前提で進めます。

IB証券からのAPI接続に関する情報は以下のようになります。

日系の証券会社を含めて、TWSはもっとも高機能なツールだと思っていますが、API連携など、その拡張性など考えても、個人投資家にとっては、現在利用できるツールのうちの最高峰のものであると思っています。

現実的・具体的な利用方法として、本記事では過去データの取得にフォーカスして記述していきます。

基本的にはTWSのダウンロード・インストール、API接続を可能にするように設定を行うことで可能です。

ソフトウェアーのダウンロードは以下のサイト

ホーム | インタラクティブ・ブローカーズ証券株式会社
株式やオプション、先物、通貨、そして債券やファンドに直接アクセス可能な、トレーダー、投資家、およびアドバイザーのお客様のためのオンライン取引ソリューションです。透明性の高い低額な約定手数料と借入金利、そして最良約定のためのサポートです。

OSによってダウンロードするキットは変わりますが、上の例ではWindowsの安定版のダウンロードをするようになっています。

インストールは以下のような画面が出てきて、進めていきます。

I accept the terms in the license Agreement にチェックを入れて進めていきます。

インストールディレクトリは変更せず進めていきます。

終了です。

Windowsで問題なくインストールできていればディフォルトでは

C:\TWS API\source\pythonclient

のディレクトリに以下のようなファイル群がインストールされていると思います。

実際の設定はTWS側で行います。

TWSにログインしたののち、 Edit>Global Configurationもしくは歯車のボタンから設定していきます。

もしくは

TWSのAPI接続設定の入力値

Trader Workstation Configurationウィンドウ内で、以下のような設定にすることで可能です。

Enable ActiveX and Socket Clients : API接続するには必要です。

Read-Only API : API経由で新規注文を送る場合は外す必要がありますが、読み込みのみという場合はONでも問題ありません。ただ、Pythonでコードを実行した場合にここのチェックがついてますよと、リマインドされます。

Socket port : 7497 を使っていますが、リアルタイムデータを使いたい場合などは7496を使うようにといわれています。ここの数字はPtyhonのコードと数字をあわせることで接続可能となります。

Allow connections from localhost only : 安全のためにつけておくのが良いと思います。

TWSサイドの設定は以上になります。

PythonでIB証券に問い合わせを行うコーディング

2023/02/16追記:いつくかのバージョンの不整合により正常に動かない場合があるようです。

以下のバージョンでは正常に動くことを確認していますので、そのバージョンを利用することを強くお勧めします。

ib_insync==0.9.70

pandas==1.3.1

追記終了

まずは必要なライブラリとして ib_insync というというものをインストールします。

pip install ib_insync==0.9.70

あと、必要に応じてpandasなど必要な他のモジュールもインストールしておくといいと思います。

pip install pandas==1.3.1
もしくは
pip install pandas==1.3.1 --user

Jupyter Notebookでの動作確認

インストールできた場合はJupyter Notebookから動作確認をしていきます。

新規のPython3のファイルを作ります。

以下のコードを実行します。

from ib_insync import *
import random
import pandas as pd

util.startLoop()
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=random.randint(0, 29))
contract = Forex('EURUSD')
bars = ib.reqHistoricalData(contract, endDateTime='', durationStr='30 D',
barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)
df = util.df(bars)
display(df[['date', 'open', 'high', 'low', 'close']].head())

今回の例ではAPI接続ではリードオンリー(読み込みのみ)としていましたのでこのようなメッセージが出ますが、データ取得については問題ないので、「クローズ」を押します。

問題なければ以下のようなデータが取得できるはずです。

お役に立てましたでしょうか。

投資に関する免責事項
情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。

IB証券関係、投資関係、Python関係の記事になります。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
米国債のゼロクーポン債STRIPSについてのメモ
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】

コメント