public ContinuousFuturesBroker(IDataClient client, bool connectImmediately = true, IInstrumentSource instrumentRepo = null) { if (client == null) { throw new ArgumentNullException(nameof(client)); } _client = client; _instrumentRepo = instrumentRepo ?? new InstrumentRepository(new MyDBContext()); _client.HistoricalDataReceived += _client_HistoricalDataReceived; _client.Error += _client_Error; if (connectImmediately) { _client.Connect(); } _data = new Dictionary <KeyValuePair <int, BarSize>, List <OHLCBar> >(); _contracts = new Dictionary <int, List <Instrument> >(); _requestCounts = new Dictionary <int, int>(); _requests = new Dictionary <int, HistoricalDataRequest>(); _histReqIDMap = new Dictionary <int, int>(); _frontContractRequests = new BlockingCollection <FrontContractRequest>(); _requestTypes = new Dictionary <int, bool>(); _frontContractRequestMap = new Dictionary <int, FrontContractRequest>(); _dataUsesPending = new Dictionary <KeyValuePair <int, BarSize>, int>(); _reconnectTimer = new Timer(1000); _reconnectTimer.Elapsed += _reconnectTimer_Elapsed; _reconnectTimer.Start(); Name = "ContinuousFutures"; }
public EarningsUpdateJob(IEarningsAnnouncementBroker broker, IEmailService emailService, UpdateJobSettings settings, IInstrumentSource instrumentManager) { _broker = broker; _emailService = emailService; _settings = settings; _instrumentManager = instrumentManager; }
public DividendUpdateJob(IDividendsBroker broker, IEmailService emailService, UpdateJobSettings settings, IInstrumentSource instrumentManager) { _broker = broker; _emailService = emailService; _settings = settings; _instrumentManager = instrumentManager; }
public JobFactory(IHistoricalDataBroker hdb, string host, int port, string username, string password, string sender, string email, UpdateJobSettings updateJobSettings, QDMS.IDataStorage localStorage, IInstrumentSource instrumentSource, IEconomicReleaseBroker erb) : base() { _hdb = hdb; _host = host; _port = port; _username = username; _password = password; _sender = sender; _email = email; _updateJobSettings = updateJobSettings; _localStorage = localStorage; _instrumentSource = instrumentSource; _erb = erb; }
public InstrumentsServer(int port, IInstrumentSource instrumentManager) { if (instrumentManager == null) { throw new ArgumentNullException(nameof(instrumentManager), $"{nameof(instrumentManager)} cannot be null"); } _connectionString = $"tcp://*:{port}"; _instrumentManager = instrumentManager; }
public DataUpdateJob(IHistoricalDataBroker broker, IEmailService emailService, UpdateJobSettings settings = null, IDataStorage localStorage = null, IInstrumentSource instrumentManager = null) { _broker = broker; _emailService = emailService; _errors = new List<string>(); _pendingRequests = new List<HistoricalDataRequest>(); _settings = settings ?? GetSettings(); _localStorage = localStorage ?? DataStorageFactory.Get(); _instrumentManager = instrumentManager ?? new InstrumentManager(); }
public DataUpdateJob(IHistoricalDataBroker broker, IEmailService emailService, UpdateJobSettings settings = null, IDataStorage localStorage = null, IInstrumentSource instrumentManager = null) { _broker = broker; _emailService = emailService; _errors = new List <string>(); _pendingRequests = new List <HistoricalDataRequest>(); _settings = settings ?? GetSettings(); _localStorage = localStorage ?? DataStorageFactory.Get(); _instrumentManager = instrumentManager ?? new InstrumentManager(); }
public DataUpdateJob(IHistoricalDataBroker broker, IEmailService emailService, UpdateJobSettings settings, IDataStorage localStorage, IInstrumentSource instrumentManager) { if (settings == null) throw new ArgumentNullException("settings"); if (localStorage == null) throw new ArgumentNullException("localStorage"); if (instrumentManager == null) throw new ArgumentNullException("instrumentManager"); _broker = broker; _emailService = emailService; _errors = new List<string>(); _pendingRequests = new List<HistoricalDataRequest>(); _settings = settings; _localStorage = localStorage; _instrumentManager = instrumentManager; }
public ContinuousFuturesBroker(IDataClient client = null, IInstrumentSource instrumentMgr = null, string clientName = "") { if (client == null) { if (string.IsNullOrEmpty(clientName)) { clientName = "CONTFUTCLIENT"; } _client = new QDMSClient.QDMSClient( clientName, "127.0.0.1", Properties.Settings.Default.rtDBReqPort, Properties.Settings.Default.rtDBPubPort, Properties.Settings.Default.instrumentServerPort, Properties.Settings.Default.hDBPort); } else { _client = client; } _instrumentMgr = instrumentMgr ?? new InstrumentManager(); _client.HistoricalDataReceived += _client_HistoricalDataReceived; _client.Error += _client_Error; _client.Connect(); _data = new Dictionary <KeyValuePair <int, BarSize>, List <OHLCBar> >(); _contracts = new Dictionary <int, List <Instrument> >(); _requestCounts = new Dictionary <int, int>(); _requests = new Dictionary <int, HistoricalDataRequest>(); _histReqIDMap = new Dictionary <int, int>(); _frontContractRequests = new BlockingCollection <FrontContractRequest>(); _requestTypes = new Dictionary <int, bool>(); _frontContractRequestMap = new Dictionary <int, FrontContractRequest>(); _dataUsesPending = new Dictionary <KeyValuePair <int, BarSize>, int>(); _reconnectTimer = new Timer(1000); _reconnectTimer.Elapsed += _reconnectTimer_Elapsed; _reconnectTimer.Start(); Name = "ContinuousFutures"; }
public DataUpdateJobFactory(HistoricalDataBroker broker, string host, int port, string username, string password, string sender, string email, UpdateJobSettings updateJobSettings, QDMS.IDataStorage localStorage, IInstrumentSource instrumentSource) : base() { _hdb = broker; _host = host; _port = port; _username = username; _password = password; _sender = sender; _email = email; _updateJobSettings = updateJobSettings; _localStorage = localStorage; _instrumentSource = instrumentSource; }
/// <summary> /// </summary> /// <param name="broker"></param> /// <param name="emailService"></param> /// <param name="settings"></param> /// <param name="localStorage"></param> /// <param name="instrumentManager"></param> /// <exception cref="ArgumentNullException"><paramref name="instrumentManager"/> is <see langword="null" />.</exception> public DataUpdateJob(IHistoricalDataBroker broker, IEmailService emailService, UpdateJobSettings settings, IDataStorage localStorage, IInstrumentSource instrumentManager) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (localStorage == null) { throw new ArgumentNullException(nameof(localStorage)); } if (instrumentManager == null) { throw new ArgumentNullException(nameof(instrumentManager)); } _broker = broker; _emailService = emailService; _errors = new List <string>(); _pendingRequests = new List <HistoricalDataRequest>(); _settings = settings; _localStorage = localStorage; _instrumentManager = instrumentManager; }
public InstrumentModule(IInstrumentSource instrumentRepo, IDataStorage dataStorage) : base("/instruments") { this.RequiresAuthentication(); Get["/", true] = async(_, token) => await instrumentRepo.FindInstruments().ConfigureAwait(false); Get["/{Id:int}", true] = async(parameters, token) => { //Instrument by ID var id = (int)parameters.Id; var instrument = (await instrumentRepo.FindInstruments(x => x.ID == id).ConfigureAwait(false)).FirstOrDefault(); if (instrument == null) { return(HttpStatusCode.NotFound); } return(instrument); }; Get["/search", true] = async(_, token) => { //Search using an instrument object var inst = this.Bind <Instrument>(); if (inst == null) { return(HttpStatusCode.BadRequest); } return(await instrumentRepo.FindInstruments(inst).ConfigureAwait(false)); }; Get["/predsearch", true] = async(parameters, token) => { //Search using a predicate var predReq = this.Bind <PredicateSearchRequest>(); if (predReq == null) { return(HttpStatusCode.BadRequest); } //Deserialize LINQ expression and pass it to the instrument manager Expression <Func <Instrument, bool> > expression; try { expression = predReq.Filter; } catch (Exception ex) { return(Negotiate .WithModel(new ValidationErrorResponse("Malformed predicate: " + ex.Message)) .WithStatusCode(HttpStatusCode.BadRequest)); } var instruments = await instrumentRepo.FindInstruments(expression).ConfigureAwait(false); return(instruments); }; Post["/", true] = async(parameters, token) => { Instrument instrument = this.BindAndValidate <Instrument>(); if (ModelValidationResult.IsValid == false) { return(this.ValidationFailure()); } var addedInstrument = await instrumentRepo.AddInstrument(instrument); return(addedInstrument); }; Put["/", true] = async(parameters, token) => { var instrument = this.BindAndValidate <Instrument>(); if (ModelValidationResult.IsValid == false) { return(this.ValidationFailure()); } //find it Instrument instrumentFromDB = (await instrumentRepo.FindInstruments(x => x.ID == instrument.ID).ConfigureAwait(false)).FirstOrDefault(); if (instrumentFromDB == null) { return(HttpStatusCode.NotFound); } //update it await instrumentRepo.UpdateInstrument(instrumentFromDB, instrument).ConfigureAwait(false); return(instrumentFromDB); }; Delete["/{Id:int}", true] = async(parameters, token) => { int id = parameters.Id; var instrument = (await instrumentRepo.FindInstruments(x => x.ID == id).ConfigureAwait(false)).FirstOrDefault(); if (instrument == null) { return(HttpStatusCode.NotFound); } await instrumentRepo.RemoveInstrument(instrument, dataStorage).ConfigureAwait(false); return(instrument); }; }
public InstrumentsServer(int port, IInstrumentSource instrumentManager = null) { _socketPort = port; _instrumentManager = instrumentManager ?? new InstrumentManager(); }