FC2ブログ

# ボリンジャー・バンド Bollinger Band
# 引数 期間 定数 値 ($Period, $Alpha, \@Price)
# 戻り値 hash {'upper'} {'middle'} {'lower'} {'b'} {'bw'} (%bb)
sub BB{
my ($Period, $Alpha, $Price) = @_;
my %bb = ();
my $Mean = 0;
my $Stddev = 0;
my $Den = $Period * ($Period - 1);
my $count = @$Price - $Period;

# 期間,定数,配列数の確認
if(($Period <= 0) || ($Alpha <= 0) || ($count < 0)){
return 0;
}

# 計算
for(my $i = $count; $i >= 0; $i--){
# 平均
if($i == $count){
for(my $j = 0; $j < $Period; $j++){
$Mean += $$Price[$i + $j];
}
}else {
$Mean = ($Mean * $Period) + $$Price[$i] - $$Price[$i + $Period];
}
$Mean = $Mean / $Period;

# 分散
my $Variance = 0;
for(my $j = 0; $j < $Period; $j++){
$Variance += $$Price[$i + $j] * $$Price[$i + $j];
}

# 標準偏差
my $Sum = $Mean * $Period;
$Stddev = sqrt((($Period * $Variance) - ($Sum * $Sum)) / $Den);

my $Upper = $Mean + ($Stddev * $Alpha);
my $Lower = $Mean - ($Stddev * $Alpha);

# ボリンジャー・バンド Bollinger Band
$bb{'upper'}->[$i] = $Upper;
$bb{'middle'}->[$i] = $Mean;
$bb{'lower'}->[$i] = $Lower;
# ボリンジャー・バンド %b
$bb{'b'}->[$i] = ($$Price[$i] - $Lower) / ($Upper - $Lower);
# ボリンジャー・バンド Band Width
$bb{'bw'}->[$i] = ($Upper - $Lower) / $Mean;
}

return %bb;
}


参考URL
Bollinger Bands - Wikipedia, the free encyclopedia
ボリンジャー・バンド (Bollinger Band)
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS