はじめに
過去記事は「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ソース