private void ProcessData(string folder, IQFeedRequest input, StreamReader streamReader)
        {
            var index             = 0;
            var accumulationIndex = 0;

            var data = new List <string>();

            var line = streamReader.ReadLine();

            if (!CheckContent(line))
            {
                return;
            }
            data.Add(line);
            //  _logger.Info("1");
            try
            {
                var streamWriter = GetWriterToFile(folder, input.CurrentSymbol);


                while (!streamReader.EndOfStream)
                {
                    line = streamReader.ReadLine();

                    if (!CheckEndMessage(line))
                    {
                        data.Add(line);
                        index++;

                        if (index == 100000)
                        {
                            accumulationIndex = accumulationIndex + index;
                            _saver.SaveData(input, ref streamWriter, data);

                            _logger.Info(string.Format("{0} entries of data processed", index));
                            data.Clear();
                            index = 0;
                        }
                    }
                    else
                    {
                        break;
                    }
                }

                _saver.SaveData(input, ref streamWriter, data);
                data.Clear();
                streamWriter.Close();
                // _logger.Info("2");
            }
            catch (UnauthorizedAccessException ex)
            {
            }
        }
        private IRequest LoadRequestParameters()
        {
            IRequest request = new IQFeedRequest();

            request.Symbols       = GetTickersList();
            request.CurrentSymbol = String.Empty;

            if (rbDays.Checked)
            {
                request.TimeFrameType = "Days";
            }

            if (rbInterval.Checked)
            {
                request.TimeFrameType = "Interval";
            }

            request.TimeFrameName = cbTimeframe.SelectedItem.ToString();

            request.BeginDate = dtpBeginDate.Value.ToString("yyyyMMdd");
            request.EndDate   = dtpEndDate.Value.ToString("yyyyMMdd");
            request.BeginTime = dtpBeginTime.Value.ToString("HHmmss");
            request.EndTime   = dtpEndTime.Value.ToString("HHmmss");


            request.Days = tbAmountOfDays.Text;

            int interval;

            Int32.TryParse(cbTimeframeIntraday.SelectedItem.ToString(), out interval);
            request.Interval = interval;

            request.BeginFilterTime = "";
            request.EndFilterTime   = "";



            request.DataDirection     = "1";
            request.DatapointsPerSend = "";
            request.MaxDatapoints     = "";
            request.RequestID         = "";

            return(request);
        }
