Ejemplo n.º 1
0
        public JobFactory(IHistoricalDataBroker hdb,
                          ISettings settings,
                          QDMS.IDataStorage localStorage,
                          IEconomicReleaseBroker erb,
                          IDividendsBroker divb,
                          IEarningsAnnouncementBroker eab) : base()
        {
            _hdb = hdb;

            _host              = settings.updateJobEmailHost;
            _port              = settings.updateJobEmailPort;
            _username          = settings.updateJobEmailUsername;
            _password          = settings.updateJobEmailPassword;
            _sender            = settings.updateJobEmailSender;
            _email             = settings.updateJobEmail;
            _updateJobSettings = new UpdateJobSettings(
                noDataReceived: settings.updateJobReportNoData,
                errors: settings.updateJobReportErrors,
                outliers: settings.updateJobReportOutliers,
                requestTimeouts: settings.updateJobTimeouts,
                timeout: settings.updateJobTimeout,
                toEmail: settings.updateJobEmail,
                fromEmail: settings.updateJobEmailSender);
            _localStorage = localStorage;
            _erb          = erb;
            _divb         = divb;
            _eab          = eab;
        }
Ejemplo n.º 2
0
        public JobFactory(IHistoricalDataBroker hdb,
                          string host,
                          int port,
                          string username,
                          string password,
                          string sender,
                          string email,
                          UpdateJobSettings updateJobSettings,
                          QDMS.IDataStorage localStorage,
                          IEconomicReleaseBroker erb,
                          IDividendsBroker divb,
                          IEarningsAnnouncementBroker eab) : base()
        {
            _hdb = hdb;

            _host              = host;
            _port              = port;
            _username          = username;
            _password          = password;
            _sender            = sender;
            _email             = email;
            _updateJobSettings = updateJobSettings;
            _localStorage      = localStorage;
            _erb  = erb;
            _divb = divb;
            _eab  = eab;
        }
Ejemplo n.º 3
0
 public DividendUpdateJob(IDividendsBroker broker, IEmailService emailService, UpdateJobSettings settings, IInstrumentSource instrumentManager)
 {
     _broker            = broker;
     _emailService      = emailService;
     _settings          = settings;
     _instrumentManager = instrumentManager;
 }
Ejemplo n.º 4
0
 public CustomBootstrapper(
     IDataStorage storage,
     IEconomicReleaseBroker erb,
     IHistoricalDataBroker hdb,
     IRealTimeDataBroker rtdb,
     IDividendsBroker divb,
     IScheduler scheduler,
     string apiKey)
 {
     _storage   = storage;
     _erb       = erb;
     _hdb       = hdb;
     _rtdb      = rtdb;
     _divb      = divb;
     _scheduler = scheduler;
     _apiKey    = apiKey;
 }
Ejemplo n.º 5
0
        public DividendsModule(IDividendsBroker broker)
            : base("/dividends")
        {
            this.RequiresAuthentication();

            Get("/", async(_, token) =>
            {
                var request = this.Bind <DividendRequest>();

                if (request == null)
                {
                    return(HttpStatusCode.BadRequest);
                }

                return(await broker.RequestDividends(request).ConfigureAwait(false));
            });

            Get("/datasources", _ => broker.DataSources.Keys.ToList());
        }
Ejemplo n.º 6
0
 public CustomBootstrapper(
     IDataStorage storage,
     IEconomicReleaseBroker erb,
     IHistoricalDataBroker hdb,
     IRealTimeDataBroker rtdb,
     IDividendsBroker divb,
     IEarningsAnnouncementBroker eab,
     IScheduler scheduler,
     ISettings settings)
 {
     _storage   = storage;
     _erb       = erb;
     _hdb       = hdb;
     _rtdb      = rtdb;
     _divb      = divb;
     _eab       = eab;
     _scheduler = scheduler;
     _apiKey    = settings.apiKey;
 }
Ejemplo n.º 7
0
        public void Initialisize()
        {
            _log.Info($"Server is initialisizing ...");

            //create data db if it doesn't exist
            DataDBContext dataContext;

            try
            {
                dataContext = new DataDBContext(_config.LocalStorage.ConnectionString);
                dataContext.Database.Initialize(false);
            }
            catch (System.Data.Entity.Core.ProviderIncompatibleException ex)
            {
                throw new NotSupportedException("Could not connect to context DataDB!", ex);
            }
            dataContext.Dispose();

            MyDBContext entityContext;

            try
            {
                entityContext = new MyDBContext(_config.DataStorage.ConnectionString);
                entityContext.Database.Initialize(false);
            }
            catch (System.Data.Entity.Core.ProviderIncompatibleException ex)
            {
                throw new NotSupportedException("Could not connect to context MyDB!", ex);
            }

            // initialisize helper classes

            var cfRealtimeBroker   = new ContinuousFuturesBroker(GetClient("RTDBCFClient"), false);
            var cfHistoricalBroker = new ContinuousFuturesBroker(GetClient("HDBCFClient"), false);

            IDataStorage localStorage;

            switch (_config.LocalStorage.Type)
            {
            case LocalStorageType.MySql:
                localStorage = new QDMSServer.DataSources.MySQLStorage(_config.LocalStorage.ConnectionString);
                break;

            case LocalStorageType.SqlServer:
                localStorage = new QDMSServer.DataSources.SqlServerStorage(_config.LocalStorage.ConnectionString);
                break;

            default:
                throw new NotSupportedException("Not supported local storage type: " + _config.LocalStorage.Type);
            }

            // create brokers
            _historicalDataBroker  = new HistoricalDataBroker(cfHistoricalBroker, localStorage, new IHistoricalDataSource[] {
                // @todo please add here some historical data sources the service should provide
            });
            _realTimeDataBroker    = new RealTimeDataBroker(cfRealtimeBroker, localStorage, new IRealTimeDataSource[] {
                // @todo please add here some real time data sources the service should provide
            });
            _economicReleaseBroker = new EconomicReleaseBroker("FXStreet",
                                                               new[] { new fx.FXStreet(new CountryCodeHelper(entityContext.Countries.ToList())) });

            _dividendBroker = new DividendsBroker("Nasdaq",
                                                  new[] { new NasdaqDs.Nasdaq() });

            // create servers
            _historicalDataServer = new HistoricalDataServer(_config.HistoricalDataService.Port, _historicalDataBroker);
            _realTimeDataServer   = new RealTimeDataServer(_config.RealtimeDataService.PublisherPort, _config.RealtimeDataService.RequestPort, _realTimeDataBroker);

            // create scheduler
            ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); //todo need settings for scheduler + jobfactory

            _scheduler = schedulerFactory.GetScheduler();

            var bootstrapper = new CustomBootstrapper(
                localStorage,
                _economicReleaseBroker,
                _historicalDataBroker,
                _realTimeDataBroker,
                _dividendBroker,
                _scheduler,
                _config.WebService.ApiKey);
            var uri = new Uri((_config.WebService.UseSsl ? "https" : "http") + "://localhost:" + _config.WebService.Port);

            _httpServer = new NancyHost(bootstrapper, uri);

            // ... start the servers
            _historicalDataServer.StartServer();
            _realTimeDataServer.StartServer();
            _httpServer.Start();
            _scheduler.Start();

            _log.Info($"Server is ready.");
        }