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 )