FC2ブログ

use warnings;
use strict;

use URI;
use Web::Scraper;
use GD::Graph::bars;

# URLの作成
my $yahoo = "http://table.yahoo.co.jp/bt?s=";
my $code = "7203.t";

# Scraperの設定
my $scraper = scraper {
process '//table//tr[@bgcolor="#ffffff"]//small', 'records[]' => 'TEXT';
};
my $uri = new URI($yahoo.$code) || die "$!";
my $res = $scraper->scrape($uri) || die "$!";

my $i = 0;
my $j = 0;
my @day = ();
my @sell = ();
my @buy = ();
my $max = 0;
my $min = 0;
my $tmp = 0;
my $count = @{$res->{records}};

# 信用残の取得
while($i < $count){
# 日付
#$day[$j] = $res->{records}[$i + 1];
$day[$j] = $j;
# 売残増減
$sell[$j] = $res->{records}[$i + 3];
# 買残増減
$buy[$j] = $res->{records}[$i + 4];

# 「 , 」の置き換え
$sell[$j] =~ s/,//g;
$buy[$j] =~ s/,//g;
# 「 + 」の置き換え
$sell[$j] =~ s/\+//g;
$buy[$j] =~ s/\+//g;

# 上限値
if($sell[$j] > $buy[$j]){
$tmp = $sell[$j];
}else {
$tmp = $buy[$j];
}
if($max < $tmp){
$max = $tmp;
}

# 下限値
if($sell[$j] < $buy[$j]){
$tmp = $sell[$j];
}else {
$tmp = $buy[$j];
}
if($min > $tmp){
$min = $tmp;
}

$i = $i + 6;
$j++;
}

# GD::Graphの設定
my @data = (\@day, \@sell, \@buy);
my $graph = GD::Graph::bars->new(600, 300);
my $dir = ">img\\margintrading\\";
$graph->set(
t_margin => 10, # top margin
b_margin => 10, # bottom margin
y_max_value => $max, # 上限値
y_min_value => $min # 下限値
);

# グラフの作成
my $image = $graph->plot(\@data) or die("Cannot create image");
open(OUT, $dir.$code.".png") or die("Cannot display image: $!");
binmode OUT;
print OUT $image->png();
close OUT;


参考URL
Perl でグラフを作ろう (GD::Graph)

一言
下に日付を表示したかったが、文字化けして表示できなかったので数字を表示させている。
後で表示でさせる方法を探しておくこと
サンプル画像

オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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