株式会社シスアナコム

情報システムに関することなら、どんなことでも適切に助言いたします!

この投稿は1年以上前に公開されました。
現在では状況や内容が変わっている可能性があります。
ご注意下さい。m(_ _)m

VBAで別テーブルに株価データの履歴を保存する

      2015/04/19

「ゼロからの週末プログラマー」に掲載していた記事を改訂して掲載しています。

VBAで別テーブルに株価データの履歴を保存する

これまで、ACCESSのVBAを使って株価データを取得して分析する事を行ってきました。

株価の日々データについては、銘柄毎、年月日毎に情報が蓄積されるので、過去の情報を参照して分析する事ができます。

しかし、基本データについては、その都度、最新の情報を取得して更新するので、過去の情報を参照する事ができません。

そこで、株価の基本データについて、必要なものだけを蓄積できるようにします。

履歴用テーブルの作成

新規に一つテーブルを作成します。

テーブル名は、「T_株式_基本情報_履歴」としました。
フィールドは以下の通り

  • 年:整数型
  • 月:バイト型
  • 回:バイト型
  • 銘柄コード:テキスト型4桁
  • 配当利回り:通貨型
  • PER:通貨型
  • PBR:通貨型
  • 決算評価:テキスト型2桁

主キーは年、月、回、銘柄コードの4つです。

履歴データに全ての情報を蓄積するとデータ量が増えてしまうので、履歴を残す事で意味がありそうな4つの情報のみに限定しました。

株価基本データ蓄積プログラム

このテーブルにデータを蓄積することにします。

Sub ExportBasicInfo(YYYY As Integer, MM As Integer, T As Integer)
'T_株式_基本情報をT_株式_基本情報_履歴に必要なデータ(1株配当、PER、PBR、決算評価)のみ出力する。

    Dim DB As DAO.Database
    Dim RS1 As DAO.Recordset
    Dim RS2 As DAO.Recordset
    
    Set DB = CurrentDb
    Set RS1 = DB.OpenRecordset("T_株式_基本情報", dbOpenSnapshot)
    Set RS2 = DB.OpenRecordset("T_株式_基本情報_履歴", dbOpenTable)
    
    RS2.Index = "PrimaryKey"
    RS2.Seek "=", YYYY, MM, T
    If Not RS2.NoMatch Then Exit Sub
    '既に実行済みなら処理を中止する。
    
    With RS1
    Do Until .EOF
        RS2.AddNew
        RS2![年] = YYYY
        RS2![月] = MM
        RS2![回] = T
        RS2![銘柄コード] = ![銘柄コード]
        RS2![配当利回り] = ![配当利回り]
        RS2![PER] = ![PER]
        RS2![PBR] = ![PBR]
        RS2![決算評価] = ![決算評価]
        RS2.Update
        .MoveNext
    Loop
    End With
End Sub

プログラムの実行タイミング

このプログラムは月に2回実行する事を前提にしています。

頻繁に株価の基本データを履歴として保存しても、あまり意味がないと思うからです。

半月に1回、15日以降に1回目、月末以降に2回目を実行することを予定しています。

過去のデータについて

過去のPERやPBRや1株配当を掲載しているサイトはあまり見た事がありません。

そのため、インターネット上でこれらの情報を取得する事は難しいと思います。

過去3年分ぐらいの情報を蓄積して持っていると分析に使えると思います。

どうしても過去3年分のデータが欲しいという場合は、個別に対応しますので連絡を下さい。

今回はここまで。

 - ACCESSデータベース, 週末プログラマー

↓ブログランキングに参加しています!


ネット・PC(全般) ブログランキングへ
にほんブログ村 IT技術ブログ ITコンサルティングへ
にほんブログ村

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です