/// <summary> /// место работы потока создающего новый файл /// </summary> private void WorkerSpace() { if (string.IsNullOrWhiteSpace(_sourceFile)) { SendNewLogMessage(OsLocalization.Converter.Message2, LogMessageType.System); return; } else if (string.IsNullOrWhiteSpace(_exitFile)) { SendNewLogMessage(OsLocalization.Converter.Message3, LogMessageType.System); return; } if (!File.Exists(_exitFile)) { File.Create(_exitFile); } StreamReader reader = new StreamReader(_sourceFile); SendNewLogMessage(OsLocalization.Converter.Message4, LogMessageType.System); SendNewLogMessage(OsLocalization.Converter.Message5, LogMessageType.System); List <Trade> trades = new List <Trade>(); int currentWeek = 0; bool isNotFirstTime = false; try { while (!reader.EndOfStream) { Trade trade = new Trade(); trade.SetTradeFromString(reader.ReadLine()); int partMonth = 1; if (trade.Time.Day <= 10) { partMonth = 1; } else if (trade.Time.Day > 10 && trade.Time.Day < 20) { partMonth = 2; } else if (trade.Time.Day >= 20) { partMonth = 3; } if (currentWeek == 0) { SendNewLogMessage( OsLocalization.Converter.Message6 + partMonth + OsLocalization.Converter.Message7 + trade.Time.Month, LogMessageType.System); currentWeek = partMonth; } if (partMonth != currentWeek || reader.EndOfStream) { SendNewLogMessage(OsLocalization.Converter.Message6 + currentWeek + OsLocalization.Converter.Message7 + trade.Time.Month + OsLocalization.Converter.Message8, LogMessageType.System); TimeFrameBuilder timeFrameBuilder = new TimeFrameBuilder(); timeFrameBuilder.TimeFrame = TimeFrame; CandleSeries series = new CandleSeries(timeFrameBuilder, new Security() { Name = "Unknown" }, StartProgram.IsOsConverter); series.IsStarted = true; series.SetNewTicks(trades); List <Candle> candles = series.CandlesAll; if (candles == null) { continue; } StreamWriter writer = new StreamWriter(_exitFile, isNotFirstTime); for (int i = 0; i < candles.Count; i++) { writer.WriteLine(candles[i].StringToSave); } writer.Close(); SendNewLogMessage(OsLocalization.Converter.Message9, LogMessageType.System); isNotFirstTime = true; trades = new List <Trade>(); series.Clear(); currentWeek = partMonth; SendNewLogMessage(OsLocalization.Converter.Message6 + partMonth + OsLocalization.Converter.Message7 + trade.Time.Month, LogMessageType.System); } else { trades.Add(trade); } } } catch (Exception error) { SendNewLogMessage(OsLocalization.Converter.Message10, LogMessageType.System); SendNewLogMessage(error.ToString(), LogMessageType.Error); reader.Close(); return; } reader.Close(); SendNewLogMessage(OsLocalization.Converter.Message9, LogMessageType.System); }
/// <summary> /// место работы потока создающего новый файл /// </summary> private void WorkerSpace() { if (string.IsNullOrWhiteSpace(_sourceFile)) { SendNewLogMessage(" Процедура конвертации не может быть запущеана. Не указан файл с исходными данными", LogMessageType.System); return; } else if (string.IsNullOrWhiteSpace(_exitFile)) { SendNewLogMessage("Процедура конвертации не может быть запущеана. Не указан файл с выходными данными", LogMessageType.System); return; } if (!File.Exists(_exitFile)) { File.Create(_exitFile); } StreamReader reader = new StreamReader(_sourceFile); SendNewLogMessage("Процедура конвертации начата", LogMessageType.System); SendNewLogMessage("Загружаем тики из файла", LogMessageType.System); List <Trade> trades = new List <Trade>(); int currentWeek = 0; bool isNotFirstTime = false; try { while (!reader.EndOfStream) { Trade trade = new Trade(); trade.SetTradeFromString(reader.ReadLine()); int partMonth = 1; if (trade.Time.Day <= 10) { partMonth = 1; } else if (trade.Time.Day > 10 && trade.Time.Day < 20) { partMonth = 2; } else if (trade.Time.Day >= 20) { partMonth = 3; } if (currentWeek == 0) { SendNewLogMessage("Грузим неделю № " + partMonth + " Месяц " + trade.Time.Month, LogMessageType.System); currentWeek = partMonth; } if (partMonth != currentWeek || reader.EndOfStream) { SendNewLogMessage("Неделя " + currentWeek + " Месяц " + trade.Time.Month + " подгружен. Создаём серии свечек", LogMessageType.System); TimeFrameBuilder timeFrameBuilder = new TimeFrameBuilder(); timeFrameBuilder.TimeFrame = TimeFrame; CandleSeries series = new CandleSeries(timeFrameBuilder, new Security() { Name = "Unknown" }); series.IsStarted = true; series.SetNewTicks(trades); List <Candle> candles = series.CandlesAll; if (candles == null) { continue; } StreamWriter writer = new StreamWriter(_exitFile, isNotFirstTime); for (int i = 0; i < candles.Count; i++) { writer.WriteLine(candles[i].StringToSave); } writer.Close(); SendNewLogMessage("Сохранение завершено", LogMessageType.System); isNotFirstTime = true; trades = new List <Trade>(); series.Clear(); currentWeek = partMonth; SendNewLogMessage("Грузим неделю № " + partMonth + " Месяц " + trade.Time.Month, LogMessageType.System); } else { trades.Add(trade); } } } catch (Exception error) { SendNewLogMessage("Скачивание прервано. В файле данных не верный формат", LogMessageType.System); SendNewLogMessage(error.ToString(), LogMessageType.Error); reader.Close(); return; } reader.Close(); SendNewLogMessage("Сохранение завершено", LogMessageType.System); }