FC2ブログ

# 篠原レシオ 強弱レシオ Shinohara Ratio
# 引数 期間 始値 高値 安値 終値 ($Period, \@Open, \@High, \@Low, \@Close)
# 戻り値 hash {'ARatio'} {'BRatio'} {'CRatio'} (%ShinoharaRatio)
sub SHINOHARARATIO{
my ($Period, $Open, $High, $Low, $Close) = @_;
my %ShinoharaRatio = ();
my $count = @$Close - ($Period + 1);

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

# 計算
for(my $i = $count; $i >= 0; $i--){
my $NumA = 0;
my $NumB = 0;
my $NumC = 0;
my $DenA = 0;
my $DenB = 0;
my $DenC = 0;

for(my $j = 0; $j < $Period; $j++){
# Aレシオ
# 当日の高値 - 当日の始値
$NumA += ($$High[$i + $j] - $$Open[$i + $j]);
# 当日の始値 - 当日の安値
$DenA += ($$Open[$i + $j] - $$Low[$i + $j]);

# Bレシオ
# 当日の高値 - 前日の終値
$NumB += ($$High[$i + $j] - $$Close[$i + ($j + 1)]);
# 前日の終値 - 当日の安値
$DenB += ($$Close[$i + ($j + 1)] - $$Low[$i + $j]);

# Cレシオ
# 当日の高値 - 前日の中値
$NumC += ($$High[$i + $j] - (($$High[$i + ($j + 1)] + $$Low[$i + ($j + 1)]) / 2));
# 前日の中値 - 当日の安値
$DenC += ((($$High[$i + ($j + 1)] + $$Low[$i + ($j + 1)]) / 2) - $$Low[$i + $j]);
}

# 篠原レシオ 強弱レシオ Shinohara Ratio
$ShinoharaRatio{'ARatio'}->[$i] = ($NumA / $DenA) * 100;
$ShinoharaRatio{'BRatio'}->[$i] = ($NumB / $DenB) * 100;
$ShinoharaRatio{'CRatio'}->[$i] = ($NumC / $DenC) * 100;
}

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

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

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

検索フォーム


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