FC2ブログ

# 最高値
# 引数 期間 値 ($Period, $Price)
# 戻り値 最高値 (@highest)
sub HIGHEST{
my ($Period, $Price) = @_;
my @highest = ();
my $count = @$Price - $Period;

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

# 計算
for(my $i = $count; $i >= 0; $i--){
my $tmp = $$Price[$i];

for(my $j = 1; $j < $Period; $j++){
if($tmp < $$Price[$i + $j]){
$tmp = $$Price[$i + $j];
}
}

# 最高値
$highest[$i] = $tmp;
}

return @highest;
}


# 最高値
# 引数 期間 値 ($Period, $Price)
# 戻り値 最高値 (@highest)
sub HIGHEST{
my ($Period, $Price) = @_;
my @highest = ();
my $count = @$Price - $Period;

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

# 計算
# [0] 値 [1] 位置の確認
my @ph = ($$Price[$count], $Period);
for(my $i = $count; $i >= 0; $i--){
# TRUE 期間内 FALSE 期間外
if($ph[1] < $Period){
# TRUE 最高値更新 FALSE 未更新
if($ph[0] <= $$Price[$i]){
$ph[0] = $$Price[$i];
$ph[1] = 1;
}else {
$ph[1] = $ph[1] + 1;
}
}else {
@ph = ($$Price[$i], 1);
for(my $j = 1; $j < $Period; $j++){
if($ph[0] < $$Price[$i + $j]){
$ph[0] = $$Price[$i + $j];
$ph[1] = $j + 1;
}
}
}

# 最高値
$highest[$i] = $ph[0];
}

return @highest;
}


追記 3/4
少しだけ早くなった
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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