private bool ParseHarpex(StockSerie stockSerie, string fileName) { // Read new downloaded values if (!File.Exists(fileName)) { return false; } bool res = false; StockDailyValue harpexValue = null; DateTime date; float harpex = 0; string line = string.Empty; try { using (StreamReader sr = new StreamReader(fileName, true)) { // File format // "date";"HARPEX";"Class 1";"Class 2";"Class 3";"Class 4";"Class 5";"Class 6";"Class 7";"Class 8" // 14/07/07;1296.25;1196.94;1163.11;1207.74;1180.47;1406.11;1404.5;1388.44;1475.32 sr.ReadLine(); // Skip first line while (!sr.EndOfStream) { line = sr.ReadLine(); string[] row = line.Split(';'); date = DateTime.Parse(row[0], StockAnalyzerApp.Global.EnglishCulture); harpex = float.Parse(row[1], StockAnalyzerApp.Global.EnglishCulture); harpexValue = new StockDailyValue(stockSerie.StockName, harpex, harpex, harpex, harpex, 0, date); stockSerie.Add(harpexValue.DATE, harpexValue); harpexValue.Serie = stockSerie; } } res = true; } catch (System.Exception e) { StockLog.Write("Failed to parse Harpex file " + e.Message + "\r\r" + line); } return res; }
private static void ParseIntradayData(StockSerie stockSerie, string folder, string fileName) { try { if (File.Exists(folder + "\\" + fileName)) { using (StreamReader sr = new StreamReader(folder + "\\" + fileName)) { string line = sr.ReadLine(); string[] row = line.Replace("\"", "").Replace(" - ", ",").Split(','); if (row.Length == 7) { try { StockDailyValue dailyValue = new StockDailyValue(stockSerie.StockName, float.Parse(row[2], usCulture), float.Parse(row[4], usCulture), float.Parse(row[3], usCulture), float.Parse(row[5], usCulture), long.Parse(row[6]), DateTime.Parse(row[0] + " " + row[1], usCulture)); StockDailyValue lastValue = stockSerie.Values.Last(); if (lastValue.DATE.Date == dailyValue.DATE.Date) { if (lastValue.DATE.Hour == 0 && lastValue.DATE.Minute == 0) return; stockSerie.Remove(lastValue.DATE); } stockSerie.Add(dailyValue.DATE, dailyValue); stockSerie.ClearBarDurationCache(); } catch (System.Exception e) { StockLog.Write("Unable to parse intraday data for " + stockSerie.StockName); StockLog.Write(line); StockLog.Write(e); } } } } } catch (System.Exception e) { StockLog.Write("Unable to parse intraday data for " + stockSerie.StockName); StockLog.Write(e); } }
private bool GenerateSumSerie(StockSerie stockSerie, StockSerie trinSerie, bool inverse) { StockDailyValue logValue = null; float sum = 0f; foreach (StockDailyValue dailyValue in trinSerie.Values) { sum += dailyValue.CLOSE; logValue = new StockDailyValue(stockSerie.StockName, sum, sum, sum, sum, 0, dailyValue.DATE); stockSerie.Add(logValue.DATE, logValue); logValue.Serie = stockSerie; } return true; }
private static bool ParseIntradayData(StockSerie stockSerie, string fileName) { bool res = false; try { using (StreamReader sr = new StreamReader(fileName)) { string line; while ((line = sr.ReadLine()) != null) { if (line.StartsWith("timezone")) break; } if (sr.EndOfStream) return false; string[] row = line.Split(new char[] { ':' }); string timeZone = row[1]; double gmtoffset = timeZone == "CEST" ? -32400 : 0; while ((line = sr.ReadLine()) != null) { if (line.StartsWith("gmtoffset")) break; } if (sr.EndOfStream) return false; row = line.Split(new char[] { ':' }); gmtoffset += double.Parse(row[1]); DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); gmtoffset -= (now - utcNow).TotalSeconds; while (!(line = sr.ReadLine()).StartsWith("range")) ; // First Range, read second offest for date calculation. row = line.Split(new char[] { ',', ':' }); DateTime startDate = new DateTime(int.Parse(row[1].Substring(0, 4)), int.Parse(row[1].Substring(4, 2)), int.Parse(row[1].Substring(6, 2))); // startDate = startDate.AddHours(9); long startTimeStamp = long.Parse(row[2]); while (!(line = sr.ReadLine()).StartsWith("volume")) ; while (!sr.EndOfStream) { line = sr.ReadLine(); row = line.Split(new char[] { ',' }); DateTime openDate = startDate; openDate = startDate.AddSeconds(long.Parse(row[0]) - startTimeStamp); openDate = startDate.AddSeconds(long.Parse(row[0]) - startTimeStamp - gmtoffset); if (!stockSerie.ContainsKey(openDate)) { StockDailyValue dailyValue = new StockDailyValue(stockSerie.StockName, float.Parse(row[4], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[1], usCulture), long.Parse(row[5]), openDate); stockSerie.Add(dailyValue.DATE, dailyValue); } } stockSerie.ClearBarDurationCache(); res = true; } } catch (System.Exception e) { StockLog.Write("Unable to parse intraday data for " + stockSerie.StockName); StockLog.Write(e); } return res; }
private static bool ParseIntradayData(StockSerie stockSerie, string fileName) { bool res = false; try { using (StreamReader sr = new StreamReader(fileName)) { while (!sr.EndOfStream) { string line = sr.ReadLine(); string[] row = line.Split(','); if (row.Length <2) continue; DateTime openDate; if (!DateTime.TryParse(row[0], out openDate)) continue; float value = float.Parse(row[1]); if (!stockSerie.ContainsKey(openDate)) { StockDailyValue dailyValue = new StockDailyValue(stockSerie.StockName, value, value, value, value, 0, openDate); stockSerie.Add(dailyValue.DATE, dailyValue); } } stockSerie.ClearBarDurationCache(); res = true; } } catch (System.Exception e) { StockLog.Write("Unable to parse intraday data for " + stockSerie.StockName); StockLog.Write(e); } return res; }
public static StockDailyValue ReadPCRFromCSVStream(StreamReader sr, string name) { StockDailyValue stockValue = null; try { string[] row = sr.ReadLine().Split(','); if (row.GetLength(0) == 5) { stockValue = new StockDailyValue( name, float.Parse(row[4], usCulture), float.Parse(row[4], usCulture), float.Parse(row[4], usCulture), float.Parse(row[4], usCulture), long.Parse(row[3], usCulture), DateTime.Parse(row[0], usCulture)); } } catch (System.Exception) { // Assume input is right, Ignore invalid lines } return stockValue; }
private static bool ParseIntradayData(StockSerie stockSerie, string fileName) { bool res = false; try { using (StreamReader sr = new StreamReader(fileName)) { string line = sr.ReadLine(); while (!(line = sr.ReadLine()).StartsWith("INTERVAL")) ; int interval; interval = int.Parse(line.Split('=')[1]); while (!(line = sr.ReadLine()).StartsWith("TIMEZONE_OFFSET")) ; int offset; offset = int.Parse(line.Split('=')[1]); string[] row; DateTime startDate = DateTime.Now; while (!sr.EndOfStream) { line = sr.ReadLine(); DateTime openDate = DateTime.Now; row = line.Split(new char[] { ',' }); if (line.StartsWith("a")) { // new day detected string startString = row[0].Replace("a", ""); double seconds = double.Parse(startString); startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(seconds).AddMinutes(offset); openDate = startDate; } else if (line.StartsWith("TIMEZONE_OFFSET")) { offset = int.Parse(line.Split('=')[1]); continue; } else { // just a new bar openDate = startDate.AddSeconds(long.Parse(row[0]) * interval); } if (!stockSerie.ContainsKey(openDate)) { StockDailyValue dailyValue = new StockDailyValue(stockSerie.StockName, float.Parse(row[4], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[1], usCulture), long.Parse(row[5]), openDate); stockSerie.Add(dailyValue.DATE, dailyValue); } } stockSerie.ClearBarDurationCache(); res = true; } } catch (System.Exception e) { StockLog.Write("Unable to parse intraday data for " + stockSerie.StockName); StockLog.Write(e); } return res; }
// Private methods private bool ParseVIXPCRatioCSV(StockSerie stockSerie, string fileName) { if (File.Exists(fileName)) { using (StreamReader sr = new StreamReader(fileName)) { try { StockDailyValue readValue = null; // Skip 2 first lines string name = "PCR.VIX"; sr.ReadLine(); sr.ReadLine(); while (sr.ReadLine().Contains("\"") && !sr.EndOfStream) ; while (!sr.EndOfStream) { readValue = null; string[] row = sr.ReadLine().Split(','); if (row.GetLength(0) == 5) { readValue = new StockDailyValue( name, float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), long.Parse(row[4], usCulture), DateTime.Parse(row[0], usCulture)); stockSerie.Add(readValue.DATE, readValue); } } } catch (System.Exception e) { StockLog.Write(e); return false; } } return true; } else { return false; } }
private bool ParseABCIntradayFile(StockSerie stockSerie, string fileName) { StockLog.Write("ParseABCIntradayFile: " + fileName); if (!File.Exists(fileName)) return false; using (StreamReader sr = new StreamReader(fileName, true)) { string line = sr.ReadLine(); while (!sr.EndOfStream) { string[] row = line.Split(';'); if (row[0] == stockSerie.ISIN) { if (DateTime.Parse(row[1]) == stockSerie.Keys.Last()) { return false; } StockDailyValue dailyValue = new StockDailyValue( stockSerie.StockName, float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), float.Parse(row[5], usCulture), long.Parse(row[6]), File.GetLastWriteTime(fileName)); stockSerie.Add(dailyValue.DATE, dailyValue); stockSerie.ClearBarDurationCache(); return true; } line = sr.ReadLine(); } } return false; }
public override bool LoadData(string rootFolder, StockSerie stockSerie) { if (finraSerie == null) { finraSerie = LoadFINRASerie(rootFolder + FOLDER + "\\FINRA_Bond_Breadth.xml"); } // Convert from StockFINRASerie to StockSerie var fields = stockSerie.StockName.Split('.'); StockDailyValue dailyValue = null; switch (fields[0]) { case "BOND_AD": switch (fields[1]) { case "ALL": break; case "IG": foreach (var val in finraSerie.InvestGrade) { float open = -1.0f + (float)val.Advances * 2.0f / (float)val.Total; dailyValue = new StockDailyValue(stockSerie.StockName, open, open, open, open, val.Volume, val.Date); stockSerie.Add(val.Date, dailyValue); } break; case "HY": foreach (var val in finraSerie.HighYield) { float open = -1.0f + (float)val.Advances * 2.0f / (float)val.Total; dailyValue = new StockDailyValue(stockSerie.StockName, open, open, open, open, val.Volume, val.Date); stockSerie.Add(val.Date, dailyValue); } break; } break; case "McClellan": switch (fields[1]) { case "ALL": break; case "IG": { var serie = StockDictionary.StockDictionarySingleton["BOND_AD.IG"]; if (!serie.Initialise()) return false; FloatSerie ema19 = serie.GetIndicator("EMA(19)").Series[0]; FloatSerie ema39 = serie.GetIndicator("EMA(39)").Series[0]; var diff = ema19 - ema39; int i = 0; foreach (var val in serie.Values) { float open = diff[i++]; dailyValue = new StockDailyValue(stockSerie.StockName, open, open, open, open, val.VOLUME, val.DATE); stockSerie.Add(val.DATE, dailyValue); } } break; case "HY": { var serie = StockDictionary.StockDictionarySingleton["BOND_AD.HY"]; if (!serie.Initialise()) return false; FloatSerie ema19 = serie.GetIndicator("EMA(19)").Series[0]; FloatSerie ema39 = serie.GetIndicator("EMA(39)").Series[0]; var diff = ema19 - ema39; int i = 0; foreach (var val in serie.Values) { float open = diff[i++]; dailyValue = new StockDailyValue(stockSerie.StockName, open, open, open, open, val.VOLUME, val.DATE); stockSerie.Add(val.DATE, dailyValue); } } break; } break; } return true; }
private bool ParseABCGroupCSVFile(string fileName, StockSerie.Groups group, bool intraday = false) { //StockLog.Write(fileName); if (!File.Exists(fileName)) return false; StockSerie stockSerie = null; using (StreamReader sr = new StreamReader(fileName, true)) { string line = sr.ReadLine(); string previousISIN = string.Empty; while (!sr.EndOfStream) { string[] row = line.Split(';'); if (previousISIN != row[0]) { stockSerie = stockDictionary.Values.FirstOrDefault(s => s.ISIN == row[0] && s.StockGroup == group); previousISIN = row[0]; } if (stockSerie != null) { DateTime date; if (intraday) { date = File.GetLastWriteTime(fileName); } else { date = DateTime.Parse(row[1]); } if (date.Year >= LOAD_START_YEAR) { if (!stockSerie.ContainsKey(date)) { StockDailyValue dailyValue = new StockDailyValue( stockSerie.StockName, float.Parse(row[2], frenchCulture), float.Parse(row[3], frenchCulture), float.Parse(row[4], frenchCulture), float.Parse(row[5], frenchCulture), long.Parse(row[6], frenchCulture), date); stockSerie.Add(dailyValue.DATE, dailyValue); } } else { return false; } } line = sr.ReadLine(); } } return true; }
protected StockDailyValue ReadMarketDataFromABCCSVStream(StreamReader sr, string stockName, bool useAdjusted) { StockDailyValue stockValue = null; try { // File format // ISIN,Date,Open,High,Low,Close,Volume // FR0000120404;02/01/12;19.735;20.03;19.45;19.94;418165 string line = sr.ReadLine().Trim(); if (string.IsNullOrEmpty(line) || line.StartsWith("<") || line.StartsWith("/")) return null; string[] row = line.Split(';'); stockValue = new StockDailyValue( stockName, float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), float.Parse(row[5], usCulture), long.Parse(row[6], usCulture), DateTime.Parse(row[1], frenchCulture)); } catch (System.Exception ex) { StockLog.Write(ex.Message); } return stockValue; }
protected virtual StockDailyValue ReadMarketDataFromCSVStream(StreamReader sr, string stockName, bool useAdjusted) { StockDailyValue stockValue = null; try { // File format // Date,Open,High,Low,Close,Volume,Adj Close (UpVolume, Tick, Uptick) // 2010-06-18,10435.00,10513.75,10379.60,10450.64,4555360000,10450.64 string[] row = sr.ReadLine().Split(','); switch (row.Length) { case 5: // Date,Open,High,Low,Close { DateTime day = DateTime.Parse(row[0], usCulture); stockValue = new StockDailyValue( stockName, float.Parse(row[1], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), 0, day); } break; case 6: // Date,Open,High,Low,Close,Volume { string[] dateFields = row[0].Split('/'); if (row[1] == "-" || row[2] == "-" || row[3] == "-" || row[4] == "-") return null; if (row[5] == "-") row[5] = "0"; DateTime day = DateTime.Parse(row[0]); // new DateTime(int.Parse(dateFields[2]), int.Parse(dateFields[0]), int.Parse(dateFields[1])); int index = row[5].IndexOf('.'); if (index > 0) { row[5] = row[5].Remove(index); } stockValue = new StockDailyValue( stockName, float.Parse(row[1], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), long.Parse(row[5], usCulture), day); } break; case 7: // Date,Open,High,Low,Close,Volume,Adj Close if (useAdjusted || row[4] != row[6]) { float close = float.Parse(row[4], usCulture); float adjClose = float.Parse(row[6], usCulture); float adjRatio = adjClose / close; stockValue = new StockDailyValue( stockName, float.Parse(row[1], usCulture) * adjRatio, float.Parse(row[2], usCulture) * adjRatio, float.Parse(row[3], usCulture) * adjRatio, adjClose, long.Parse(row[5], usCulture), DateTime.Parse(row[0], usCulture)); } else { stockValue = new StockDailyValue( stockName, float.Parse(row[1], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), long.Parse(row[5], usCulture), DateTime.Parse(row[0], usCulture)); } break; case 10: // Date,Open,High,Low,Close,Volume,Adj Close (UpVolume, Tick, Uptick) { stockValue = new StockDailyValue( stockName, float.Parse(row[1], usCulture), float.Parse(row[2], usCulture), float.Parse(row[3], usCulture), float.Parse(row[4], usCulture), long.Parse(row[5], usCulture), long.Parse(row[7], usCulture), int.Parse(row[8], usCulture), int.Parse(row[9], usCulture), DateTime.Parse(row[0], usCulture)); } break; } } catch (System.Exception ex) { StockLog.Write(ex.Message); // Assume input is right, Ignore invalid lines } return stockValue; }
private bool ParseCBOEIndexCSV(StockSerie stockSerie, string fileName) { if (File.Exists(fileName)) { using (StreamReader sr = new StreamReader(fileName)) { try { StockDailyValue readValue = null; sr.ReadLine(); // Skip the first line sr.ReadLine(); // Skip the second line while (!sr.EndOfStream) { // File format // Date,Close // 10-May-07,27.09 string[] row = sr.ReadLine().Split(','); if (row.GetLength(0) == 2 && row[1] != "") { readValue = new StockDailyValue( stockSerie.StockName, float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), 100, DateTime.Parse(row[0], usCulture)); if (readValue != null) { stockSerie.Add(readValue.DATE, readValue); } } } } catch (System.Exception e) { StockLog.Write(e); return false; } } return true; } else { return false; } }
private bool ParseBullBearRatio(StockSerie stockSerie, string fileName) { // Read new downloaded values StockDailyValue bearBullRatioValue = null; DateTime date; float bearish = 0; float bullish = 0; float neutral = 0; float ratio = 0; string line = string.Empty; bool res = false; try { using (StreamReader sr = new StreamReader(fileName, true)) { // File format // Date,Bullish,Neutral,Bearish // 9-11-87,50.0,23.0,27.0 sr.ReadLine(); // Skip first line while (!sr.EndOfStream) { line = sr.ReadLine(); if (string.IsNullOrWhiteSpace(line)) { continue; } string[] row = line.Replace(":","").Split(new []{',',':','\t'}); date = DateTime.Parse(row[0], usCulture); if (row[1].Contains("%")) { bullish = float.Parse(row[1].TrimEnd(percent), usCulture) / 100f; neutral = float.Parse(row[2].TrimEnd(percent), usCulture) / 100f; bearish = float.Parse(row[3].TrimEnd(percent), usCulture) / 100f; } else { bullish = float.Parse(row[1], usCulture); neutral = float.Parse(row[2], usCulture); bearish = float.Parse(row[3], usCulture); } ratio = bearish / bullish; bearBullRatioValue = new StockDailyValue(bearBullRatioName, ratio, ratio, ratio, ratio, 0, date); stockSerie.Add(bearBullRatioValue.DATE, bearBullRatioValue); bearBullRatioValue.Serie = stockSerie; } } res = true; } catch (System.Exception e) { StockLog.Write("Failed to parse Bull/Bear ratio file: " + e.Message + "\r\r" + line); } return res; }
private bool ParsePCRatioCSV(StockSerie stockSerie, string fileName) { if (File.Exists(fileName)) { using (StreamReader sr = new StreamReader(fileName)) { StockDailyValue readValue = null; while (!sr.ReadLine().EndsWith("P/C Ratio") && !sr.EndOfStream) ; while (!sr.EndOfStream) { try { string[] row = sr.ReadLine().Split(','); float ratio = float.Parse(row[4], usCulture); //ratio = (float)Math.Log10(ratio); //if (inverse) ratio = -ratio; readValue = new StockDailyValue( stockSerie.StockName, ratio, ratio, ratio, ratio, long.Parse(row[3], usCulture), DateTime.Parse(row[0], usCulture)); if (readValue != null && !stockSerie.ContainsKey(readValue.DATE)) { stockSerie.Add(readValue.DATE, readValue); } } catch (System.Exception e) { StockLog.Write(e); return false; } } } return true; } else { return false; } }
private bool GenerateBullBearLogRatio(StockSerie stockSerie, bool inverse) { StockSerie ratioSerie = AAIIDataProvider.stockDictionary[bearBullRatioName]; StockDailyValue bearBullLogRatioValue = null; float ratio; foreach (StockDailyValue dailyValue in ratioSerie.Values) { ratio = (float) Math.Log10(dailyValue.CLOSE); if (inverse) ratio = -ratio; bearBullLogRatioValue = new StockDailyValue(bearBullRatioName, ratio, ratio, ratio, ratio, 0, dailyValue.DATE); stockSerie.Add(bearBullLogRatioValue.DATE, bearBullLogRatioValue); bearBullLogRatioValue.Serie = stockSerie; } return true; }
private bool ParseRydexData(StockSerie stockSerie, string fileName) { if (File.Exists(fileName)) { using (StreamReader sr = new StreamReader(fileName)) { StockDailyValue readValue = null; string line; // Skip 2 first lines while (!sr.EndOfStream && !(line = sr.ReadLine()).Contains("Date")) ; while (!sr.EndOfStream) { readValue = null; line = sr.ReadLine(); if (string.IsNullOrEmpty(line)) { break; } line = line.Replace("\",\"", ";"); line = line.Replace("\"", ""); string[] row = line.Split(';'); if (row[2] == "N/A" || row[3] == "N/A" || row[1] == "AM") continue; float value = float.Parse(row[3], usCulture) / float.Parse(row[2], usCulture); readValue = new StockDailyValue( stockSerie.StockName, value, value, value, value, 0, DateTime.Parse(row[0], usCulture)); if (!stockSerie.ContainsKey(readValue.DATE)) { stockSerie.Add(readValue.DATE, readValue); } } } return true; } return false; }
private bool GenerateLogSerie(StockSerie stockSerie, StockSerie ratioSerie, bool inverse) { StockDailyValue logValue = null; float ratio = 0; foreach (StockDailyValue dailyValue in ratioSerie.Values) { if (dailyValue.CLOSE > 0f) { ratio = (float)Math.Log10(dailyValue.CLOSE); if (inverse) ratio = -ratio; } logValue = new StockDailyValue(stockSerie.StockName, ratio, ratio, ratio, ratio, 0, dailyValue.DATE); stockSerie.Add(logValue.DATE, logValue); logValue.Serie = stockSerie; } return true; }
private bool ParseCOT(StockSerie stockSerie, string fileName) { StockLog.Write("ParseCOT: " + stockSerie.StockName + " from file: " + fileName); string line = string.Empty; bool res = false; try { int cotLongIndex = 10; int cotShortIndex = 11; int cotOpenInterestIndex = 6; using (StreamReader sr = new StreamReader(fileName)) { StockDailyValue readValue = null; int endOfNameIndex = 0; string cotSerieName = string.Empty; DateTime cotDate; float cotValue = 0.0f; string[] row; sr.ReadLine(); // Skip header line while (!sr.EndOfStream) { line = sr.ReadLine().Replace("\"", ""); if (line == string.Empty) { continue; } res = true; endOfNameIndex = line.IndexOf(","); cotSerieName = line.Substring(0, endOfNameIndex); if (cotSerieName.Contains(" - ")) { cotSerieName = cotSerieName.Substring(0, cotSerieName.IndexOf(" - ")); } cotSerieName += "_COT"; if (stockSerie.StockName != cotSerieName) { continue; } row = line.Substring(endOfNameIndex + 2).Split(','); cotDate = DateTime.Parse(row[1], usCulture); if (!stockSerie.Keys.Contains(cotDate)) { float cotLong = float.Parse(row[cotLongIndex]); float cotShort = float.Parse(row[cotShortIndex]); float cotOpenInterest = float.Parse(row[cotOpenInterestIndex]); if (cotOpenInterest != 0.0f) { cotValue = 100.0f * (cotLong - cotShort) / cotOpenInterest; } else { cotValue = 0.0f; } readValue = new StockDailyValue(cotSerieName, cotValue, cotValue, cotValue, cotValue, 0, cotDate); stockSerie.Add(readValue.DATE, readValue); readValue.Serie = stockSerie; } else { StockLog.Write("COT for " + cotSerieName + " already added, data for" + row[3] + " exchange ignored"); } } } } catch (System.Exception e) { StockLog.Write(e.Message + "Failed to parse COT file" + "\r\r" + line); } return res; }
public static StockDailyValue ReadCBOEIndexDataFromCSVStream(StreamReader sr, string name) { StockDailyValue stockValue = null; try { // File format // Date,Close // 10-May-07,27.09 string[] row = sr.ReadLine().Split(','); if (row.GetLength(0) == 2 && row[1] != "") { stockValue = new StockDailyValue( name, float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), float.Parse(row[1], usCulture), 100, DateTime.Parse(row[0], usCulture)); } } catch (System.Exception) { // Assume input is right, Ignore invalid lines } return stockValue; }