見出し画像

14号 初期データ登録と分割併合対応について

バックテストから株価データ取得登録までのソースコードの公開を駆け足で進めてきました。振り返ってみると説明不足の点が多々あることは否めません。有料化するまでに対応しておこうと思います。

今後の方針としては、先にすべてのソースコードを公開してしまおうと考えています。signalsフォルダ下のソースコードも一部有料にする予定ですが、
これまでの投稿を見直して対応するまでは無料にしておきます。

今回は初期データ登録と株式分割併合時のDB登録について説明をします。

sbi_csv_import.py

これはHYPER SBI2で出力したCSVファイルをDBに登録する処理です。

実行構成
株価CSVフォルダ_最上部
株価CSVフォルダ_最下部

株価データの初期データ登録か株式分割併合対応時に実行します。
分割併合対応時にはDBから対象のテーブルを削除した後に実行します。

実行する前に以下の箇所の設定をしてください。

①4、6行目 用途によってcsv_listのimport元を変更します。
csv_import_list
私は東証上場の全株式銘柄の証券コードを記載しています。初期データ登録の時はこちらを使用しました。先日アップしたファイルには10月末時点のものを記載しています。

csv_import_selected_list
私はこのリストを汎用的に使用しています。
以下の3通りの場合に使用しています。
1.CSVのエクスポート失敗時に、失敗したものだけを再度実行する場合。
2.分割併合対応時に特定の証券コードの処理だけを実行する場合。
3.株価指数の処理を実行する場合。

※CSVファイルを作成することをエクスポート、CSVファイルの内容をDBに登録することをインポートとしています。

②31、32行目 START_DATEとEND_DATEで対象期間を設定します。

処理の内容について

処理の流れは以下のようになっています。
csv_listを基にループ処理を行います。
DBにテーブルを新規作成したのち、株価CSVフォルダからファイル名が一致するものを読み込み、日付毎に登録対象の項目の値を抜き出してvaluesリストに追加します。valuesリストに値を詰め終わったらvalues_listに追加します。その後values_listを基にDBにバルクインサートで登録します。
元々は1件ずつインサートしていましたが、処理速度が遅かったためバルクインサートに変更しました。

※18行目のEnumに対するコメントが間違っています。コピー元のソースのコメントのままになっています。

※PlaySoundFileのインスタンス生成をなぜか2回しています。過去に成功時の処理しか使っていないと書いた記憶があるのですが失敗時の方も使っていますね。忘れていました。

参考資料

HYPER SBI2で出力したCSVファイル

10月末の株価データ取得についてのメモ書き


csv_import_list.pyに記載するコードリストの作成方法
(10月末分作成時の具体例)

①東証のサイトから上場会社一覧(data_j.xls)をダウンロード。
②data_j.xlsをコピーしてdata_j_202310.xlsを作成。
③市場・商品区分で絞り込み、PRO Market、ETF、REITを削除
 ※私はETFやREITは対象外なので削除しています。
④Sheet1のB列のコードをSheet2のB列に貼り付け。
⑤Sheet2のA列からD列を選択してコピー。
⑥テキストエディタに張り付けて置換処理でタブを削除。


タブ削除後のファイル


この記事が気に入ったらサポートをしてみませんか?