4章 データ収集

ナビゲーションメニューから「株価と指数収集」をクリックします。表示される画面はカブシムの主要機能のひとつであるデータ収集機能を提供します。カブシムはマルチユーザで利用できると、先の章で説明しましたが、データ収集機能は利用者個別の機能ではなく、全利用者が共通に利用することを前提としています。このため管理者アカウントによる利用を原則としています。

クラウド版カブシムでは、この機能の理解のために、初期状態で個別株の収集ジョブを1つ定義済みとしています。

1. 画面の構成

表示される画面は以下のようなレイアウトとなっています。

collector layout

画面は3列の構成となっています。左側の表形式の各行にはデータ収集のためのジョブが配置されます。上記画面では例として証券コード1301の極洋の株価データを収集するジョブが表示されています。表の各項目の説明は以下の通りです。これらの項目は画面右上に配置された「設定」ボタンをクリックして表示されるダイアログで表示/非表示を設定することができます。

項目名 説明
id ジョブの識別用id。
所有者 利用者アカウント名。
ドメイン ドメイン名。データ収集機能のドメイン名は「Collector」です。
クラス ジョブの分類名1。
カテゴリ ジョブの分類名2。
タイトル ジョブの別名。
ジョブ名 ジョブの識別用名称。個別株価の収集機能では銘柄名が表示されます。
データid 収集するデータの識別名。個別株価の収集機能では証券コードに'.T'が付与されたものが表示されます。ただし、日経平均株価のような指数系のデータの場合は別の表記が必要となります(追記参照)。
実行状態 次のいづれかが表示されます。ready:ジョブ実行可能状態、running:ジョブ実行中、stop:ジョブ停止中
前回実行 前回のジョブ実行時刻。
メッセージ 前回のジョブ処理結果。メッセージが表示されない場合もあります。

画面中央の表形式の各行にはジョブが実行されたときの実行履歴が表示されます。表の各項目の説明は以下の通りです。これらの項目は画面右上に配置された「設定」ボタンをクリックして表示されるダイアログで表示/非表示を設定することができます。

項目名 説明
記録時刻 ジョブ実行終了時刻
ジョブ名 ジョブ一覧表の「ジョブ名」と同じものです。
データid ジョブ一覧表の「データid」と同じものです。
データ日付 収集した最新のデータの日付が表示されます。例えばジョブを8月4日(日曜日)に実行したとすると、最新のデータは株式市場の直近営業日が8月2日(金曜日)となりますので、この欄には8月2日が表示されます。
処理時間 ジョブの実行処理時間
メッセージ ジョブ処理結果

2. 個別株価データ収集ジョブを実行する

クラウド版カブシムでサンプルとして登録済の個別株データ収集ジョブは二種類の方法で実行することができます。

項目名 説明
時刻指定実行 起動方法として「時刻指定実行」が選択されている場合、実行ボタンのクリックによりジョブがスケジューラに登録されます。「起動オプション」をクリックして表示されるダイアログのなかの「タイミング項目」に設定された時刻と「間隔項目」で選択された間隔に従ってジョブが実行されます。間隔として選択できるのは次のものとなります。"日毎(7D)","日毎(月-金)","日毎(火-土)", "月曜毎", "火曜毎", "水曜毎", "木曜毎", "金曜毎","土曜毎", "日曜毎"
即時実行 起動方法として「即時実行」が選択されている場合、実行ボタンのクリックによりジョブがただちに実行されます。

collector exec by cron

【指定日時にジョブを定期実行する場合の操作の流れ】

step 1. 起動方法のセレクションボックスから「時刻指定実行」を選ぶ
step 2. 起動オプションボタンをクリックし、表示されるダイアログで、間隔を選び、タイミングに実行する時刻を指定する
step 3. データベースの更新ボタンをクリックする
step 4. 実行ボタンをクリックする

【即時にジョブを実行する場合の操作の流れ】

