/// <summary> /// Save the dataset to a CSV file. /// </summary> /// <param name="targetFile">The target file.</param> /// <param name="format">The format to use.</param> /// <param name="set">The data set.</param> public static void SaveCSV(FileInfo targetFile, CSVFormat format, IMLDataSet set) { try { var file = new StreamWriter(targetFile.ToString()); foreach (IMLDataPair data in set) { var line = new StringBuilder(); for (int i = 0; i < data.Input.Count; i++) { double d = data.Input[i]; BasicFile.AppendSeparator(line, format); line.Append(format.Format(d, EncogFramework.DefaultPrecision)); } for (int i = 0; i < data.Ideal.Count; i++) { double d = data.Ideal[i]; BasicFile.AppendSeparator(line, format); line.Append(format.Format(d, EncogFramework.DefaultPrecision)); } file.WriteLine(line); } file.Close(); } catch (IOException ex) { throw new EncogError(ex); } }
/// <summary> /// Load financial data. /// </summary> /// <param name="ticker">The ticker symbol.</param> /// <param name="output">The output file.</param> /// <param name="outputFormat">The output format.</param> /// <param name="from">Starting date.</param> /// <param name="to">Ending date.</param> public void LoadAllData(String ticker, String output, CSVFormat outputFormat, DateTime from, DateTime to) { try { Uri urlData = BuildURL(ticker, from, to); WebRequest httpData = WebRequest.Create(urlData); var responseData = (HttpWebResponse)httpData.GetResponse(); if (responseData != null) { Stream istreamData = responseData.GetResponseStream(); var csvData = new ReadCSV(istreamData, true, CSVFormat.English); TextWriter tw = new StreamWriter(output); tw.WriteLine("date,time,open price,high price,low price,close price,volume,adjusted price"); while (csvData.Next()) { DateTime date = csvData.GetDate("date"); double adjustedClose = csvData.GetDouble("adj close"); double open = csvData.GetDouble("open"); double close = csvData.GetDouble("close"); double high = csvData.GetDouble("high"); double low = csvData.GetDouble("low"); var volume = (long)csvData.GetDouble("volume"); var line = new StringBuilder(); line.Append(NumericDateUtil.DateTime2Long(date)); line.Append(outputFormat.Separator); line.Append(NumericDateUtil.Time2Int(date)); line.Append(outputFormat.Separator); line.Append(outputFormat.Format(open, Precision)); line.Append(outputFormat.Separator); line.Append(outputFormat.Format(high, Precision)); line.Append(outputFormat.Separator); line.Append(outputFormat.Format(low, Precision)); line.Append(outputFormat.Separator); line.Append(outputFormat.Format(close, Precision)); line.Append(outputFormat.Separator); line.Append(volume); line.Append(outputFormat.Separator); line.Append(outputFormat.Format(adjustedClose, Precision)); tw.WriteLine(line.ToString()); } tw.Close(); } } catch (WebException ex) { throw new QuantError(ex); } }
/// <summary> /// Save the specified matrix. /// </summary> /// <param name="matrix">The matrix to save.</param> /// <param name="xmlOut">The XML writer.</param> public static void SaveMatrix(Matrix matrix, WriteXML xmlOut) { xmlOut.AddAttribute(PersistorUtil.ATTRIBUTE_MATRIX_ROWS, "" + matrix.Rows); xmlOut.AddAttribute(PersistorUtil.ATTRIBUTE_MATRIX_COLS, "" + matrix.Cols); xmlOut.BeginTag("Matrix"); CSVFormat format = CSVFormat.EG_FORMAT; for (int row = 0; row < matrix.Rows; row++) { StringBuilder builder = new StringBuilder(); for (int col = 0; col < matrix.Cols; col++) { if (col > 0) { builder.Append(','); } double d = matrix[row, col]; builder.Append(format.Format(d, 20)); } xmlOut.BeginTag(PersistorUtil.ROW); xmlOut.AddText(builder.ToString()); xmlOut.EndTag(); } xmlOut.EndTag(); }
/// <summary> /// Construct a loaded row from an IMLData. /// </summary> /// <param name="format">The format to store the numbers in.</param> /// <param name="data">The data to use.</param> /// <param name="extra">The extra positions to allocate.</param> public LoadedRow(CSVFormat format, IMLData data, int extra) { int count = data.Count; _data = new String[count + extra]; for (int i = 0; i < count; i++) { _data[i] = format.Format(data[i], 5); } }
/// <summary> /// Construct a loaded row from an array. /// </summary> /// <param name="format">The format to store the numbers in.</param> /// <param name="data">The data to use.</param> /// <param name="extra">The extra positions to allocate.</param> public LoadedRow(CSVFormat format, double[] data, int extra) { int count = data.Length; _data = new String[count + extra]; for (int i = 0; i < count; i++) { _data[i] = format.Format(data[i], 5); } }
/// <summary> /// Store a column. /// </summary> /// <param name="name">The name of the column.</param> /// <param name="d">The value to store.</param> public void StoreColumn(String name, double d) { if (line == null) { throw new EncogError("Must call BeginBar first."); } if (line.Length > 0) { line.Append(format.Separator); } line.Append(format.Format(d, Percision)); if (!columnsDefined) { columns.Add(name); } }