株式会社シスアナコム

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

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

VBAでボリンジャーバンドを計算する

      2015/04/19

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

VBAでボリンジャーバンドを計算する

日銀による金融緩和の影響が今週も続き、株価は異常な高水準にあります。

どれぐらい異常なのかを把握するために、今回のプログラムが必要になるはずです。

ボリンジャーバンドとは

株価の移動平均と標準偏差により計算される値です。

株価の売られすぎ、買われすぎを判断する材料として利用されます。

移動平均は25日が利用される事が多いようです。

統計学上、標準偏差±2σの範囲に収まる確率は95.45%とのこと。

この範囲を逸脱した場合、普通ではあり得ない事が起きていると判断できます。

また、ボリンジャーバンドの幅を見る事もあるようです。

株価の変動が少なくなるとボリンジャーバンドの幅が縮小していきます。

その状態がしばらく続いた後、ボリンジャーバンドの幅が拡大する局面で株価の方向が変化する事が多いようです。

売買タイミングについて

通常時は、株価が+2σを超えたら売り、-2σを下回ったら買い。

ボリンジャーバンドが急拡大する局面では、その逆。

ボリンジャーバンドを計算するプログラム

標準偏差を計算します。

過去の株価と移動平均との差の二乗を計算して、その平均値の平方根を計算します。

Function GetBollingerBand(STRT As Integer, TERM As Integer, SIGMA As Integer) As Currency
'ボリンジャーバンドを求める
'STRT:当日から見た開始日(当日なら0、前日なら-1)
'TERM:対象期間(STRTから過去何営業日間かを指定,<=0,25日なら-24を指定)
'SIGMA:σ(1σなら1,-1σなら-1を指定)

    Dim C As Currency
    Dim MA As Currency
    Dim MAKei As Currency
    Dim I As Integer
    
    If (STRT + TERM) < -255 Or STRT > 255 Or TERM >= 0 Then
        GetBollingerBand = 0
        Exit Function
    End If
    
    C = 0
    MA = GetMA(STRT, TERM)
    
    For I = STRT + TERM To STRT
        C = C + (KabukaInfo(I, COwarine) - MA) ^ 2
    Next I
    C = C / Abs(TERM - 1)
    
    GetBollingerBand = Math.Sqr(C) * SIGMA + MA

End Function

実行結果を確認

いつも通り、トヨタ自動車のボリンジャーバンドを計算しています。

CALL SetKabukaInfo("7203",#2014/11/07#,-255)
? GetBollingerBand(0,-24,2)
 6843.6622 
? GetBollingerBand(0,-24,3)
 7137.1533 
? GetBollingerBand(-14,-24,-2)
 5879.9607 
? GetBollingerBand(-14,-24,-3)
 5675.6011 

11月7日の+2σと+3σ、株価が急落した10月17日の-2σと-3σの値です。

さすがに株価が3σをオーバーする事はかなり少ないという事でしょうか。

今回はここまで。

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

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


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

Message

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