FC2ブログ

# ストキャスティクス Stochastics
# 引数 K期間 D期間 SD期間 高値 安値 終値 ($KPeriod, $DPeriod, $SDPeriod, \@High, \@Low, \@Close)
# 戻り値 hash {'k'} {'d'} {'sd'} (%st)
sub ST{
my ($KPeriod, $DPeriod, $SDPeriod, $High, $Low, $Close) = @_;
my %st = ();
my $count = @$Close - $KPeriod;
my $counts = $count - ($DPeriod - 1);
my $countsd = $count - ($DPeriod + $SDPeriod - 2);

# 期間と配列数の確認
if(($KPeriod <= 0) || ($DPeriod <= 0) || ($SDPeriod <= 0) || ($count < 0) || (@$Close != @$High) || (@$Close != @$Low)){
return 0;
}

# 計算
for(my $i = $count; $i >= 0; $i--){
my $highest = $$High[$i];
my $lowest = $$Low[$i];
for(my $j = 1; $j < $KPeriod; $j++){
$highest = $$High[$i + $j] if($highest < $$High[$i + $j]);
$lowest = $$Low[$i + $j] if($lowest > $$Low[$i + $j]);
}

# Fast Stochastic
$st{'k'}->[$i] = (($$Close[$i] - $lowest) / ($highest - $lowest)) * 100;

# Slow Stochastic
if($i <= $counts){
my $avg = 0;
for(my $j = 0; $j < $DPeriod; $j++){
$avg += $st{'k'}->[$i + $j];
}
$avg = $avg / $DPeriod;

$st{'d'}->[$i] = $avg;
}

# Stochastic SD
if($i <= $countsd){
my $avg = 0;
for(my $j = 0; $j < $SDPeriod; $j++){
$avg += $st{'d'}->[$i + $j];
}
$avg = $avg / $SDPeriod;

$st{'sd'}->[$i] = $avg;
}
}

return %st;
}


参考URL
ストキャスティクス (Stochastics) 考案者:ジョージ・レーン(George Lane) 1950年代
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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