JustPaste.it

#!/usr/bin/perl -w

# Copyright 2000-2002 Rapha�l Hertzog, Fabien Fulhaber
# This file is distributed under the terms of the General Public License
# version 2 or (at your option) any later version.

use lib '..';

use strict;
use vars qw($db);

use GT::Prices;
use GT::Portfolio;
use GT::PortfolioManager;
use GT::Calculator;
use GT::Report;
use GT::BackTest;
use GT::Eval;
use Getopt::Long;
use GT::Conf;
use GT::DateTime;
use GT::Tools qw(:conf :timeframe);
use GT::Graphics::DataSource::PortfolioEvaluation;
use GT::Graphics::Driver;
use GT::Graphics::Object;
use GT::Graphics::Graphic;
use GT::Graphics::Tools qw(:axis :color);
use Pod::Usage;

GT::Conf::load();

 

# Manage options

my ($full, $nb_item, $start, $end, $timeframe, $max_loaded_items) =
(0, 0, '', '', 'day', -1);
my $man = 0;
my @options;
my ($verbose, $html, $display_trades, $template, $graph_file, $ofname, $broker, $system, $store_file, $outputdir, $set) =
(0, 0, 0, '', '', '', '', '', '', '', '');
my (@mmname, @tfname, @csname);
$outputdir = GT::Conf::get("BackTest::Directory") || './';
GetOptions('full!' => \$full, 'nb-item=i' => \$nb_item,
"start=s" => \$start, "end=s" => \$end,
"max-loaded-items=s" => \$max_loaded_items,
"timeframe=s" => \$timeframe,
'verbose!' => \$verbose, 'html!' => \$html,
'template=s' => \$template, 'display-trades!' => \$display_trades,
'output-directory=s' => \$outputdir, 'set=s' => \$set,
'money-management=s' => \@mmname, 'graph=s' => \$graph_file,
'trade-filter=s' => \@tfname, 'order-factory=s' => \$ofname,
'close-strategy=s' => \@csname, 'broker=s' => \$broker,
'system=s' => \$system, "store=s" => \$store_file,
"option=s" => \@options, "help!" => \$man);

foreach (@options) {
my ($key, $value) = split (/=/, $_);
GT::Conf::set($key, $value);
}

pod2usage( -verbose => 2) if ($man);

if (! scalar(@mmname))
{
@mmname = ("Basic");
}
if ($system && ! scalar(@csname)) {
die "You must give at least one --close-strategy argument !\n";
}

if (! -d $outputdir)
{
die "The directory '$outputdir' doesn't exist !\n";
}

# Create the entire framework
my $pf_manager = GT::PortfolioManager->new;
my $sys_manager = GT::SystemManager->new;


if ($system) {
$sys_manager->set_system(
create_standard_object(split (/\s+/, "Systems::$system")));
} else {
my $sysname = shift;
# Check for alias
if (! defined($sysname)) {
die "You must give either a --system parameter or an alias name.";
}
if ($sysname !~ /\|/)
{
my $alias = resolve_alias($sysname);
die "Alias unknown '$alias'" if (! $alias);
$sys_manager->set_alias_name($sysname);
$sysname = $alias;
}

if (defined($sysname) && $sysname)
{
$sys_manager->setup_from_name($sysname);
$pf_manager->setup_from_name($sysname);
} else {
die "You must give either a --system parameter or an alias name.";
}
}