App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Barchart.pm view on Meta::CPAN
open => $open,
high => $high,
low => $low,
close => $close,
volume => $volume,
};
}
return $h;
}
#-----------------------------------------------------------------------------
# intraday
#
# This uses the charting pages like
#
# http://www.barchart.com/charts/futures/CLZ10
#
# which for a 2-day intraday is
#
# http://www.barchart.com/chart.php?sym=CLZ10&style=technical&p=I&d=O&im=&sd=&ed=&size=M&log=0&t=BAR&v=2&g=1&evnt=1&late=1&o1=&o2=&o3=&x=41&y=11&indicators=&addindicator=&submitted=1&fpage=&txtDate=#jump
#
# must be fetched (about 50kbytes unfortunately), and it has a gif url.
# That url is some generated 4-digit number, apparently different each
# time, even outside trading hours. The server doesn't give an etag or
# last-modified to avoid re-downloading.
#
# The form fields are
#
# sym=
# date=
# size=A 504 by 288
# E 576 by 360
# B 612 by 360
# C 720 by 432
# D 864 by 504
# data=Z05 minutes
# Z10 "
# Z15 "
# Z30 "
# Z45 "
# Z60 "
# Z90 "
# A daily
# D weekly
# G monthly
# den=HIGH density
# MEDHI
# MED [default]
# MEDLO
# LOW
# this combines with data period for how much is shown
# 5min 10min 15min
# HIGH 3.5day 7day 10day ... etc
# MEDHI 2day 4.5day 7day
# MED 1.5day 3day 4day
# MEDLO 1day 2day 3day
# LOW 0.5day 1.5day 2day
# evnt=ADV events
# off
# grid=Y/N background green grid
# sky=Y/N fine grid lines
# jav=ADV prices on, gif file
# [other options for subscribers]
# size=A 504 by 288
# E 576 by 360
# B 612 by 360
# C 720 by 432
# D 864 by 504
# sly=N linear
# L log
# Y fit available space
# late=
# ch1=011 OHLC [default]
# 012 close-only
# 013 candlestick
# ...
# ov1=
# ch2=
# ov2=
# code=BSTKIC IC for interactive chart
# vol=y/n volume (not avail for 5min)
foreach my $n (1, 2, 5) {
App::Chart::IntradayHandler->new
(pred => $intraday_pred,
proc => \&intraday_url,
mode => "${n}d",
name => __nx('_{n} Day',
'_{n} Days',
$n,
n => $n));
}
App::Chart::IntradayHandler->new
(pred => $intraday_pred,
proc => \&intraday_url,
mode => 'daily',
name => __('_Daily 2 Months'));
App::Chart::IntradayHandler->new
(pred => $intraday_pred,
proc => \&intraday_url,
mode => 'daily',
name => __('_Daily 1 Year'));
# 5 minute, linear scale
my %intraday_mode_to_data = ('1d' => '&p=I&d=L',
'2d' => '&p=I&d=O',
'3d' => '&p=I&d=M',
'4d' => '&p=I&d=H',
'5d' => '&p=I&d=X',
'daily2m' => '&p=DO&d=L',
'daily1y' => '&p=DO&d=X');
# '7d' => '&data=Z60&den=MEDHIGH',
# 'daily' => '&data=A');
sub intraday_url {
my ($self, $symbol, $mode) = @_;
App::Chart::Download::status
( run in 2.789 seconds using v1.01-cache-2.11-cpan-d8267643d1d )