App-Chart
view release on metacpan or search on metacpan
devel/fixup-yahoo-crossed.pl view on Meta::CPAN
#!/usr/bin/perl -w
# Copyright 2008, 2009, 2010 Kevin Ryde
# This file is part of Chart.
#
# Chart is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3, or (at your option) any later version.
#
# Chart is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Chart. If not, see <http://www.gnu.org/licenses/>.
use strict;
use warnings;
use App::Chart::DBI;
my $dbh = App::Chart::DBI->instance;
{
print "Looking for high!=low when volume==0 ...\n";
my $aref = $dbh->selectall_arrayref
('SELECT symbol,date,open,high,low,close FROM daily
WHERE high NOT NULL
AND low NOT NULL
AND high != low
AND volume == \'0\'
AND symbol NOT LIKE \'^%\'
AND symbol NOT LIKE \'0%.SS\'
ORDER BY date ASC
');
# MIN(date) GROUP BY symbol');
print "total ",scalar(@$aref),"\n";
require Data::Dumper;
print Data::Dumper::Dumper($aref);
print "Fixing ...\n";
foreach my $row (@$aref) {
my ($symbol, $date, $open, $high, $low, $close) = @$row;
if ($open == $low && $low == $close) {
print "$symbol $date zap\n";
my $count = $dbh->do
('UPDATE daily SET open=NULL, high=NULL, low=NULL, close=NULL
WHERE symbol=? AND date=?',
undef,
$symbol, $date);
} else {
print "$symbol $date leave $open $low $close\n";
}
}
exit 0;
}
{
print "Looking for crossed ...\n";
my $aref = $dbh->selectall_arrayref
('SELECT symbol,MIN(date) FROM daily
WHERE CAST(high AS REAL) < CAST(low AS REAL) GROUP BY symbol');
require Data::Dumper;
print Data::Dumper::Dumper($aref);
foreach my $row (@$aref) {
my ($symbol, $date) = @$row;
my $count = $dbh->do ('DELETE FROM daily WHERE symbol=? AND date >= ?',
undef,
$symbol, $date);
print "$symbol $date delete $count\n";
}
exit 0;
}
( run in 0.452 second using v1.01-cache-2.11-cpan-ceb78f64989 )