Exemplo n.º 1
0
        internal static void Main(string[] args)
        {
            _appConfigurationManager    = new AppConfigurationManager();
            _commandLineArgumentManager = new CommandLineArgumentManager(_appConfigurationManager.UseCommandLineArgs, args);

            string logFile = _appConfigurationManager.GetLogFile();

            Log.Logger = new LoggerConfiguration()
                         .WriteTo.Console(LogEventLevel.Verbose)
                         //.WriteTo.File(logFile, rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: LogEventLevel.Verbose)
                         .CreateLogger();

            _logger = Log.Logger;

            InitialiseContainer();
            ISimulationTypeManager simulationTypeManager = _container.Resolve <ISimulationTypeManager>();

            simulationTypeManager.InitialiseManager(_commandLineArgumentManager.GetSimulationType());

            if (simulationTypeManager.SimulationManager == null)
            {
                _logger.Fatal("Unknown simulation type supplied.  Unable to proceed...");
                return;
            }

            simulationTypeManager.SimulationManager.Start();

            IAccount primaryAccount = _appConfigurationManager.GetAccount();
            ISimulationParameters simulationParameters = _container.Resolve <ISimulationParameters>();

            _logger.Information("Portfolio Simulation");
            _logger.Information("====================");
            _logger.Information($"Initial account: Currency: {primaryAccount.Currency} Balance: {primaryAccount.Balance}");
            _logger.Information($"Simulation Period: {simulationParameters.SimulationStartDate.ToShortDateString()} - {simulationParameters.SimulationEndDate.ToShortDateString()}");
            _logger.Information($"Simulation Type: {simulationParameters.SimulationType}");

            _logger.Information("Simulation starting...");
            var notificationManager = _container.Resolve <INotificationManager>();

            notificationManager.SimulationEnded += (s, e) => _simulationComplete = true;
            notificationManager.TriggerSimulationStart();

            while (!_simulationComplete)
            {
                System.Threading.Thread.Sleep(1000 * 10); // sleep for 10 seconds
            }
        }
        public PortfolioValuationReporter(ILogger logger,
                                          INotificationManager notificationManager,
                                          IStatisticsCalculationManager statisticsCalculationManager,
                                          ISimulationTypeManager simulationTypeManager,
                                          IXmlModelFactory xmlModelFactory,
                                          IPortfolioValuationSummaryReportWriter xmlWriter)
        {
            _logger = logger;
            _statisticsCalculationManager = statisticsCalculationManager;
            _notificationManager          = notificationManager;
            _simulationTypeManager        = simulationTypeManager;
            _xmlModelFactory           = xmlModelFactory;
            _portfolioValuationSummary = _xmlModelFactory.GetValuationSummaryDataModel();
            _xmlWriter = xmlWriter;

            _logger.Information("HoldingsReporter: Instantiation successful.");
        }