step 1. 起動方法のセレクションボックスから「即時実行」を選ぶ
step 2. データベースの更新ボタンをクリックする
step 3. 実行ボタンをクリックする


例えば即時実行の方法で実行ボタンをクリックし正常にジョブが投入されると、以下のように実行状態が 'running' に変化します。

collector job exec running

個別株価の収集は、後述する差分取得であれば数秒で終了します。Webブラウザではカブシムサーバーに対して1分程度の間隔でサーバへ最新処理状況を問い合わせますのでタイミングによってはしばらく待った後で以下のように画面が変化します。画面中央の処理結果履歴を見ると、過去の処理履歴が一覧されています。

collector job exec done

収集されたデータを確認したい場合は、画面右側のコレクター操作パネルの「データダンプ表示」をチェックしてください。下の画面のように表形式で収集されたデータの生の値と後処理されたいくつかのデータを30日分確認することができます。

collector data dump

3. コレクター設定の変更と新規作成

個別銘柄日次取得ジョブが選択された状態で、画面右側のナビゲーションパネルに配置された「コレクター設定」ボタンをクリックしてください。下の画面のダイアログが表示されます。この画面では個別銘柄株価収集ジョブのパラメータ変更、あるいは新規に個別銘柄株価収集ジョブを作成することことができます。


collector settings

以下に画面の各項目について一覧します。

項目名 説明
ジョブ名 ジョブのタイトルを設定します。通常は銘柄名を使いますが他の文字列を使ってもかまいません。
データ識別名 個別企業の場合は証券コードに".T"を付与した名称を入力します。銘柄「極洋」の場合は"1301.T"です。
メモ 備忘のためのメモ領域として使ってください。
最初の取得年 収集するデータの開始年次を入力してください。
最新の取得年 収集するデータの最終年次を入力してください。データダンプ表示は、この年次を参照して収集したデータを表示します。
収集と後処理方法 収集した株価データはサーバサイドで、移動平均、トレンド計算、過去高値・安値等の付加的な指標を後処理として記録することができます。データの収集と後処理の組み合わせ方は以下の表を参照ください。

項目名 説明
"全年度:データ取得" 最初の取得年から最新の取得年までの全株価データを収集する。既存のデータは全て置換される。
"全年度:データ取得+移動平均" 同上。移動平均データを作成し既存と置換する。
"全年度:データ取得+トレンド" 同上。トレンドデータを作成し既存と置換する。
"全年度:データ取得+高低" 同上。過去高値・安値データを作成し既存と置換する。
"全年度:データ取得+移動平均+トレンド+高低" 同上。移動平均データ、トレンドデータ、過去高値・安値データを作成し既存と置換する。
"最新差分:データ取得" 最新の取得年の株価データを収集し、既存の最新年データを置換する。
"最新差分:データ取得+移動平均" 同上。移動平均データを作成し既存最新年次データと置換する。
"最新差分:データ取得+トレンド" 同上。トレンドデータを作成し既存最新年次データと置換する。
"最新差分:データ取得+高低" 同上。過去高値・安値データを作成し既存最新年次データと置換する。
"最新差分:データ取得+移動平均+トレンド+高低" 同上。移動平均データ、トレンドデータ、過去高値・安値データを作成し既存最新年次データと置換する。
"全年度:移動平均データ作成" 最初の取得年から最新の取得年までの全移動平均データを作成し既存と置換する。
"全年度:トレンドデータ作成" 最初の取得年から最新の取得年までの全トレンドデータを作成し既存と置換する。
"全年度:高低データ作成" 最初の取得年から最新の取得年までの全過去高値・安値データを作成し既存と置換する。
"最新差分:移動平均+トレンド+高低" 移動平均データ、トレンドデータ、過去高値・安値データを作成し既存最新取得年データと置換する。

新規にデータ収集ジョブを作成する場合は、コレクター設定ダイアログの「New」ボタンをクリックしてください。以下の画面のダイアログが表示されます。

collector job new

