株式会社シスアナコム

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

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

VBAで過去に蓄積した株式の基本情報を検索する

      2015/04/19

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

VBAで過去に蓄積した株式の基本情報を検索する

少し前に、株式の基本情報を別の履歴用テーブルに保存する方法を例示しました。

この保存した過去の基本情報を検索するプログラムを作成しました。

履歴を検索して指定したフィールドの値を返す

年月日、銘柄コード、フィールド名を指定して基本情報の履歴テーブルを検索して値を返すプログラムです。

Function GetRireki(YYYYMMDD As Date, CD As String, FLD As String) As Variant
'T_株式_基本情報_履歴を検索して指定したフィールドの値を返す
'YYYYMMDD:年月日
'CD:銘柄コード
'FLD:フィールド名

    Dim DB As DAO.Database
    Dim RS As DAO.Recordset
    Dim YYYY As Integer
    Dim MM As Integer
    Dim T As Integer
    
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("T_株式_基本情報_履歴", dbOpenTable)
    
    YYYY = Year(YYYYMMDD)
    MM = Month(YYYYMMDD)
    If Day(YYYYMMDD) <= 15 Then T = 1 Else T = 2
    
    RS.Index = "PrimaryKey"
    RS.Seek "=", YYYY, MM, T, CD
    If RS.NoMatch Then
        GetRireki = 0
        Exit Function
    End If
    
    GetRireki = RS(FLD)

End Function

日は15日より前か後かで判断しています。

履歴テーブルを忘れずに保存する方法

履歴テーブルに正しく情報が保存されていれば、このプログラムで検索できます。

ただし、基本データを履歴テーブルへ保存する事は忘れがち。

履歴を毎日蓄積するとデータ量が多くなりすぎてしまうために、月2回保存を前提にしているからです。

忘れないためには、毎日実行するプログラムと一緒に実行して、保存すべき時にだけ保存するようにします。

例えばこんな感じ。

Sub DoDaily(YYYY As Integer, MM As Integer, T As Integer)
'T=15日まで終了後=1,月末まで終了後=2

    Call GetBasicInfoAll
    Call GetHogeInfoAll
    ...
    ...
    ...
    Call GetDailyInfoAll(YYYY, MM)
    Call ExportBasicInfo(YYYY, MM, T)
    
    MsgBox ("END")

End Sub

このプログラムを毎日定時(取引終了後の夜とか)に実行すれば、忘れずに履歴データが保存されます。

基本データの履歴を何に使うか

履歴データを検索するプログラムを何に使うかですが、もちろん前回行ったような過去データの傾向分析に使います。

ある時点である銘柄を買うか買わないかの判断の条件に加えるためです。

ちなみに、前回検証した優待銘柄の売買ですが、履歴データによる条件を加えると良い事があります。

具体的な詳細については各自調査してみて下さい。

優待投資で有名な夕凪さんは、優待投資にファンダメンタルズなんて関係ないような事を著書で書かれていますが、過去3年間の株価データを分析する限り、ファンダメンタル分析を加えた方が成績は良くなるはずです。

今回はここまで。

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

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


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

Message

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