FC2ブログ

# Ehlers Filter
# 引数 期間 値 ($Period, $Price)
# 戻り値 EhlersFilter (@efilter)
sub EFILTER{
my ($Period, $Price) = @_;
my @efilter = ();
my @Coef = (0) x $Period;
my @Smooth = (0) x $Period;
my $count = @$Price - ($Period + 4);

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

# 計算
for(my $i = $count; $i >= 0; $i--){
# 配列の要素を1つ後ろに動かす
for(my $j = $Period - 1; $j >= 1; $j--){
$Smooth[$j] = $Smooth[$j - 1];
$Coef[$j] = $Coef[$j - 1];
}

my $tmp = 0;
$Smooth[0] = ($$Price[$i] + (2 * $$Price[$i + 1]) + (2 * $$Price[$i + 2]) + $$Price[$i + 3]) / 6;
for(my $j = 1; $j < $Period; $j++){
$tmp += ($Smooth[0] - $Smooth[$j]) * ($Smooth[0] - $Smooth[$j]);
}
$Coef[0] = $tmp;

my $Num = 0;
my $SumCoef = 0;
for(my $j = 0; $j < $Period; $j++){
$Num += $Coef[$j] * $Smooth[$j];
$SumCoef += $Coef[$j];
}

# Ehlers Filter
if($SumCoef != 0){
$efilter[$i] = $Num / $SumCoef;
}
}

return @efilter;
}


参考URL
http://www.mesasoftware.com/technicalpapers.htm Ehlers Filter
配列を任意の一文字で初期化するには
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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