use strict; use warnings; use Time::Local 'timelocal'; open(IN,"hogehoge.csv"); open(OUT,"> hogehoge.txt"); print OUT "//\@version=3\n"; print OUT "study('hisplot1',overlay=true,scale=scale.none)\n"; #data0約定日時 data1取引区分 data4銘柄名 data11売買区分 data16約定数量 data17約定単価 data21建単価 data43決済金額 my $count = 0;#data number my $entry = 0;#entry or exit my $long = 0;#long or short my $d17 = 0; my $d21 = 0; my $pp = 0;#profit or loss my $pp_total = 0;#total profit while(my $line = ){ chomp($line); my @data = split(/,/,$line); if($data[4] =~ /EUR\/USD/){ if($data[0] =~ /(\d+)\/(\d+)\/(\d+)\s(\d+):(\d+):(\d+)/){ my $sec_from_epoch = timelocal(0,$5-$5%5,$4,$3,$2-1,$1-1900); print OUT "data$count = if time == $sec_from_epoch"."000\n"; } if($data[17] =~ /(\d+\.\d+)/){ print OUT " $1\n"; } if(index($data[1],"新規") >=0){ $entry = 1; }else{ $entry = 0; } if(index($data[11],"買") >=0){ $long = 1; }else{ $long = 0; } if($entry == 1){ if($long == 1){ print OUT "plotchar(data$count,char='L',location=location.absolute,color=black,transp=0)\n"; }else{ print OUT "plotchar(data$count,char='S',location=location.absolute,color=black,transp=0)\n"; } }else{ if($data[17] =~ /(\d+\.\d+)/){ $d17 = $1; } if($data[21] =~ /(\d+\.\d+)/){ $d21 = $1; } if($long == 1){ $pp = sprintf('%.1f',10000*($d21 - $d17)); print OUT "plotshape(data$count,style=shape.cross,location=location.absolute,color=black,transp=0,text='$pp')\n"; }else{ $pp = sprintf('%.1f',10000*($d17 - $d21)); print OUT "plotshape(data$count,style=shape.xcross,location=location.absolute,color=black,transp=0,text='$pp')\n"; } $pp_total = $pp_total + $pp; } $count++; } } print "$pp_total\n"; close(IN); close(OUT);