Mercurial > mercurial > hgweb_ai.cgi
comparison makedata.pl @ 0:43e580fa4719
first commit.
| author | pyon@macmini |
|---|---|
| date | Mon, 04 Sep 2017 21:40:33 +0900 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:43e580fa4719 |
|---|---|
| 1 # makedata.pl | |
| 2 # Last Change: 2017-09-04 Mon 21:38:58. | |
| 3 # | |
| 4 # ai.go への入力データを作る | |
| 5 # 入力ファイル: ./USDJPY.csv | |
| 6 # 出力ファイル: ./ai_input.dat | |
| 7 # 出力形式: | |
| 8 # 通番 年月日 始値 高値 安値 終値 3日平均 7日平均 30日平均 | |
| 9 # | |
| 10 | |
| 11 use v5.10; | |
| 12 use utf8; | |
| 13 | |
| 14 my ( @date, @start, @highest, @lowest, @end ); | |
| 15 open my $f, '<', 'USDJPY.csv'; | |
| 16 while ( <$f> ) { | |
| 17 next unless /^\d/; | |
| 18 chomp; | |
| 19 my ( $dt, $st, $hi, $lo, $en ) = split /,/; | |
| 20 | |
| 21 $dt =~ s#/#-#g; push @date, $dt; | |
| 22 $st = sprintf "%.02f", $st; push @start, $st; | |
| 23 $hi = sprintf "%.02f", $hi; push @highest, $hi; | |
| 24 $lo = sprintf "%.02f", $lo; push @lowest, $lo; | |
| 25 $en = sprintf "%.02f", $en; push @end, $en; | |
| 26 } | |
| 27 close $f; | |
| 28 | |
| 29 my ( @ma3, @ma7, @ma30 ); | |
| 30 my $i = 0; | |
| 31 for ( @end ) { | |
| 32 $ma3[$i] = ( $i < 2 ) ? $_ : ( $end[$i-2] + $end[$i-1] + $_ ) / 3; | |
| 33 $ma7[$i] = $_; | |
| 34 $ma30[$i] = $_; | |
| 35 if ( $i > 5 ) { | |
| 36 $ma7[$i] += $end[$i-$_] for ( 1..6 ); | |
| 37 $ma7[$i] /= 7; | |
| 38 } | |
| 39 if ( $i > 28 ) { | |
| 40 $ma30[$i] += $end[$i-$_] for ( 1..29 ); | |
| 41 $ma30[$i] /= 30; | |
| 42 } | |
| 43 $i++; | |
| 44 } | |
| 45 | |
| 46 open $f, '>', 'ai_input.dat'; | |
| 47 say {$f} '#通番 年月日 始値 高値 安値 終値 3日平均 7日平均 30日平均'; | |
| 48 $i = 0; | |
| 49 for my $dt ( @date ) { | |
| 50 my $ip = sprintf "%04d", $i+1; | |
| 51 my $ma3p = sprintf "%.02f", $ma3[$i]; | |
| 52 my $ma7p = sprintf "%.02f", $ma7[$i]; | |
| 53 my $ma30p = sprintf "%.02f", $ma30[$i]; | |
| 54 say {$f} join ' ' => $ip, $dt, $start[$i], $highest[$i], $lowest[$i], $end[$i], $ma3p, $ma7p, $ma30p; | |
| 55 $i++; | |
| 56 } | |
| 57 close $f | |
| 58 |
