Beispiel #1
0
        /// <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);
        }