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
+