前回の内容
前回の記事:【Python】AUカブコム証券のKabuステーションAPIのサンプルコードと使い方①(口座残高・注文一覧)
前回に引き続いてKabuステーションAPIの使い方について紹介していきたいと思います。今回は板情報・価格情報についてサンプルコードと合わせて紹介します。
認証トークンの発行
今回叩くAPIについても前回と同様に認証トークンが必要になります。またurlはローカルサーバーですが、これはKabustationをソフトをPC上起動すると自動的に立ち上がっています。
import urllib.request import json host_ = '18080' # 本番環境 pass_ = 'KABUSTATIONで設定時に決めたパスワード' # 認証用のトークンを作成する関数 def generate_token(): obj = {'APIPassword': pass_} json_data = json.dumps(obj).encode('utf8') url = f'http://localhost:{host_}/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()) token_value = content.get('Token') return token_value except urllib.error.HTTPError as e: print(e) return e # 関数を実行してトークンを発行 token = generate_token() print(token)
銘柄情報の取得
def get_symbol(market, code, token): url_symbol = f'http://localhost:{host_}/kabusapi/symbol/{code}@{market}' req_symbol = urllib.request.Request(url_symbol, method='GET') req_symbol.add_header('X-API-KEY', token) try: with urllib.request.urlopen(req_symbol) as res_symbol: content_symbol = json.loads(res_symbol.read()) except urllib.error.HTTPError as e_symbol: print(e_symbol) content_symbol = json.loads(e_symbol.read()) return content_symbol
<実行例>
# ソニー<6758>の銘柄情報を取得 get_symbol(1, 6758, token)
<実行結果>
{'BisCategory': '3650 ', 'TotalMarketValue': 14143032173915.0, 'TotalStocks': 1261058.0, 'FiscalYearEndBasic': 20230331, 'KCMarginBuy': True, 'KCMarginSell': True, 'MarginBuy': True, 'MarginSell': True, 'DisplayName': 'ソニーG', 'Exchange': 1, 'ExchangeName': '東証プ', 'TradingUnit': 100.0, 'PriceRangeGroup': '10003', 'UpperLimit': 14215.0, 'LowerLimit': 8215.0, 'Symbol': '6758', 'SymbolName': 'ソニーグループ'}
板情報の取得
# 板情報・価格情報を取得 def get_priceinfo(market, code, token): url_symbol = f'http://localhost:{host_}/kabusapi/board/{code}@{market}' req_symbol = urllib.request.Request(url_symbol, method='GET') req_symbol.add_header('X-API-KEY', token) try: with urllib.request.urlopen(req_symbol) as res_symbol: content_symbol = json.loads(res_symbol.read()) except urllib.error.HTTPError as e_symbol: print(e_symbol) return content_symbol
<使用例>
# <3647>ジースリーHDの板情報・約定情報を取得 data = get_priceinfo(1, 3647, token) print(data)
<実行結果>
{'OverSellQty': 141100.0, 'UnderBuyQty': 193300.0, 'TotalMarketValue': None, 'MarketOrderSellQty': 0.0, 'MarketOrderBuyQty': 0.0, 'BidTime': None, 'AskTime': None, 'Exchange': 1, 'ExchangeName': '東証ス', 'TradingVolume': None, 'TradingVolumeTime': None, 'VWAP': None, 'TradingValue': None, 'BidQty': None, 'BidPrice': None, 'BidSign': None, 'Sell1': {'Price': 259.0, 'Qty': 1300.0, 'Sign': '0101', 'Time': None}, 'Sell2': {'Price': 260.0, 'Qty': 5100.0}, 'Sell3': {'Price': 261.0, 'Qty': 3900.0}, 'Sell4': {'Price': 262.0, 'Qty': 5900.0}, 'Sell5': {'Price': 263.0, 'Qty': 2900.0}, 'Sell6': {'Price': 264.0, 'Qty': 4200.0}, 'Sell7': {'Price': 265.0, 'Qty': 10400.0}, 'Sell8': {'Price': 266.0, 'Qty': 900.0}, 'Sell9': {'Price': 267.0, 'Qty': 4100.0}, 'Sell10': {'Price': 268.0, 'Qty': 1100.0}, 'AskQty': None, 'AskPrice': None, 'AskSign': None, 'Buy1': {'Price': 258.0, 'Qty': 1200.0, 'Sign': '0101', 'Time': None}, 'Buy2': {'Price': 257.0, 'Qty': 1500.0}, 'Buy3': {'Price': 256.0, 'Qty': 3200.0}, 'Buy4': {'Price': 255.0, 'Qty': 8600.0}, 'Buy5': {'Price': 254.0, 'Qty': 7300.0}, 'Buy6': {'Price': 253.0, 'Qty': 2600.0}, 'Buy7': {'Price': 252.0, 'Qty': 6300.0}, 'Buy8': {'Price': 251.0, 'Qty': 3000.0}, 'Buy9': {'Price': 250.0, 'Qty': 7800.0}, 'Buy10': {'Price': 249.0, 'Qty': 3900.0}, 'Symbol': '3647', 'SymbolName': 'ジー・スリーホールディングス', 'CurrentPrice': 258.0, 'CurrentPriceTime': None, 'CurrentPriceChangeStatus': '0061', 'CurrentPriceStatus': 1, 'CalcPrice': 258.0, 'PreviousClose': 253.0, 'PreviousCloseTime': None, 'ChangePreviousClose': 5.0, 'ChangePreviousClosePer': 1.98, 'OpeningPrice': None, 'OpeningPriceTime': None, 'HighPrice': None, 'HighPriceTime': None, 'LowPrice': None, 'LowPriceTime': None, 'SecurityType': 1}
インデントがずれている場合はGITのコードを参照していただけると幸いです。
https://github.com/beginerSE/kabustationAPI_samplecode
次は注文の発注方法について紹介していきます
次回:【Python】KabuステーションAPIのサンプルコードと使い方③(現物取引・信用取引の注文発注)
オススメ参考書
コメント