はじめに
過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。
前回42番目の記事で、マージデータに売買高を追加したので、テクニカル指標計算ツールと、マージデータのリアルタイム監視ツールに売買高を含んだファイルを対応する。
ベースとなるソース
v27.CalcIndicatorChartInfo_r3は、ほとんどv36.MergeChartInfo_r5と同じなので、統合する。
v27.CalcIndicatorIndicatorInfo_r3をベースに、v37.CalcIndicatorInfo_r9を作成する。
v33._r7をベースに、v37._r9を作成する。
v34._r8をベースに、v37._r9を作成する。
v34.MainWatchChartData_r2をベースに、v37.MainWatchChartData_r3を作成する。
ゴール
読み込むマージデータは、r4とr5でカラム数が異なるが、テクニカル指標を計算した結果は同じはずなので、全ファイルの比較を行う。
実装
既存のエンティティの修正
MergeChartInfo_r3とCalcIndicatorChartInfo_r3の2つあるが、微妙に異なっていた。
MergeChartInfo_r3(String date)とCalcIndicatorChartInfo_r3(String date)は同じ。
MergeChartInfo_r3(String[] cols)はflag=1、CalcIndicatorChartInfo_r3(String[] cols)はcols[i]の整数。
MergeChartInfo_r3(String date, int price)はflag=2、CalcIndicatorChartInfo_r3(String date, int price)はflag=3。
共通に使えるように、v36.MergeChartInfo_r5を修正する。
String[]の引数を受け取るものは、カラム数で分岐する。
public MergeChartInfo_r5(String[] cols) {
int i = 0;
this.tradeVolume = StringUtil.parseInt(cols[i++]);
if (cols.length == MAX_DB_COLS) { // MainMergeChartData向け
this.flag = 1;
} else { // MainCalcIndicator向け
this.flag = StringUtil.parseInt(cols[i++]);
}
}
新たにflagを渡すものを追加する。
public MergeChartInfo_r5(String date, int price, int volume, int flag) {
this.flag = flag;
}
新規作成クラス
ベースとなるクラスをコピーして、r9に変えていくと、コンパイルエラーとなるので、クラス名を修正していく。
特に売買高を参照した計算や出力は元々ないので、ファイルからクラスが初期化できれば、同じ処理が実行される。
テスト
v31.MainMergeChartData_r4を実行
v34.MainCalcIndicator_r8を実行
v34.MainWatchChartData_r2を実行、停止
C:\tmp\chartを退避
v36.MainMergeChartData_r5を実行
v37.MainCalcIndicator_r9を実行
v37.MainWatchChartData_r3を実行、停止
WinMergeで退避したフォルダと、C:\tmp\chartを比較
すべての*.outファイルが一致したので、問題ないとみなす。
追記:CalcIndicatorCommon_r9に共通化
マージツールのMergeChartDataCommon_r5クラスと同様に、共通メソッドをCalcIndicatorCommon_r9クラスにまとめる。
追記:ソースをarchiveブランチへ移動
最新版に移行し、もう使われることはないので、アーカイブする。
githubソース