はじめに
過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。
銘柄コード取得API(symbolnameFutureGet,symbolnameOptionGet)は、取得したコードと名称は変わらないため、キャッシュを保存して、後から参照する。
設計
現時点では、PUSH API受信ツールのみが銘柄コード取得APIを使用している。
テストするのに、WebSocket環境を用意する必要があり、モックサーバーでは開発できないので、銘柄コード取得部分を切り出した単体のツールToolSymbolNameを作成する。
キャッシュ管理クラス(SymbolNameLogic)はMapでキャッシュ管理するが、AutoCloseableを実装し、コンストラクタでファイルから読み込み、close()でファイルに保存する。
ファイルロックでの排他制御は行わない。
なお、キャッシュが変化していない場合は、保存しない。
キャッシュのキーは、複合キーを作成する。
- 先物:futureCode + "_" + derivMonth
- OP:derivMonth + "" + putOrCall + "" + strikePrice
永続化ファイルは、タブ区切りで、2カラム用意する。
2カラム目のデータは、code + "," + nameでカンマ区切りにする。
(3カラムにしてもよかった)
実装
呼び出し元は、SymbolNameApi.getFuture()を呼び出していたところを、SymbolNameLogic.getFuture()に置き換える。
getFuture()の冒頭で、引数の複合キーをgetFutureKey()で作成する。
OPも同じようにメソッドを作成する。
close()時に保存するかの判断のために、bFutureUpdate=falseで用意し、Map.put()したときにtrueにする。
実行結果
# type_yyyyMM code,name
NK225_202212 167120018,日経平均先物 22/12
NK225_202303 168030018,日経平均先物 23/03
NK225mini_202211 167110019,日経225mini 22/11
NK225mini_202212 167120019,日経225mini 22/12
NK225mini_202301 168010019,日経225mini 23/01
NK225mini_202302 168020019,日経225mini 23/02
# yyyyMM_PorC_price code,name
202211_C_24500 147114518,日経平均オプション 22/11 コール 24500
202211_C_24750 147114718,日経平均オプション 22/11 コール 24750
:
202211_P_24500 137114518,日経平均オプション 22/11 プット 24500
202211_P_24750 137114718,日経平均オプション 22/11 プット 24750
:
追記:銘柄コード取得APIラッパー
InfoApiからInfoApiWrapperに移行する。
SymbolNameApiのenumからStringが無くなるが、ログ出力とスリープがあるので、さらにSymbolNameApiTestを作る。
githubソース