Esempio n. 3
0
        public void SaveData(IQFeedRequest request, ref StreamWriter writer, IList <string> data)
        {
            if (data.Count == 0 || data[0].Substring(0, 1) == "!")
            {
                return;
            }

            if (string.IsNullOrEmpty(_parameters.TimeFormat))
            {
                throw new ArgumentNullException("timeFormat");
            }
            DateTimeFormatInfo DateFormat = GetDateFormat();

            if (string.IsNullOrEmpty(_parameters.DateFormat))
            {
                throw new ArgumentNullException("dateFormat");
            }
            DateTimeFormatInfo TimeFormat = GetTimeFormat();


            // using (writer)
            //{
            foreach (var d in data)
            {
                var line = d.Split(',');

                IQFeedResponse response;
                string         dateTime;

                switch (request.TimeFrame)
                {
                //"HTD"
                //Request ID. Text.
                //Time Stamp. Text. Example: 2008-09-01 16:00:01
                //Last. Decimal. Example: 146.2587
                //Last Size. Integer. Example: 100
                //Total Volume. Integer. Example: 1285001
                //Bid. Decimal. Example: 146.2400
                //Ask. Decimal. Example: 146.2600
                //TickID. Integer. Example: 6813524
                //Bid Size. Integer. Example: 100
                //Ask Size. Integer. Example: 100
                //Basis For Last. Character. Current Possible values are 'C' (normal trade) or 'E' (extended trade).
                case "Tick Days":
                    response = _responseHelper.ParseTickMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line,
                                                             _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Last + _dlm +
                                     response.LastSize + _dlm +
                                     response.Bid + _dlm +
                                     response.Ask + _dlm +
                                     response.BidSize + _dlm +
                                     response.AskSize + _dlm +
                                     response.TickId + _dlm +
                                     response.TradeType + _dlm);
                    break;

                //"HTT"
                //Request ID. Text.
                //Time Stamp. Text. Example: 2008-09-01 16:00:01
                //Last. Decimal. Example: 146.2587
                //Last Size. Integer. Example: 100
                //Total Volume. Integer. Example: 1285001
                //Bid. Decimal. Example: 146.2400
                //Ask. Decimal. Example: 146.2600
                //TickID. Integer. Example: 6813524
                //Bid Size. Integer. Example: 100
                //Ask Size. Integer. Example: 100
                //Basis For Last. Character. Current Possible values are 'C' (normal trade) or 'E' (extended trade).
                case "Tick Interval":
                    response = _responseHelper.ParseTickMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter, DateFormat, TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Last + _dlm +
                                     response.LastSize + _dlm +
                                     response.Bid + _dlm +
                                     response.Ask + _dlm +
                                     response.BidSize + _dlm +
                                     response.AskSize + _dlm +
                                     response.TickId + _dlm +
                                     response.TradeType + _dlm);
                    break;

                //"HID"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS	Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Total Volume.	Integer. Example: 1285001
                //Period Volume. Integer. Example: 1285
                case "Intraday Days":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm);
                    break;

                //"HIT"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS	Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Total Volume.	Integer. Example: 1285001
                //Period Volume. Integer. Example: 1285
                case "Intraday Interval":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm);
                    break;

                //"HDX"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS. Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Period Volume. Integer. Example: 1285001
                //Open Interest. Integer. Example: 128
                case "Daily Days":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm +
                                     response.OpenInterest + _dlm);
                    break;

                //"HDT"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS. Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Period Volume. Integer. Example: 1285001
                //Open Interest. Integer. Example: 128
                case "Daily Interval":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm +
                                     response.OpenInterest + _dlm);
                    break;

                //"HWX"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS. Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Period Volume. Integer. Example: 1285001
                //Open Interest. Integer. Example: 128
                case "Weekly Days":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm +
                                     response.OpenInterest + _dlm);
                    break;

                //"HMX"
                //Request ID. Text.
                //Time Stamp. CCYY-MM-DD HH:MM:SS. Example: 2008-09-01 16:00:01
                //High. Decimal. Example: 146.2587
                //Low. Decimal. Example: 145.2587
                //Open. Decimal. Example: 146.2587
                //Close. Decimal. Example: 145.2587
                //Period Volume. Integer. Example: 1285001
                //Open Interest. Integer. Example: 128
                case "Monthly Days":
                    response = _responseHelper.ParseMarketData(line);
                    dateTime = _responseHelper.ParseDateTime(line, _parameters.DateTimeDelimeter,
                                                             DateFormat,
                                                             TimeFormat);

                    writer.WriteLine(dateTime + _dlm +
                                     response.Open + _dlm +
                                     response.High + _dlm +
                                     response.Low + _dlm +
                                     response.Close + _dlm +
                                     response.Volume + _dlm +
                                     response.OpenInterest + _dlm);
                    break;
                }
            }
            //}
            writer.Flush();
        }
        public void GetData(string request, string folder, Parameters programParameters, IQFeedRequest input, NetworkStream network)
        {
            _saver.SetProgramParameters(programParameters);


            SendRequest("S,SET PROTOCOL,5.0", network);
            //    SendRequest("SBF,s,MSFT,t,2 9", network);

            SendRequest(request, network);
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }
            if (string.IsNullOrEmpty(request))
            {
                throw new ArgumentNullException("request");
            }
            if (string.IsNullOrEmpty(folder))
            {
                throw new ArgumentNullException("folder");
            }

            using (StreamReader lstreamReader = new StreamReader(network))

            {
                var line = lstreamReader.ReadLine();
                Check50Protocol(line);

                ProcessData(folder, input, lstreamReader);

                lstreamReader.Close();
            }
        }