/// <summary> /// Load history data from file /// </summary> /// <param name="filePath"></param> /// <returns></returns> public StockDataSeries LoadFromFile(string fileName) { string filePath = string.Concat(TradeRobotics.DataProviders.DataContext.DataDirectory, fileName); DataSeries = new StockDataSeries(); var dataFileInfo = GetDataFileInfo(filePath); bool isQuotes = dataFileInfo.Item3; DataSeries.Symbol = dataFileInfo.Item1; // Load as bars if (!isQuotes) { DataSeries = LoadBars(fileName); } // Load as quotes else { DataSeries.Quotes = LoadQuotesFromFile(fileName); LoadDepth(this.DataSeries.Quotes.Last().Time); } return(DataSeries); }
/// <summary> /// Get bars from file /// </summary> /// <param name="symbol"></param> /// <param name="period"></param> public StockDataSeries LoadBars(string filePath) { // Load from file //string filePath = string.Format(historyFileName, symbol, period); Tuple <string, int, bool> dataInfo = GetDataFileInfo(filePath); filePath = string.Concat(DataContext.DataDirectory, filePath); string[] lines = File.ReadAllLines(filePath); int i = 0; // Init quik bar DataSeries = new StockDataSeries(); DataSeries.Symbol = dataInfo.Item1; DataSeries.Period = dataInfo.Item2;; // Add bars foreach (string line in lines) { // First line is a header, no parse if (i++ == 0) { continue; } Bar bar = ConverterHelper.LoadBar(line); DataSeries.Bars.Add(bar); DataSeries.Times.Add(bar.Time); DataSeries.Open.Add(bar.Open); DataSeries.Low.Add(bar.Low); DataSeries.High.Add(bar.High); DataSeries.Close.Add(bar.Close); DataSeries.Volume.Add(bar.Volume); } return(DataSeries); }
/// <summary> /// ctor /// </summary> /// <param name="dataSeries">updated data series</param> /// <param name="i">bar index</param> public TickEventArgs(StockDataSeries dataSeries, int i) { DataSeries = dataSeries; LastBarIndex = i; }