LoginSignup
0

posted at

updated at

【v27】ダウンロードした複数銘柄のチャートデータに対応する

はじめに

過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。

最初に気軽にサンプルPGMを作るつもりだったので、1銘柄の先物2022/06のみを扱う前提だったが、もうMajorSQまで1週間切っているので、そろそろ複数銘柄を管理できるようにディレクトリ構造を見直す。

修正前のディレクトリ構造

チャートと関係のないファイルは省く。

\tmp
│  ChartCalendar.db
│  ChartData.csv
│  ChartData.lock
│  ChartData1d.db
│  ChartData1d.txt
│  ChartData1d_r2.txt
│  ChartData1m.db
│  ChartData1m.txt
│  ChartData1m_r2.txt
│  ChartData30m.db
│  ChartData5m.db
│  ChartData5m.txt
│  ChartData5m_r2.txt
│
├─archive
└─chart
    │  167060019_1分足_220604-0617.csv
    │  167060019_30分足_220604-0617.csv
    │  167060019_5分足_220604-0617.csv
    │  167060019_60分足_220604-0617.csv
    │  167060019_日足_220604-0617.csv
    │
    ├─167060018_FL202206
    │      ChartData.csv
    │      ChartData.lock
    │
    └─167060019_F202206
            ChartData.csv
            ChartData.lock

問題点

  • v10.MainChartDataDailyやv10.MainChartDataHourlyが、\tmp\chart*.csvを読み込んで、\tmp*.dbを更新するが、1銘柄前提のためファイル名の167060019_*.csvの銘柄コードを認識しない(例えば2022/07のチャートデータをダウンロードすると、ごちゃまぜになる)
  • PUSH APIを受信して、v12.MainChartDataは\tmp\ChartData.csvへ保存、v20.MainChartData_r2は\tmp\chart{symbol}_{name}\ChartData.csvへ保存。後者は問題なし。
  • v14.MainMergeChartData、v22.MainMergeChartData_r2、v24.MainMergeChartData2、v24.MainMergeChartData2_r2、v25.MainMergeChartData3、v25.MainMergeChartData3_r2が、\tmp\ChartData.csvを読んで、\tmp\ChartData*.txtを保存する。
  • v15.MainCalcIndicator、v16.MainCalcIndicator2、v17.MainCalcIndicator3、v23.MainCalcIndicator4*、v25.MainCalcIndicator*、v26.MainCalcGradientが\tmp\ChartData*.txtを読んで、stdoutに出力する。

修正後のディレクトリ構造

  • \tmp\chartにディレクトリが増えてきたので、4本値を保存する先を\tmp\downloadにする(ダウンロードではないかもしれないが、クラウドから落ちてきているデータを名前を付けて保存するので)。
  • \tmp\chart\167060018_FL202206などは、中身を1日でクリアしたいため、蓄積させるdbファイル用に\tmp\dbを追加する。
  • v10のツールをファイル名から銘柄コードを抽出し、\tmp\db{symbol}ディレクトリに保存する。
  • ChartCalendar.dbは共通のため、\tmp\dbに置く。
  • dbファイルの更新が成功したら、\tmp\downloadのファイルを\tmp\download\archiveへ移動する。
  • csv2txtのツールは、\tmp\db{symbol}から読んで、\tmp\chart{symbol}_{name}へ保存する。
  • txt2stdoutのツールは、フルパスを変えるだけなので、保留する。
  • 終値のみのツールは対応しない。4本値のツールのみ対応する。
  • dbはダウンロードできる11種類(1分=1m、3分、5分、10分、15分、20分、30分、60分、1日=1d、1週=1w、1月=1month)に対応するが、マージするのは1分足のみ対応する。
