Mercurial > mercurial > hgweb_ai.cgi
diff makedata.pl @ 0:43e580fa4719
first commit.
author | pyon@macmini |
---|---|
date | Mon, 04 Sep 2017 21:40:33 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/makedata.pl Mon Sep 04 21:40:33 2017 +0900 @@ -0,0 +1,58 @@ +# makedata.pl +# Last Change: 2017-09-04 Mon 21:38:58. +# +# ai.go への入力データを作る +# 入力ファイル: ./USDJPY.csv +# 出力ファイル: ./ai_input.dat +# 出力形式: +# 通番 年月日 始値 高値 安値 終値 3日平均 7日平均 30日平均 +# + +use v5.10; +use utf8; + +my ( @date, @start, @highest, @lowest, @end ); +open my $f, '<', 'USDJPY.csv'; +while ( <$f> ) { + next unless /^\d/; + chomp; + my ( $dt, $st, $hi, $lo, $en ) = split /,/; + + $dt =~ s#/#-#g; push @date, $dt; + $st = sprintf "%.02f", $st; push @start, $st; + $hi = sprintf "%.02f", $hi; push @highest, $hi; + $lo = sprintf "%.02f", $lo; push @lowest, $lo; + $en = sprintf "%.02f", $en; push @end, $en; +} +close $f; + +my ( @ma3, @ma7, @ma30 ); +my $i = 0; +for ( @end ) { + $ma3[$i] = ( $i < 2 ) ? $_ : ( $end[$i-2] + $end[$i-1] + $_ ) / 3; + $ma7[$i] = $_; + $ma30[$i] = $_; + if ( $i > 5 ) { + $ma7[$i] += $end[$i-$_] for ( 1..6 ); + $ma7[$i] /= 7; + } + if ( $i > 28 ) { + $ma30[$i] += $end[$i-$_] for ( 1..29 ); + $ma30[$i] /= 30; + } + $i++; +} + +open $f, '>', 'ai_input.dat'; +say {$f} '#通番 年月日 始値 高値 安値 終値 3日平均 7日平均 30日平均'; +$i = 0; +for my $dt ( @date ) { + my $ip = sprintf "%04d", $i+1; + my $ma3p = sprintf "%.02f", $ma3[$i]; + my $ma7p = sprintf "%.02f", $ma7[$i]; + my $ma30p = sprintf "%.02f", $ma30[$i]; + say {$f} join ' ' => $ip, $dt, $start[$i], $highest[$i], $lowest[$i], $end[$i], $ma3p, $ma7p, $ma30p; + $i++; +} +close $f +