株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

J-Quants APIのPython用クライアントを使ってみた

以前からAPIは提供されていたが、Pythonで実装されたAPIクライアントが提供されたので使ってみた。

github.com

特定期間の全銘柄情報

例えば、「昨日の四本値を分割併合の調整込みで知りたい」といったときに使える。ただし、結構時間がかかるのでその点注意が必要である。

下記のコードも、APIから取得してDataFrameを扱えるようになるまで、30秒程かかった。

!pip install git+https://github.com/J-Quants/jquants-api-client-python.git

my_refresh_token: str = '***'
from datetime import datetime
from dateutil import tz
import jquantsapi


cli = jquantsapi.Client(refresh_token=my_refresh_token)
df = cli.get_price_range(
    start_dt=datetime(2022, 7, 25, tzinfo=tz.gettz("Asia/Tokyo")),
    end_dt=datetime(2022, 7, 26, tzinfo=tz.gettz("Asia/Tokyo")),
)
print(df)

特定期間の全銘柄情報
特定期間の全銘柄情報

サイバーエージェントの分割前後の値を見てみる

特定の銘柄の特定期間を取得するメソッドも用意がある。こちらは数秒でDataFrameを扱えるようになった。

df2 = cli.get_prices_daily_quotes(
    code='4751',
    from_yyyymmdd='20210325',
    to_yyyymmdd='20210405',
)

2021-03-30だけ、AdjustmentFactorが0.25になっている
2021-03-30だけ、AdjustmentFactor0.25になっている

2021年4月1日、サイバーエージェントは1株を4株に分割した。受渡日が1営業日短くなったのは2019年7月16日からなので、2021年4月1日に受け渡すためにはその2営業日前である2021年3月30日に株を持っている必要がある。上図からもそれが読み取れる。

使ってみての感想

非常に便利である一方、下記のような独特の癖があるので、利用には注意が必要である。

  • リフレッシュトークンの更新は手動
  • メソッドによっては、DataFrameが返却されるまでかなり待つ
  • メソッドによって、範囲指定する際の引数の型が 'yyyymmdd': strdatetime とが混在している

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.