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); }
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(); } }