Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ohlc(3)		      User Contributed Perl Documentation	       ohlc(3)

NAME
       GD::Graph::ohlc - GD::Graph type	that shows open, high, low and close
       as ticks	on little sticks

SYNOPSIS
       Create an chart,	displaying the open, high, low,	and close -- normally
       for stock data.	The data points	for ohlc charts	are completely
       different from all the other graph types, they must be four tuples,
       "[$o,$h,$l,$c]",	instead	of single scalar values.  See the "DATA"
       section for an explanation.

DATA
       The data	points for ohlc	and ohlc-mixed graphs must be four tuples --
       instead of the single scalar number the other GD::Graphs	take.  This
       would feed nicely into an ohlc-mixed graph:

	   @data = (
	       ['1st', '2nd', '3rd'],
	       [ 1, 2, 3 ],
	       [ [1,2,3,4], [1,2,3,4], [1,2,3,4] ],
	   );

EXAMPLE
       This example turns out like this:
       <https://voltar.org/PerlModules/ohlc_example.png>.

       NOTE: You do not	need to	use GD::Graph::mixed here.  See
       GD::Graph::candlesticks for an example that doesn't use mixed.

	   use strict;
	   use warnings;
	   use List::Util qw(min max);
	   use GD::Graph::ohlc;
	   use GD::Graph::mixed;

	   my @msft = (	    #  open	  high	     low	close
	       ["2007/12/18", "34.6400", "35.0000", "34.2100", "34.7400"],
	       ["2007/12/19", "34.6900", "35.1400", "34.3800", "34.7900"],
	       ["2007/12/20", "35.2900", "35.7900", "35.0800", "35.5200"],
	       ["2007/12/21", "35.9000", "36.0600", "35.7500", "36.0600"],
	       ["2007/12/24", "36.1300", "36.7200", "36.0500", "36.5800"],
	       ["2007/12/26", "36.4100", "36.6400", "36.2600", "36.6100"],
	       ["2007/12/27", "36.3500", "36.5500", "35.9400", "35.9700"],
	       ["2007/12/28", "36.1000", "36.2300", "35.6700", "36.1200"],
	       ["2007/12/31", "35.9000", "35.9900", "35.5200", "35.6000"],
	       ["2008/01/02", "35.7900", "35.9600", "35.0000", "35.2200"],
	       ["2008/01/03", "35.2200", "35.6500", "34.8600", "35.3700"],
	       ["2008/01/04", "35.1900", "35.2000", "34.0900", "34.3800"],
	       ["2008/01/07", "34.5500", "34.8000", "34.2500", "34.6100"],
	       ["2008/01/08", "34.7100", "34.7100", "33.4000", "33.4500"],
	       ["2008/01/09", "33.3600", "34.5400", "33.3500", "34.4400"],
	       ["2008/01/10", "34.3500", "34.5000", "33.7800", "34.3300"],
	       ["2008/01/11", "34.1400", "34.2400", "33.7200", "33.9100"],
	       ["2008/01/14", "34.4600", "34.5700", "34.0800", "34.3900"],
	       ["2008/01/15", "34.0300", "34.3800", "34.0000", "34.0000"],
	       ["2008/01/16", "33.4200", "33.6500", "32.5100", "33.2300"],
	       ["2008/01/17", "33.5400", "33.8000", "32.9700", "33.1100"],
	       ["2008/01/18", "33.1600", "34.0000", "32.9700", "33.0100"],
	       ["2008/01/22", "31.5400", "32.5300", "31.5000", "31.9600"],
	       ["2008/01/23", "31.4800", "32.0500", "31.0400", "31.9300"],
	       ["2008/01/24", "32.3500", "33.3600", "32.1200", "33.2500"],
	       ["2008/01/25", "34.9000", "35.0000", "32.8700", "32.9400"],
	       ["2008/01/28", "33.0200", "33.1000", "32.4200", "32.7200"],
	       ["2008/01/29", "32.8500", "32.8900", "32.3500", "32.6000"],
	       ["2008/01/30", "32.5600", "32.8000", "32.0500", "32.2000"],
	       ["2008/01/31", "31.9100", "32.7400", "31.7200", "32.6000"],
	   );

	   my @all_points = map	{@$_[1 .. 4]} @msft;
	   my $min_point  = min(@all_points);
	   my $max_point  = max(@all_points);

	   my $graph = GD::Graph::mixed->new(800, 400);
	      $graph->set(
		   x_labels_vertical =>	1,
		   x_label	     =>	'Trade Date',
		   y_label	     =>	'NASDAQ:MSFT',
		   title	     =>	"Example OHLC",
		   transparent	     =>	0,
		   dclrs	     =>	[qw(lgray blue)],
		   types	     =>	[qw(lines ohlc)],
		   y_min_value	     =>	$min_point-0.2,
		   y_max_value	     =>	$max_point+0.2,
		   y_number_format   =>	'%0.2f',

	       ) or warn $graph->error;

	   my $data_ohlc = [
	       [ map {$_->[0]} @msft ],	      #	date
	       [ map {$_->[4]} @msft ],	      #	close
	       [ map {[@$_[1 ..	4]]} @msft ], #	ohlc
	   ];

	   my $gd = $graph->plot($data_ohlc) or	die $graph->error;
	   open	my $dump, ">", "/tmp/ohlc_example.png" or die $!;
	   print $dump $gd->png;
	   close $dump;

AUTHOR
       Paul Miller "<jettero@cpan.org>"

       I am using this software	in my own projects...  If you find bugs,
       please please please let	me know. Actually, let me know if you find it
       handy at	all.  Half the fun of releasing	this stuff is knowing that
       people use it.

       If you see anything wrong with the callbacks, the docs, or anything:
       Definitely let me know!	rt.cpan, irc, email, whatever.	Just let me
       know.

COPYRIGHT
       Copyright (c) 2012 Paul Miller

SEE ALSO
       perl(1),	GD::Graph, GD::Graph::candlesticks,
       <http://en.wikipedia.org/wiki/OHLC>

perl v5.24.1			  2013-01-06			       ohlc(3)

NAME | SYNOPSIS | DATA | EXAMPLE | AUTHOR | COPYRIGHT | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=GD::Graph::ohlc&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help