Finance-Quant
view release on metacpan or search on metacpan
lib/Finance/Quant.pm view on Meta::CPAN
use Carp;
use File::Copy;
use Data::Dumper;
use File::Spec::Functions;
use File::Path;
use Time::Local;
use File::Fetch;
use HTML::TreeBuilder;
use Text::Buffer;
use File::Find;
use Finance::Optical::StrongBuy;
use MIME::Base64;
use GD::Graph::lines;
use Finance::Quant;
use Statistics::Basic qw(mean);
use List::Util qw(max min sum);
our $DEBUG = 10;
our $DEBUG_TO_SYSLOG=1;
our $LOGGER_EXE="/usr/bin/logger";
our @directories = qw(download ibes-strong-buy ratings symbols charts backtest);
our %files;
our $current="Finance-Quant";
our $dir = File::Spec->tmpdir();
our ($recurse, $name, $case,$linenums,$quick_start, $use_regex,$seeking,$textbuffer,$textview,$cancel) =(1,1,1,1,1,1,1,undef,undef); ##< patch
our $memd = new Cache::Memcached {
'servers' => [ "127.0.0.1:11211"],
'debug' => 0,
'compress_threshold' => 10_000,
} or warn($@);
our $sources = {
'TIME_SALES' => "http://www.nasdaq.com/symbol/%s/time-sales",
'RT_QUOTE' => "http://www.nasdaq.com/symbol/%s/real-time",
'NASDAQ_SYMBOLS' => "ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt",
'NASDAQ_COMMUNITY' => "http://www.nasdaq.com/symbol/%s/real-time",
'IBES_ICON' => "http://content.nasdaq.com/ibes/%s_Smallcon.jpg",
'GURU' => "http://www.nasdaq.com/symbol/%s/guru-analysis",
#'IBES_RECOMMENDATIONS' => "http://www.nasdaq.com/symbol/%s/recommendations",
#'IBES_ANALYST' => "http://www.nasdaq.com/symbol/%s/analyst-research",
'YAHOO_CHART' => "http://chart.finance.yahoo.com/z?s=%s&t=3m&q=c&l=on&z=l&p=b,p,v,m20&a=m26-12-9&lang=en-US®ion=US"
};
sub recommended {
my $class = shift;
my $config = {};
my $self = $class->new($config);
$self->{config}->{'ibes'} = {SP500=>1,NYSE=>1,AMEX=>0,NASDAQ=>1,CUSTOM=>0},
$self->{config}->{'swing-entry'} = {DAX=>1,TECHDAX=>1,MDAX=>1,SP500=>1};
$self->{config}->{'sector-data'} = 1;
$self->{config}->{'markets'} = 1;
$self->{config}->{'yahoo-charts'} = 1;
$self->{config}->{'nasdaq-user-rating'} = 1;
$self->{config}->{'nasdaq-guru-rating'} = 1;
$self->{config}->{'sources'} = $sources;
$self->createDataDir();
$self->_init();
return $self;
}
sub updateSymbols {
my $self = shift;
$self->getNasdaqSymbols(File::Spec->tmpdir(),$self->{config}->{sources}->{NASDAQ_SYMBOLS});
}
sub _init{
my $self = shift;
$self->{config}->{sources} = $sources;
my $syms = Finance::Quant::Symbols->new();
my @DATA = @{$syms->{symbols}};
foreach(@DATA){
if(defined($self->{config}->{'ibes'}->{$_->[0]}) &&
$self->{config}->{'ibes'}->{$_->[0]} == 1) {
$self->{config}->{'ibes'}->{$_->[0]} = $_->[1];
if($_->[0] eq "NASDAQ"){
$self->{config}->{'ibes'}->{NASDAQ}=$self->updateSymbols();
}
}
}
$self->{'sector-summary'} = {
summary=>[Finance::Google::Sector::Mean::sectorsummary()],
quotes=>[Finance::NASDAQ::Markets::sector()]
} unless(!$self->{config}->{'sector-data'});
$self->{'indices'} = {
quotes=>[Finance::NASDAQ::Markets::index()]
}unless(!$self->{config}->{'markets'});
}
sub new {
my $class = shift;
my $symbol = shift;
my $date = gmtime;
my @e = split " ",$date;# =~ s/ /_/g;
if(defined($e[2]) && (length $e[2]) == 1) {
$e[2] = "0".$e[2];
}
my $downfolder = "$e[4]-$e[1]-$e[2]";
my $self = bless {
config=>{'ibes'=>{CUSTOM=>$symbol},sources => $sources},
optical=>Finance::Optical::StrongBuy->new($dir),
#testthread=>testthread->new($dir,10,$downfolder),
downfolder=>$downfolder,
dir=>$dir,
date=>$date,
}, $class;
#
#
$self->{config}->{'nasdaq-guru-rating'} = 1;
$self->{textbuffer} = new Text::Buffer(-file=>'my.txt');
$self->Dbg(2,"CREATED INSTANCE of $self");
return $self;
}
( run in 0.757 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )