ゼロからの週末プログラマー

週末にプログラミングを楽しみながら稼げるのか試してみます!

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

ACCESSのVBAでRSIを計算する

   

今週は引き続き株価分析プログラムを作っていました。

週末に日銀が追加金融緩和を発表して株価が急騰。

日経平均は9月末からの急落前の水準まで急速に値を戻しました。

絶好の購入機会を逃してしまった方が多いと思いますが、次の機会に向けて準備しましょう。

RSIとは

RSIとは相対力指数と言って、ある期間の値動きの幅を計算して、その中で上げ幅がどれくらいあるのかというのを計算したものです。

個人的にはあまり使ってませんが、使っている人は多いと思います。

期間については14日や25日がよく使われるようです。

売買タイミングについて

期間が14日の場合、指数が20~30%以下なら売られすぎ、70~80%以上なら買われすぎだと判断するそうです。

急落時や急騰時は効果が薄いとのこと。

RSIを計算するプログラム

前日の終値と当日の終値を比較して差を求めます。

上昇分と下落分を別々に合計しておいて、最後にRSIを計算しています。

Function GetRSI(STRT As Integer, TERM As Integer) As Currency
'RSIを求める
'STRT:当日から見た開始日(当日なら0、前日なら-1)
'TERM:対象期間(STRTから過去何営業日間かを指定,<=0,14日間なら-13を指定)

    Dim U As Currency
    Dim D As Currency
    Dim I As Integer

    If (STRT + TERM) < -255 Or STRT > 255 Or TERM >= 0 Then
        GetRSI = 0
        Exit Function
    End If
    
    U = 0: D = 0
    For I = STRT + TERM To STRT
        If KabukaInfo(I - 1, COwarine) > KabukaInfo(I, COwarine) Then D = D + KabukaInfo(I - 1, COwarine) - KabukaInfo(I, COwarine)
        If KabukaInfo(I - 1, COwarine) < KabukaInfo(I, COwarine) Then U = U + KabukaInfo(I, COwarine) - KabukaInfo(I - 1, COwarine)
    Next I
    
    GetRSI = U / (U + D) * 100

End Function

そんなに難しくないと思います。

実行結果を確認

いつも通り、トヨタ自動車のRSIを計算しています。

CALL SetKabukaInfo("7203",#2014/10/31#,-255)
? GetRSI(0,-24)
 48.8257 
? GetRSI(-10,-24)
 38.8009 

株価が急騰した昨日10月31日と、急落した10月17日の25日RSIです。

 - ACCESSデータベース, ブログ

↓ブログランキングに参加中!ご協力をお願いします!

にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村

プログラマー ブログランキングへ

Message

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