\tmp
│
├─archive
├─chart
│  ├─167060018_FL202206
│  │      ChartData.csv
│  │      ChartData.lock
│  │      ChartData1m.txt
│  │
│  └─167060019_F202206
│          ChartData.csv
│          ChartData.lock
│          ChartData1m.txt
│
├─db
│  │  ChartCalendar.db
│  │
│  ├─167060018_FL202206
│  │      ChartData1d.db
│  │      ChartData1m.db
│  │      ChartData30m.db
│  │      ChartData5m.db
│  │
│  └─167060019_F202206
│          ChartData1d.db
│          ChartData1m.db
│          ChartData30m.db
│          ChartData5m.db
│
└─download
    │  167060019_1分足_220604-0617.csv
    │  167060019_30分足_220604-0617.csv
    │  167060019_5分足_220604-0617.csv
    │  167060019_60分足_220604-0617.csv
    │  167060019_日足_220604-0617.csv
    │
    └─archive

追記:カレンダー更新(MainChartCalendar_r3)

ソースをr3にする。
保存先を変更するだけだが、週足、月足のファイルを読むと、連続した営業日とならないため、除外する。

追記:分足更新(MainChartDataHourly_r3)

ソースをr3にする。
初めにチャートデータのファイル名のリストを取得し、銘柄コードのリストを作成する。
各銘柄コードに対して、8種類の分足を更新する。
処理対象のファイルをarchiveへ移動する。

追記:ディレクトリ名変更(chart→download)

MainChartCalendar_r3、MainChartDataHourly_r3のディレクトリ名の修正漏れ。

追記:日足更新(MainChartDataDaily_r3)

ソースをr3にする。
初めにチャートデータのファイル名のリストを取得し、銘柄コードのリストを作成する。
各銘柄コードに対して、日足を更新する。
処理対象のファイルをarchiveへ移動する。

追記:日足は終値を基準日にする。

日足の日付を前営業日に修正していたが、計算期間が前営業日の夜間の16:30~当日の昼間の15:15のため、日付を修正しない。

追記:1分足の4本値とチャートデータをマージ(MainMergeChartData_r3)

ソースをr3にする。
初めにディレクトリ名のリストを取得し、銘柄コードのリストを作成する。
各銘柄コードに対して、1分足をマージする。

追記:1分足のテクニカル指標(SMA6,SMA12,SMA24)を計算する(MainCalcIndicator1_r3)

ソースをr3にする。
初めにディレクトリ名のリストを取得し、銘柄コードのリストを作成する。
各銘柄コードに対して、1分足テクニカル指標(SMA6,SMA12,SMA24)を計算する。
stdoutに出力すると、複数銘柄で競合するため、CalcIndicator1.outに保存する。

追記:1分足のテクニカル指標(ボリンジャーバンド)を計算する(MainCalcIndicator2_r3)

ソースをr3にする。
SMAと同様に各銘柄コードに対して、1分足テクニカル指標(ボリンジャーバンド)を計算し、CalcIndicator2.outに保存する。

追記:テクニカル指標を計算するインターフェイス(CalcIndicator_r3)

共通部分をMainCalcIndicator_r3として、テクニカル指標を計算するインターフェイスを実装したMainCalcIndicator1_r3, MainCalcIndicator2_r3をループして実行する。

追記:1分足のテクニカル指標(MACD(5,20,9)、HV20)を計算する(MainCalcIndicator3_r3,MainCalcIndicator4_r3)

CalcIndicator_r3に合わせたMainCalcIndicator3_r3,MainCalcIndicator4_r3を作成する。

追記:v27.MainCalcIndicator_r3.ChartInfoをv27.CalcIndicatorChartInfo_r3に変更

v28以降でもChartInfoを共通に使用したいため、クラスを独立させる。

追記:v27.MainCalcIndicator_r3.IndicatorInfoをv27.CalcIndicatorIndicatorInfo_r3に変更

v28以降でもChartInfoを共通に使用したいため、クラスを独立させる。

追記:ソースをarchiveブランチへ移動

最新版に移行し、もう使われることはないので、アーカイブする。

githubソース

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0