public MarketRequest(MarketSymbol marketSymbol, DataType dataType, DateTime startDate, DateTime endDate) { MarketSymbol = marketSymbol; DataType = dataType; StartDate = startDate; EndDate = endDate; }
public static string GetZipOutputFileName(DateTime date, MarketSymbol symbol, DataType dataType, string dataDirectory) { var formattedSecurityType = symbol.SecurityType.ToLowerInvariant(); var formattedDataType = dataType.ToString().ToLowerInvariant(); var formattedSymbol = symbol.Symbol.ToLowerInvariant(); var country = "usa"; // TODO: find country by exchange return(Path.Combine(dataDirectory, formattedSecurityType, country, formattedDataType, formattedSymbol, GenerateZipFileName(date, symbol, dataType))); }
public static string GenerateZipFileName(DateTime date, MarketSymbol symbol, DataType dataType) { var formattedSymbol = symbol.Symbol.ToLowerInvariant(); switch (dataType) { case DataType.Fundamental: case DataType.Daily: case DataType.Weekly: return($"{formattedSymbol}.zip"); default: return($"{date:yyyyMMdd}.zip");; } }
public static string GenerateZipEntryName(DateTime date, MarketSymbol symbol, DataType dataType) { var formattedSymbol = symbol.Symbol.ToLowerInvariant(); var formattedDataType = dataType.ToString().ToLowerInvariant(); switch (dataType) { case DataType.Fundamental: case DataType.Daily: case DataType.Weekly: return($"{formattedSymbol}_{formattedDataType}.csv"); default: return($"{date.ToString(DateFormat)}_{formattedSymbol}_{formattedDataType}.csv"); } }
public OptionableStock(MarketSymbol marketSymbol, IEnumerable <EquityOption> options) { MarketSymbol = marketSymbol; Options = options; }
public FileReader(string dataDirectory, MarketSymbol symbol, DateTime date, DataType resolution) { _zipPath = DataStore.GetZipOutputFileName(date, symbol, resolution, dataDirectory); _zipEntry = DataStore.GenerateZipEntryName(date, symbol, resolution); }
public Recorder(RecorderView view) { this.view = view; view.recorder = this; /////////// Setup logger /////////// logger = NLog.LogManager.GetCurrentClassLogger(); loggerWCF = NLog.LogManager.GetLogger("Capture.Recorder.WCF"); /////////// Setup WCF notification to a BriefMaker /////////// briefMakerClient = new BriefMakerServiceReference.BriefMakerClient(); /////////// Download Symbols /////////// try { logger.Debug("Downloading symbols"); var dbSymbols = from s in dc.Symbols select s; foreach (var s in dbSymbols) { if (String.IsNullOrWhiteSpace(s.Name)) { logger.Error("SymbolID:" + s.SymbolID + " does not have a name(symbol). Item will be skipped."); continue; } if (s.SymbolID > 255 || s.SymbolID < 0) { logger.Error("SymbolID:" + s.SymbolID + " range is not valid. Supported(0-255). Item will be skipped."); continue; } SecurityType secType = s.Type.Trim() == "STK" ? SecurityType.Stock : SecurityType.Index; string market = s.Market.Trim(); var new_symb = new MarketSymbol() { SymbolID = s.SymbolID, Symbol = s.Name.Trim(), securityType = s.Type.Trim() == "STK" ? SecurityType.Stock : SecurityType.Index, Market = s.Market }; symbols.Add(new_symb); } } catch (Exception ex) { logger.Error("Database Exception: " + ex.Message); logger.Error("Make sure that the connection string is set correctly in app.config."); Thread.Sleep(5000); ShutdownRecorder(); } // Setup BinaryWriters logger.Debug("Downloading symbols"); capturingWriter = new BinaryWriter(new MemoryStream(MemoryStreamReserveSpace)); capturingWriter.Write((long)0); // leave some space at the beginning for time later manufacturedWriterForFuture = new BinaryWriter(new MemoryStream(MemoryStreamReserveSpace)); manufacturedWriterForFuture.Write((long)0); // leave some space at the beginning for time later // Run this thread will a little higher priority since it is dealing with real-time information. Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; // Thread.CurrentThread.Priority = ThreadPriority.AboveNormal; view.timer.Tick += new EventHandler(timer1Sec_Tick); while (true) { TimeSpan timespan = new TimeSpan(DateTime.Now.Ticks - lastRecievedUpdate.Ticks); if (timespan.Seconds > 30) { logger.Info("No Data received in over 30 seconds. Requesting Reconnect..."); lastRecievedUpdate = DateTime.Now; ConnectToIB(); } if (terminateRequested || (DateTime.Now.TimeOfDay > settings.ShutDownTime)) { logger.Info("Close requested or automatic end of day shutdown."); ShutdownRecorder(); break; } view.BeginInvoke((MethodInvoker)delegate { view.toolStripStatusLabelEventCt.Text = totalCaptureEventsForDisplay.ToString() + " (" + (totalCaptureEventsForDisplay - lastTotalCaptureEventsForDisplay).ToString() + "/sec)"; // runs on UI thread lastTotalCaptureEventsForDisplay = totalCaptureEventsForDisplay; view.toolStripStatusLabelLastBrfID.Text = lastUpdateTime.ToString(); }); // runs on UI thread Thread.Sleep(1000); } }
public Recorder(RecorderView view) { this.view = view; view.recorder = this; /////////// Setup logger /////////// logger = NLog.LogManager.GetCurrentClassLogger(); loggerWCF = NLog.LogManager.GetLogger("Capture.Recorder.WCF"); /////////// Setup WCF notification to a BriefMaker /////////// briefMakerClient = new BriefMakerServiceReference.BriefMakerClient(); /////////// Download Symbols /////////// logger.Debug("Downloading symbols"); var dbSymbols = from s in dc.Symbols select s; foreach (var s in dbSymbols) { if (String.IsNullOrWhiteSpace(s.Name)) { logger.Error("SymbolID:" + s.SymbolID + " does not have a name(symbol). Item will be skipped."); continue; } if (s.SymbolID > 255 || s.SymbolID < 0) { logger.Error("SymbolID:" + s.SymbolID + " range is not valid. Supported(0-255). Item will be skipped."); continue; } SecurityType secType = s.Type.Trim() == "STK" ? SecurityType.Stock : SecurityType.Index; string market = s.Market.Trim(); var new_symb = new MarketSymbol() { SymbolID = s.SymbolID, Symbol = s.Name.Trim(), securityType = s.Type.Trim() == "STK" ? SecurityType.Stock : SecurityType.Index, Market = s.Market }; symbols.Add(new_symb); } // Setup BinaryWriters logger.Debug("Downloading symbols"); capturingWriter = new BinaryWriter(new MemoryStream(MemoryStreamReserveSpace)); capturingWriter.Write((long)0); // leave some space at the beginning for time later manufacturedWriterForFuture = new BinaryWriter(new MemoryStream(MemoryStreamReserveSpace)); manufacturedWriterForFuture.Write((long)0); // leave some space at the beginning for time later // Run this thread will a little higher priority since it is dealing with real-time information. Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; // Thread.CurrentThread.Priority = ThreadPriority.AboveNormal; view.timer.Tick += new EventHandler(timer1Sec_Tick); while (true) { TimeSpan timespan = new TimeSpan(DateTime.Now.Ticks - lastRecievedUpdate.Ticks); if (timespan.Seconds > 30) { logger.Info("No Data received in over 30 seconds. Requesting Reconnect..."); lastRecievedUpdate = DateTime.Now; ConnectToIB(); } if (terminateRequested || (DateTime.Now.TimeOfDay > settings.ShutDownTime)) { logger.Info("Close requested or automatic end of day shutdown."); ShutdownRecorder(); break; } view.BeginInvoke((MethodInvoker) delegate { view.toolStripStatusLabelEventCt.Text = totalCaptureEventsForDisplay.ToString() + " (" + (totalCaptureEventsForDisplay - lastTotalCaptureEventsForDisplay).ToString() + "/sec)"; // runs on UI thread lastTotalCaptureEventsForDisplay = totalCaptureEventsForDisplay; view.toolStripStatusLabelLastBrfID.Text = lastUpdateTime.ToString(); }); // runs on UI thread Thread.Sleep(1000); } }
public FileWriter(string dataDirectory, MarketSymbol marketSymbol, DataType dataType) { _dataType = dataType; _marketSymbol = marketSymbol; _dataDirectory = dataDirectory; }