銘柄の選択リストから新規作成したいコードを選択し、次に収集対象コードリストと記載された場所の⊕アイコンをクリックしてください。ジョブ名とデータ識別名が転記されます。ここでOKボタンをクリックして元の設定ウィンドウに戻ります。後は変更の場合と同様で、最終的に「SAVE」ボタンをクリックするとサーバサイドでジョブ作成を開始します。しばらく待つとジョブ一覧の表に作成したジョブが表示されます。

なお、新規作成された直後はまだ実行対象ジョブとして選択された状態になっていないので、 あらためて、ジョブ一覧から新規作成したジョブを選択してください。

4. 株価データ収集バッチジョブを実行する

株価データ収集バッチジョブを利用することで、東証上場個別企業全銘柄約3800件のデータを日々収集することができます。自動化処理のありがたさを実感できる機能と言えます。クラウド版カブシムでは管理者アカウントがこの機能を運用していますので、利用者は特に意識することなく最新株価データを利用することができます。

バッチジョブは、画面の左側の表のタイトル項目で、「複数銘柄一括取得」と表示されているジョブです。

collector job exec done

「複数銘柄一括取得」が選択された状態で、コレクター操作パネルの「コレクター設定」ボタンをクリックすると以下のダイアログが表示されます。

collector job batch settings

個別株価取得ジョブと異なるのは、スリープ設定の項目と、収集対象がコードリストになっていることです。

バッチ処理はアクセス先への高負荷を避けるために1件株価データを収集すると、スリープ設定の秒数間スリープ状態となります。この画面では30秒に一回アクセスしてデータを収集する指定となっています。

コードリストは、現在のバージョンでは変更不可となっています。

新規にバッチジョブを作成する場合は。「New」ボタンをクリックします。以下の定義用ダイアログが表示されます。

collector job batch settings

銘柄の選択リストから新規作成したいコードを複数選択し、次に収集対象コードリストと記載された場所の⊕アイコンをクリックしてください。コードリスト項目に選択したコードが転記されます。ジョブ名はわかりやすい名称を設定してください。データ識別名は任意ですが、版番号をつけておくと運用しやすいと思います。後は変更の場合と同様で、最終的に「SAVE」ボタンをクリックするとサーバサイドでジョブ作成を開始します。しばらく待つとジョブ一覧の表に作成したジョブが表示されます。

バッチ処理に関する注記

東証上場個別株は約3800件あります。これを全て毎日収集するためには全体処理時間の見積が必要です。

データ収集方法と後処理の選択を「"最新差分:データ取得+移動平均+トレンド+高低"」とします。この選択をした場合1,2コアの廉価なCPUを使ったとして、1銘柄で2~3秒必要になると思われます(クラウド版カブシムでの実測値)。すると、スリープを10秒に設定した場合、

全体処理時間 = 3800 * 10 / (60*60) = 10.6 時間!

マーケットが終了した当日17時からバッチが開始されるとすると、終了は朝3時半過ぎ、という試算になります。スリープ時間を半分の15秒にすれば全体処理時間も5時間程度になる見積ですが、アクセス先から許可されてない限り、人間の人手によるアクセスとかけ離れた頻度でのアクセスはしないようご留意ください。

追記 東証上場株価データ以外の指数の収集

データidとして以下に示す Yahoo finance US の表記を入力することで東証上場個別企業株価以外の指数の収集が可能です。ただし、銘柄探索等アプリケーション機能への連携は現バージョンでは提供していませんことをご承知おきください。

マーケット指標、為替には下表のように固有のシンボルが定義されています。詳細は以下サイトから検索することができます。

yahoo finance us/ ticker lookup

マーケット指標、為替 シンボル名
日経225 ^N225
S&P 500 ^GSPC
USD/JPY(米ドル円レート) JPY=X
USD/EUR(米ドルユーロレート) EURUSD=X

1 アカウント作成
2 ドメイン参加
3 プロファイル設定
4 データ収集UI
5 銘柄探索UI
6 取引シミュレーションUI


© 2022 OpsLabo,LLC.