ensuite chaque donnée (sur un an) de chaque ticker est récupéré de Yahoo finance sous forme d'un fichier CSV
Mais une étape intermédiaire est nécessaire (trouver le Crumb...)
open(A, $fileout);
open(B, "> $outputfile") || die "create $outputfile : $!";
print "Opening $fileout...\n" if $debug==1;
$task = "curl -s --cookie-jar cookie.txt
https://finance.yahoo.com/quote/AAPL/?p=AAPL > goog.html";
`$task`;
my $crumbfile="goog.html";
open (my $fh, "<", $crumbfile);
while(my $line = <$fh>){
for ($line =~/CrumbStore\":\{\"crumb\":\"(?<crumb>.+?)\"\}/){ #to be use maybe one day in perl 5.3
#for ($line =~/CrumbStore\":{\"crumb\":\"(?<crumb>.+?)\"}/){ #original regex but rules change soon
$crumb = $1;
}
}
print "Here is the crumb man!: $crumb\n" if $debug == 1; #Here is the crumb man!
unlink $crumbfile;
Puis seulement on peut récupérer le CSV
Y a deux méthodes (une rapide)
$P1 = (time() - 31536000); #1year before epoch time till now
#$P1 = (time() - 259200); #3days before epoch time till now TEST
$P2 = time();
$task = "https://query1.finance.yahoo.com/v7/finance/download/$symbol?period1=$P1&period2=$P2&interval=1d&events=history&crumb=$crumb";
$thesymbol = "$directory$symbol.csv";
getstore($task, $thesymbol);
et une autre plus ancienne qui fonctionne tout aussi bien mais très lente et que je n'utilise plus
$q = Finance::QuoteHist->new
(
symbols => [$symbol],
start_date => '1 year ago', # or '1 year ago', see Date::Manip
end_date => 'today',
);
$count=0;
# Quotes
foreach $row ($q->quotes()) {
eval {
# stuff that might die
};
#print "@$row\n";
$count++;
($symbol, $date, $open, $high, $low, $close, $volume) = @$row;