FC2ブログ

# カウフマン適応移動平均
# 引数 期間 先行 遅行 値 ($Period, $FastLen, $SlowLen, $Price)
# 戻り値 カウフマン適応移動平均 (@kama)
sub KAMA{
my ($Period, $FastLen, $SlowLen, $Price) = @_;
my @kama = ();
my $count = @$Price - $Period;

# 期間,配列数,先行,遅行の確認
if(($Period <= 0) || ($count < 0) || ($FastLen <= 0) || ($SlowLen <= 0)){
return 0;
}

# 初回はSMAを使用
for(my $i = 0; $i < $Period; $i++){
$kama[$count] += $$Price[$count + $i];
}
$kama[$count] = $kama[$count] / $Period;

# 確認
if($FastLen > $SlowLen){
($FastLen, $SlowLen) = ($SlowLen, $FastLen);
}
$FastLen = 2 / ($FastLen + 1);
$SlowLen = 2 / ($SlowLen + 1);

# 計算
for(my $i = $count - 1; $i >= 0; $i--){
my $vo = abs($$Price[$i] - $$Price[$i + $Period]);
my $tmp = 0;
for(my $j = 0; $j < $Period; $j++){
$tmp += abs($$Price[$i + $j] - $$Price[$i + ($j + 1)]);
}
my $er = $vo / $tmp;

my $ssc = (($er * ($FastLen - $SlowLen)) + $SlowLen) * (($er * ($FastLen - $SlowLen)) + $SlowLen);
#カウフマン適応移動平均
$kama[$i] = ($ssc * $$Price[$i]) + ((1 - $ssc) * $kama[$i + 1]);
}

return @kama;
}
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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