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

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

issueを作ってる

数分後に下記のようなissueを投稿する。

背景

後述の例の通り、始まりと終わりの年月日を引数として要求するメソッドが複数存在する。それらについて、あるものは datetime をとり、別のものは str をとる。

なお、 str の場合、yyyymmdd の形式で8桁の数値を str で要求する。

提案

提案の内容

下記の通り、年月日を要求するメソッドについて、その型を yyyymmdd 形式の str に統一する事を提案する。

一例として、下記の通り修正のイメージを示す。

https://github.com/J-Quants/jquants-api-client-python/blob/7be06db4cdbc945abfcf375399a9f5752c920471/jquantsapi/client.py#L281-L285

 def get_price_range( 
     self, 
-     start_dt: datetime = datetime(2017, 1, 1, tzinfo=tz.gettz("Asia/Tokyo")), 
-     end_dt: datetime = datetime.now(tz.gettz("Asia/Tokyo")), 
+     from_yyyymmdd: str = '20170101',
+     to_yyyymmdd_dt: str  = None,
 ) -> pd.DataFrame: 

提案の理由

datatime ではなく str を選択した理由は、 datatime で受け取っている理由が、 pd.date_range()に渡すためである。 pd.date_range() は8桁の数値で str を渡しても、 datetime と同じように解釈してくれる。このため、引数として受け取った str をそのまま渡してやれば良いと考えられる。

pd.date_range('20220101', '20220214')
# => 
DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04',
               '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08',
               '2022-01-09', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14', '2022-01-15', '2022-01-16',
               '2022-01-17', '2022-01-18', '2022-01-19', '2022-01-20',
               '2022-01-21', '2022-01-22', '2022-01-23', '2022-01-24',
               '2022-01-25', '2022-01-26', '2022-01-27', '2022-01-28',
               '2022-01-29', '2022-01-30', '2022-01-31', '2022-02-01',
               '2022-02-02', '2022-02-03', '2022-02-04', '2022-02-05',
               '2022-02-06', '2022-02-07', '2022-02-08', '2022-02-09',
               '2022-02-10', '2022-02-11', '2022-02-12', '2022-02-13',
               '2022-02-14'],
              dtype='datetime64[ns]', freq='D')

Google colaboratoryでの実行結果:

image

str の箇所

https://github.com/J-Quants/jquants-api-client-python/blob/7be06db4cdbc945abfcf375399a9f5752c920471/jquantsapi/client.py#L229-L231 https://github.com/J-Quants/jquants-api-client-python/blob/7be06db4cdbc945abfcf375399a9f5752c920471/jquantsapi/client.py#L309

datetime の箇所

https://github.com/J-Quants/jquants-api-client-python/blob/7be06db4cdbc945abfcf375399a9f5752c920471/jquantsapi/client.py#L283-L284

https://github.com/J-Quants/jquants-api-client-python/blob/7be06db4cdbc945abfcf375399a9f5752c920471/jquantsapi/client.py#L422-L423

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