記事の更新日:2023年1月9日
auカブコム証券「kabuステーション®API」Pythonサンプルコードを丁寧に解説しています。
このブログ記事は下の解説ページの続きです。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page3 [kabuステーション®API]
解説動画
いよいよ実用的な内容になります。
前ページで解説したように、「kabuステーション®API」経由で、銘柄情報取得や、発注するには有効なトークンが必要です。
ところがこのトークンは、次のタイミングで無効になってしまいます。
発行されたAPIトークンは以下のタイミングで無効となります。
・kabuステーションを終了した時
・kabuステーションからログアウトした時
・別のトークンが新たに発行された時出所:更新REST APIリファレンス
現状では(2023年1月3日現在)このトークンの有効・無効を判断するインターフェースはありません。
トークンを頻繁に取得する必要があるため、トークン取得のPythonコードを関数化しましょう。
トークン取得を関数化
auカブコム証券API トークン取得のサンプルコードはこちらです。
サンプルコードを元に、関数化します。
パスワードを変数に代入
サンプルコードの5行目でAPIパスワード入力が求められます。
関数内にパスワードを直接記載するのは、セキュリティ上やメンテナンス上の問題があります。
変数に代入します。
jupterNotebookブックを開いて、実際にコードを記述しましょう。
1 2 3 |
#パスワードを変数に代入 APIPassword = 'xxx△△△◇◇◇' ←ここに本当のパスワードを入力 |
必要なライブラリーをインポート
必要なライブラリーをインポートします。
1 2 3 4 5 |
#必要なライブラリーをインポート import urllib.request import json import pprint |
トークンを取得する関数
トークンを取得する関数を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#トークンを取得する関数 def generate_token(APIPassword): obj = {'APIPassword': APIPassword} 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: content = json.loads(res.read()) print(content) token_value = content.get('Token') except urllib.error.HTTPError as e: print(e) token_value = 'HTTPError' except Exception as e: print(e) token_value = 'Error' return token_value |
サンプルコードから変更した部分の解説
◇def generate_token(APIPassword):
関数名をgenerate_tokenとし、引数をAPIPasswordにしています。
def generate_token(APIPassword):
◇obj = {‘APIPassword’: APIPassword}
関数の引数として受け取った、APIパスワードをPythonの辞書型にして変数objに代入しています。
obj = {‘APIPassword’: APIPassword}
◇json_data = json.dumps(obj).encode(‘utf8’)
json_data = json.dumps(obj).encode(‘utf8’) は、辞書型のAPIパスワードをJSON形式に変換しています。
そして、Python の標準の文字コードである UTF-8を指定しています。
◇token_value = content.get(‘Token’)
try:以下のWith句最終行でトークンを変数に代入しています。
token_value = content.get(‘Token’)
◇return token_value
変数の戻り値にトークンを指定
return token_value
関数でトークンを取得する
関数でトークンを取得しましょう。
1 2 3 4 |
#関数でトークンを取得する token_value = generate_token(APIPassword) print(token_value) |
jupterNotebookブックでの出力結果
青く塗りつぶされた部分にトークンが出力されています。
1行目は関数内の、このコードにより出力 print(content)
2行目はこのコードにより出力 print(token_value)
次に続く
この続きは、新しいページをご覧下さい。
次は、発注処理です。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page5 注文発注(現物)[kabuステーション®API]
この記事を書いた人
あしおゆたか
株式投資歴22年のシステムトレーダー(←主な取引手法)
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら