ブログ記事更新日:2021年5月9日
auカブコム証券APIを、Pythonから操作する方法を解説します。
初心者向けに、PythonのインストールからIDE(システムの統合開発環境)の導入を含めて解説しています。
auカブコム証券がやってくれました。
個人投資家向けにAPIの無償提供スタート
日本株式はもちろん、信用取引、先物・オプション取引にも対応しています。
動画で解説
このブログ記事と、ほぼ同じ内容です。(動画は、より詳細な情報を含んでいます)
関連動画
はじめてのPythonとplotlyで株価分析。動くチャートの作り方をやさしく解説。Google Colaboratoryで実行しています。完全無料でテクニカル分析が出来る!
Pythonのインストール
Pythonをインストールしましょう。
Pythonのインストール方法には大きく分けて2種類あります。
◇Python Package をインストールする方法
◇Anaconda をインストールする方法
今回はAnacondaをインストールします。
Anacondaをインストールするメリット
Anacondaはデーターサイエンスや、科学技術用のプラットフォームです。
Anacondaをインストールすると、Pythonと同時にデーターサイエンスのツールやライブラリーもインストールされます。
今回はAnacondaをインストールします。
アナコンダ ダウンロードページ
https://www.anaconda.com/
Windows10の方は 64ビットを選びましょう。
ダウンロードしたファイルを起動します。
ネクストボタンを押します。
内容を確認したら次に進みます。
ユーザーを指定
インストール先を選択。
特に変更が無ければそのままネクストボタンを押します。
下のチエックボックスにチェックを入れると、後からインストールするIDE(統合開発環境)からパスを見つけやすくなります。
インストールが完了しました。
ANAKONDAのアイコンの右隣にあるのが、これからインストールするPyCharm(IDE)のアイコンです。
インストールを終了すると、次のホームページが立ち上がることがあります。
そのまま消去してOK。
PyCharmのインストール
PyCharm はPythonのプログラミング開発に最適化されたIDE(統合開発環境)です。
もちろん他のIDEを使用していただいても、全く問題はありません。
https://www.jetbrains.com/ja-jp/pycharm/
有料版と無料版があります。
どちらでも問題ないと思いますが、私は有料版を使っています。
インストールを開始します。
インストールするフォルダを指定します。
こだわりが無ければ、デフォルトでOK。
こちらも好みですが、私はデスクトップにショートカットを作るチェックボックスと拡張子”.PY”を関連付けるチェックボックスにチェックを入れました。
インストールが完了しました。
契約内容を確認して、EXIT。
製品品質向上のため、匿名情報を送るかの確認。
どちらでも良いと思いますが、私は送らない条件でつぎに進みます。
無料版を使うのであれば、freeにチェックを入れてください。
有料版を使う方は、ユーザーネームとパスワードをいれて、アクティベートします。
PyCharmが起動しました。
PyCharmのメニューは日本語化する事が出来ます。
私は面倒なのでやっていません。
日本語化の手順はグーグル等で検索していただければ、すぐに見つかると思います。
フォントサイズをマウスホイールで変更する設定
File-Settings
General-Mouse Control の中のChange font size With Ctrl+Mouse Wheel にチエックを入れます。
auカブコム証券API設定
auカブコム証券のホームページにログイン
マイページ右側中央部分にkabuステーションのリンクがあります。
利用申し込みが済んでいない方は、済ませておいてください。
kabuステーション起動のリンクをクリックすると、こちらのウインドウが立ち上がります。
[インストール・起動]のボタンを押します。
setup.exeファイルがダウンロードされるので、setup.exeファイルを起動させます。
インストールをクリックします。
デスクトップにショートカットを作成するか聞かれますので、お好みで「はい」「いいえ」をクリックしてください。
迷うなら「はい」を選んでください。
口座番号とパスワードを登録して、ログインボタンを押します。
kabuステーションが立ち上がります。
kabuステーションAPI利用登録
kabuステーションAPIを利用するには、最初に登録が必要です。
auカブコム証券のホームページに戻って、「kabuステーションAPIポータル」をクリックしてください。
kabuステーションのホームページが開きます。
表示が小さいのですが、ページの下の方に「kabuステーション(R)API利用登録方法」のリンクがありますので、クリックしてください。
「kabuステーション(R)APIのご利用設定」をクリックします。
kabuステーション(R)API利用設定のページが開きます。
https://kabucom.github.io/kabusapi/ptal/howto.html
上のページの手順にしたがって「kabuステーション(R)APIを利用するための初期設定」を済ませてください。
kabuステーションAPIシステム設定
kabuステーション(R)APIを利用するための初期設定が済んだら、kabuステーションAPIシステム設定を行います。
「えーっ。まだ設定が続くの~」
そんな声が聞こえてきそうですが、もう一息です。
初期設定と同じページの「APIシステム設定」の手順にしたがって設定を行ってください。
Pythonサンプルコードをダウンロード
kabuステーションAPのIシステム設定が完了したら、公式ページからPythonサンプルコードをダウンロードしましょう。
「kabuステーション(R)開発者ポータルはこちら」 のリンクをクリックしてください。
ページ下段にサンプルコードへのリンクがあります。
サンプルコード >Python をクリックしてください。
GitHubのページに飛びますが、心配ありません。
Python.zip をクリックしてサンプルコードをダウンロードしましょう。
ダウンロードしたファイルは圧縮されていますので、好きな場所に展開してください。
展開したファイルはこちら。
簡単な説明が、 00.Readme.txt ファイルに記載されています。
【前提】
・PCにpython3がインストールされていること。
・PUSH配信(websocket)をするには、python3のインストール後にコマンドプロンプトにて以下のコマンドを実行する。
コマンド:py -m pip install websocket-client【注意】
「token.py」ファイル名は、pythonで予約とされているため使用できません。【kabuステAPI実行方法】
コマンドプロンプトから、各コマンドを実行する。【ファイルリスト】
1.トークン発行
コマンド:python kabusapi_token.py
※1で発行したtokenを2以降の各ファイル内の「X-API-KEY」に指定する2.注文発注(現物)
(1)買
コマンド:python kabusapi_sendorder_cash_buy.py
(2)売
コマンド:python kabusapi_sendorder_cash_sell.py3.注文発注(信用)
(1)新規
コマンド:python kabusapi_sendorder_margin_new.py
(2)返済(決済順序)
コマンド:python kabusapi_sendorder_margin_pay_ClosePositionOrder.py
(3)返済(返済建玉指定)
コマンド:python kabusapi_sendorder_margin_pay_ClosePositions.py4.注文発注(先物)
(1)新規
コマンド:python kabusapi_sendorder_future_new.py
(2)返済(決済順序)
コマンド:python kabusapi_sendorder_future_pay_ClosePositionOrder.py
(3)返済(返済建玉指定)
コマンド:python kabusapi_sendorder_future_pay_ClosePositions.py5.注文発注(OP)
(1)新規
コマンド:python kabusapi_sendorder_option_new.py
(2)返済(決済順序)
コマンド:python kabusapi_sendorder_option_pay_ClosePositionOrder.py
(3)返済(返済建玉指定)
コマンド:python kabusapi_sendorder_option_pay_ClosePositions.py6.注文取消
コマンド:python kabusapi_cancelorder.py7.取引余力(現物)
コマンド:python kabusapi_cash.py8.取引余力(信用)
コマンド:python kabusapi_margin.py9.取引余力(先物)
コマンド:python kabusapi_wallet_future.py10.取引余力(OP)
コマンド:python kabusapi_wallet_option.py11.時価情報・板情報
コマンド:python kabusapi_board.py12.銘柄情報
コマンド:python kabusapi_symbol.py13.注文約定照会
コマンド:python kabusapi_orders.py14.残高照会
コマンド:python kabusapi_positions.py15.先物銘柄コード取得
コマンド:python kabusapi_symbolname_future.py16.オプション銘柄コード取得
コマンド:python kabusapi_symbolname_option.py17.PUSH配信開始
コマンド:python kabusapi_websocket.py18.銘柄登録
コマンド:python kabusapi_register.py19.銘柄登録解除
コマンド:python kabusapi_unregister.py20.銘柄登録全解除
コマンド:python kabusapi_unregisterall.py21. 詳細ランキング
コマンド:kabusapi_ranking.py22. 為替情報
コマンド:kabusapi_exchange.py23. 規制情報
コマンド:kabusapi_regulations.py24. 優先市場
コマンド:kabusapi_primaryexchange.py25. ソフトリミット
コマンド:kabusapi_apisoftlimit.py// ライセンスについて
Copyright (c) 2020 au Kabucom Securities Co., Ltd.
Released under the MIT license
https://opensource.org/licenses/mit-license.php
Python初心者の方は、この 00.Readme.txt ファイルの内容を読んでも何が何だかわかりませんよね。
この記事の前半でインストールしたPyCharmでサンプルコードを開いてみます。
※PyCharm はPythonのプログラミング開発に最適化されたIDE(統合開発環境)です。
サンプルコードの変更(トークンやパスワードの扱い方)
ダウンロードしたサンプルコードをPyCharmで開きます。
トークンの取得
サンプルコードをPyCharmで開きました。
PythonからkabuステーションAPIを使ってデーターを取得するには、最初にトークンを発行する必要があります。
トークンを発行するサンプルコードkabusapi_token.pyの中身はこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import urllib.request import json import pprint obj = { 'APIPassword': 'qwerty' } json_data = json.dumps(obj).encode('utf8') url = 'http://localhost:18080/kabusapi/token' req = urllib.request.Request(url, json_data, method='POST') req.add_header('Content-Type', 'application/json') try: with urllib.request.urlopen(req) as res: print(res.status, res.reason) for header in res.getheaders(): print(header) print() content = json.loads(res.read()) pprint.pprint(content) except urllib.error.HTTPError as e: print(e) content = json.loads(e.read()) pprint.pprint(content) except Exception as e: print(e) |
obj = { ‘APIPassword’: ‘qwerty‘ }
qwerty部分にAPIパスワードを入力して、実行します。
トークンが発行されました。
注文発注(現物)
注文発注(現物)のサンプルコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import urllib.request import json import pprint obj = { 'Password': '123456', 'Symbol': '9433', 'Exchange': 1, 'SecurityType': 1, 'FrontOrderType': 20, 'Side': '2', 'CashMargin': 1, 'DelivType': 2, 'FundType': 'AA', 'AccountType': 2, 'Qty': 100, 'Price': 2762.5, 'ExpireDay': 20200924 } json_data = json.dumps(obj).encode('utf-8') url = 'http://localhost:18080/kabusapi/sendorder' req = urllib.request.Request(url, json_data, method='POST') req.add_header('Content-Type', 'application/json') req.add_header('X-API-KEY', 'ed94b0d34f9441c3931621e55230e402') try: with urllib.request.urlopen(req) as res: print(res.status, res.reason) for header in res.getheaders(): print(header) print() content = json.loads(res.read()) pprint.pprint(content) except urllib.error.HTTPError as e: print(e) content = json.loads(e.read()) pprint.pprint(content) except Exception as e: print(e) |
obj = { ‘Password’: ‘123456‘,
123456の部分に取引パスワードを入力。
req.add_header(‘X-API-KEY’, ‘ed94b0d34f9441c3931621e55230e402‘)
ed94b0d34f9441c3931621e55230e402の部分に先ほど取得したトークンを入力します。
このように、サンプルコードには取引パスワードや、トークンをPythonコードの中に直接記述するようになっています。
運用する上で好ましくありません。
パスワードや、トークンをまとめて管理できるように変更してみます。
パスワードやトークンなどの情報をまとめる
パスワードやトークンなどの情報をセッティングファイルにまとめます。
PyCharmのプロジェクトファイルの上で右クリック。
New – Fileを選んで新しくsettings.iniファイルを作成します。
settings.iniファイルに次のように入力します。
XXXXXの部分は、ご自分のパスワードや取得したトークンを入力してください。
(2行目の空白行は削除)
次にPythonファイルを新しく作成します。
New – Python Fileを選んで新しくsettings.pyファイルを作成します。
settings.pyのコードはこちら。
1 2 3 4 5 6 7 8 |
import configparser conf = configparser.ConfigParser() conf.read('settings.ini') APIPassword = conf['aukabu']['APIPassword'] Token = conf['aukabu']['Token'] Password = conf['aukabu']['Password'] |
設定ファイル管理モジュールをインポート
import configparser
読み込んでいるのは、settings.iniファイルの内容です。
conf = configparser.ConfigParser()
conf.read(‘settings.ini’)
APIパスワードを APIPassword 変数に代入
APIPassword = conf[‘aukabu’][‘APIPassword’]
トークンを Token 変数に代入
Token = conf[‘aukabu’][‘Token’]
パスワードを Password 変数に代入
Password = conf[‘aukabu’][‘Password’]
サンプルコードを書き直す
パスワードやトークンを変数として取得出来るようになりましたので、サンプルコードに手を加えてみます。
時価情報・板情報 kabusapi_board.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import urllib.request import json import pprint ##追記 import settings Token = settings.Token ##追記ここまで url = 'http://localhost:18080/kabusapi/board/5401@1' req = urllib.request.Request(url, method='GET') req.add_header('Content-Type', 'application/json') req.add_header('X-API-KEY', Token) try: with urllib.request.urlopen(req) as res: print(res.status, res.reason) for header in res.getheaders(): print(header) print() content = json.loads(res.read()) pprint.pprint(content) except urllib.error.HTTPError as e: print(e) content = json.loads(e.read()) pprint.pprint(content) except Exception as e: print(e) |
加えたのはこの2行。
トークンをsettingsから取得しています。
##追記
import settings
Token = settings.Token
##追記ここまで
そして、トークンを変数Tokenに書き換えました。
req.add_header(‘X-API-KEY’, Token)
サンプルコード(追記したもの) 時価情報・板情報 kabusapi_board.pyを実行しました・
日本製鉄の情報が取得できています。
今回のブログ記事はここまでにします。
随時、auカブコム証券API関連の記事を配信しています。
簡単な自動売買ができるようになるまで、情報を配信します。
記事内容にご興味がある方はブックマークしていただけると幸いです。
YouTubeの解説動画とリンクしていますので、YouTubeチャンネルの登録もご検討ください。
この記事を書いた人
ゆたかドットらいふ編集部
あしおゆたか
投資歴21年の個人投資家
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。(現在自粛中)
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら