auカブコム証券APIから取得した、リアルタイムtickデーターからローソク足を作成する方法を解説します。

 

Pythonのサンプルコードも掲載していますので、Pythonによる株価分析や自動売買をチャレンジされている方のお役に立てれば幸いです。

 

Python初心者向けに、細かい解説をいれた動画をYouTubeにアップしました。

「サンプルコードを見ても、何が何だか分からん!!」という方は、このページ後半に動画へのリンクを貼っていますのでご覧下さい。

 

このページのサンプルコードで、下のような5分足チャートを作成します。

 

 

auカブコム証券APIからPUSH配信されたリアルタイムデータを、エディターで表示させている画像がこちら。

エディター画面の下半分に雪崩のようにデーターが押し寄せる様子が、画像で伝わるでしょうか?

1秒間に複数件のデーターを受信しています。

 

そのデーターの内1件がこちら。

 

{‘OverSellQty’: 2915500.0, ‘UnderBuyQty’: 3582200.0, ‘TotalMarketValue’: 35444310256850.0, ‘MarketOrderSellQty’: 0.0, ‘MarketOrderBuyQty’: 0.0, ‘BidTime’: ‘2022-01-04T09:28:01+09:00’, ‘AskTime’: ‘2022-01-04T09:28:01+09:00’, ‘Exchange’: 1, ‘ExchangeName’: ‘東証1部’, ‘TradingVolume’: 10131500.0, ‘TradingVolumeTime’: ‘2022-01-04T09:28:01+09:00’, ‘VWAP’: 2165.2455, ‘TradingValue’: 21937184450.0, ‘BidQty’: 2800.0, ‘BidPrice’: 2172.5, ‘BidSign’: ‘0101’, ‘Sell1’: {‘Price’: 2172.5, ‘Qty’: 2800.0, ‘Sign’: ‘0101’, ‘Time’: ‘2022-01-04T09:28:01+09:00’}, ‘Sell2’: {‘Price’: 2173.0, ‘Qty’: 3700.0}, ‘Sell3’: {‘Price’: 2173.5, ‘Qty’: 6000.0}, ‘Sell4’: {‘Price’: 2174.0, ‘Qty’: 33400.0}, ‘Sell5’: {‘Price’: 2174.5, ‘Qty’: 20500.0}, ‘Sell6’: {‘Price’: 2175.0, ‘Qty’: 58100.0}, ‘Sell7’: {‘Price’: 2175.5, ‘Qty’: 7100.0}, ‘Sell8’: {‘Price’: 2176.0, ‘Qty’: 16000.0}, ‘Sell9’: {‘Price’: 2176.5, ‘Qty’: 6700.0}, ‘Sell10’: {‘Price’: 2177.0, ‘Qty’: 27300.0}, ‘AskQty’: 3100.0, ‘AskPrice’: 2171.5, ‘AskSign’: ‘0101’, ‘Buy1’: {‘Price’: 2171.5, ‘Qty’: 3100.0, ‘Sign’: ‘0101’, ‘Time’: ‘2022-01-04T09:28:01+09:00’}, ‘Buy2’: {‘Price’: 2171.0, ‘Qty’: 4000.0}, ‘Buy3’: {‘Price’: 2170.5, ‘Qty’: 4900.0}, ‘Buy4’: {‘Price’: 2170.0, ‘Qty’: 8100.0}, ‘Buy5’: {‘Price’: 2169.5, ‘Qty’: 5500.0}, ‘Buy6’: {‘Price’: 2169.0, ‘Qty’: 8900.0}, ‘Buy7’: {‘Price’: 2168.5, ‘Qty’: 17000.0}, ‘Buy8’: {‘Price’: 2168.0, ‘Qty’: 20200.0}, ‘Buy9’: {‘Price’: 2167.5, ‘Qty’: 15200.0}, ‘Buy10’: {‘Price’: 2167.0, ‘Qty’: 17600.0}, ‘Symbol’: ‘7203’, ‘SymbolName’: ‘トヨタ自動車’, ‘CurrentPrice’: 2172.5, ‘CurrentPriceTime’: ‘2022-01-04T09:28:01+09:00’, ‘CurrentPriceChangeStatus’: ‘0057’, ‘CurrentPriceStatus’: 1, ‘CalcPrice’: 2172.5, ‘PreviousClose’: 2105.5, ‘PreviousCloseTime’: ‘2021-12-30T00:00:00+09:00’, ‘ChangePreviousClose’: 67.0, ‘ChangePreviousClosePer’: 3.18, ‘OpeningPrice’: 2158.0, ‘OpeningPriceTime’: ‘2022-01-04T09:03:00+09:00’, ‘HighPrice’: 2184.0, ‘HighPriceTime’: ‘2022-01-04T09:13:08+09:00’, ‘LowPrice’: 2154.5, ‘LowPriceTime’: ‘2022-01-04T09:03:01+09:00’, ‘SecurityType’: 1}

 

手順を追って解説します。

 

■サンプルコードを動作させる条件■

・auカブコム証券の口座を開設し、API使用設定が完了していること

・kabuステーションを起動し、ログイン済みであること

・Pythonが使用できること(*^_^*)

 

株価ストリームデーターをデーターベースに保存

 

株価ストリームデーター取得

 

リアルタイムに配信される株価のストリームデーターを取得します。

auカブコム証券APIのサンプルコードを流用して、関数を作ります。

 

ストリームデーターを取得する関数がこちら。

 

 

PUSH配信されたデーターを保存するDB作成

 

PUSH配信されたデーターを保存するDBを作成します。

 

今回はSQLAalchmyを利用して、SQLiteに保存します。

 

 

スレッド(並列処理)として実行

 

スレッド(並列処理)として実行させます。

 

データー取得からDB保存まで全体のコード

 

データー取得からDB保存まで全体のコードがこちらです。

 

アプリを作成

 

ローソク足を表示させるために、簡単なアプリを作成しました。

ブラウザ上にアプリケーションを作成するライプラリー「Streamlit」をインポートします。

 

アプリで表示された様子がこちら。

 

「tickデーターから5分足チャートを描画します。」ボタンを押すと、その時点までtickデーターを集計してローソク足を描画します。

 

まとめ

 

auカブコム証券APIから、リアルタイムに配信される株価のストリームデーターからローソク足を作成する方法を解説しました。

 

説明不足で、わかりにくい部分が多いと思いましたので、詳細を解説した動画をアップしました。

このページ後半の動画リンクからご覧下さい。

 

コードを出来るだけシンプルにする為に、ボタンを押すたびに最新の1千件のデーターを取得してローソク足を描画しています。

 

tickデーターをデーターベースに保存する際に、分足に情報を整理してから保存すれば、ローソク足描画速度は改善されます。

皆さん色々試してみてください。

 

動画で解説

 

 

この記事を書いた人

あしおゆたか

株式投資歴22年のシステムトレーダー(←主な取引手法)

机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。

スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。

◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション

◇運営者情報はこちら