FC2ブログ

# 一目均衡表
# 引数 基準 転換 スパン 高値 安値 終値 ($KijunPeriod, $TenkanPeriod, $SpanPeriod, \@High, \@Low, \@Close)
# 戻り値 hash {'kijun'} {'tenkan'} {'span1'} {'span2'} {'chikou'} (%ichimoku)
sub ICHIMOKU{
my ($KijunPeriod, $TenkanPeriod, $SpanPeriod, $High, $Low, $Close) = @_;
my %ichimoku = ();
my $Shift = 26;
my $max = ($KijunPeriod > $TenkanPeriod ? $KijunPeriod : $TenkanPeriod);
$max = $SpanPeriod if($max < $SpanPeriod);
my $count = @$Close - $max;

# 期間,定数,配列数の確認
if(($KijunPeriod <= 0) || ($TenkanPeriod <= 0) || ($SpanPeriod <= 0) || ($count < 0) || (@$Close != @$High) || (@$Close != @$Low)){
return 0;
}

# 計算
my @KijunHigh = &HIGHEST($KijunPeriod, $High);
my @KijunLow = &LOWEST($KijunPeriod, $Low);
my @TenkanHigh = &HIGHEST($TenkanPeriod, $High);
my @TenkanLow = &LOWEST($TenkanPeriod, $Low);
my @Span2High = &HIGHEST($SpanPeriod, $High);
my @Span2Low = &LOWEST($SpanPeriod, $Low);
for(my $i = $count; $i >= 0; $i--){
my $Kijun = ($KijunHigh[$i] + $KijunLow[$i]) / 2;
my $Tenkan = ($TenkanHigh[$i] + $TenkanLow[$i]) / 2;
my $Span1 = ($Kijun + $Tenkan) / 2;
my $Span2 = ($Span2High[$i] + $Span2Low[$i]) / 2;

# 一目均衡表
$ichimoku{'kijun'}->[$i] = $Kijun;
$ichimoku{'tenkan'}->[$i] = $Tenkan;
if($i >= $Shift){
$ichimoku{'span1'}->[$i - $Shift] = $Span1;
$ichimoku{'span2'}->[$i - $Shift] = $Span2;
}
$ichimoku{'chikou'}->[$i + $Shift] = $$Close[$i];
}

return %ichimoku;
}


参考URL
一目均衡表 考案者:細田悟一 (ペンネーム:一目山人) 1935年
perlでテクニカル分析 29 最高値 (Highest: HIGHEST)
perlでテクニカル分析 30 最安値 (Lowest: LOWEST)
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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