private void doFetchNews(TCLIService.Client client, TSessionHandle sessHandle, DateTime QueryDate, bool lastQuery = false) { #region Construct Query double st = StartTime.TotalMilliseconds; double et = EndTime.TotalMilliseconds; var q = string.Format("select * from {1}.news where day={0:yyyyMMdd}", QueryDate, db); string symbolArry = ""; if (Symbols != null && Symbols.Count() < 400) { foreach (string s in Symbols) { symbolArry = symbolArry + "','" + s; } symbolArry = "(" + symbolArry.Remove(0, 2) + "')"; q = q + " and symbol in " + symbolArry; } if (StartTime.TotalMilliseconds != 0) { q = q + " and msofday >= " + st.ToString(); } if (EndTime.TotalMilliseconds != 0) { q = q + " and msofday <= " + et.ToString(); } // q = q + " order by timestamp limit " + Maxrows; #endregion TExecuteStatementReq execReq = new TExecuteStatementReq { SessionHandle = sessHandle, Statement = q }; var execResp = client.ExecuteStatement(execReq); if (execResp.Status.StatusCode == TStatusCode.SUCCESS_STATUS || execResp.Status.StatusCode == TStatusCode.SUCCESS_WITH_INFO_STATUS) { #region Process Results var stmtHandle = execResp.OperationHandle; var fetchReq = new TFetchResultsReq { OperationHandle = stmtHandle, Orientation = TFetchOrientation.FETCH_NEXT, MaxRows = Maxrows }; var bMore = false; var stshow = true; var stfetchshow = true; double fetchstart = 0.0; do { if (_cancellationSource.Token.IsCancellationRequested) { return; } var resultsResp = new TFetchResultsResp(); if (stshow) { var stbegin = DateTime.Now.TimeOfDay.TotalMilliseconds; resultsResp = client.FetchResults(fetchReq); var stend = DateTime.Now.TimeOfDay.TotalMilliseconds; Console.WriteLine("Marketdata1 running query time: " + ((stend - stbegin) / 1000.0).ToString()); stshow = false; } else { resultsResp = client.FetchResults(fetchReq); } var resultSet = resultsResp.Results; bMore = resultsResp.HasMoreRows; if (stfetchshow) { fetchstart = DateTime.Now.TimeOfDay.TotalMilliseconds; stfetchshow = false; } foreach (var row in resultSet.Rows) { bool symExi = false; string str = row.ColVals[1].StringVal.Value; foreach (var sym in Symbols) { if (str == sym || Symbols.Count() < 400) { symExi = true; break; } } if (symExi) { TimeSpan t = TimeSpan.FromMilliseconds(row.ColVals[2].I32Val.Value); var data = new Data { type = Data.DataType.NEWS, news = new API.News { Symbol = row.ColVals[1].StringVal.Value, Day = DateTime.ParseExact(row.ColVals[9].I32Val.Value.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture), Seqno = (uint)row.ColVals[0].I32Val.Value, Category=row.ColVals[3].StringVal.Value, Source=row.ColVals[4].StringVal.Value, Headline=Regex.Replace(row.ColVals[5].StringVal.Value,"\"",""), Resourceid=row.ColVals[6].StringVal.Value, Story = Regex.Replace(row.ColVals[7].StringVal.Value, "\"", ""), Tags = Regex.Replace(row.ColVals[8].StringVal.Value, "\"", ""), Msofday = t } }; Observer.OnNext(data); // notify observer... } } fetchReq.Orientation = TFetchOrientation.FETCH_NEXT; Observer.Notify((decimal)resultsResp.Results.Rows.Count); /// send a report of the pct of job completed... } while (bMore); // We're fetching 100 at a time. Console.WriteLine("Marketdata1 fetch data time: " + ((DateTime.Now.TimeOfDay.TotalMilliseconds - fetchstart) / 1000.0).ToString()); if (lastQuery) { Observer.OnCompleted(); // we're done } #endregion } else { Observer.OnError(new Exception(string.Format("{0}: {1}", execResp.Status.ErrorCode, execResp.Status.ErrorMessage))); } }
private void doFetchTradeNo(TCLIService.Client client, TSessionHandle sessHandle, DateTime StartDate,DateTime EndDate) { #region Construct Query double st = StartTime.TotalMilliseconds; double et = EndTime.TotalMilliseconds; var q = string.Format("select * from {1}.trades where day >= {0:yyyyMMdd} and day <= {2:yyyyMMdd}", StartDate, db , EndDate); string symbolArry = ""; if (Symbols != null) { foreach (string s in Symbols) { symbolArry = symbolArry + "','" + s; } symbolArry = "(" + symbolArry.Remove(0, 2) + "')"; q = q + " and symbol in " + symbolArry; } if (StartTime.TotalMilliseconds != 0) { q = q + " and time >=" + st.ToString(); } if (EndTime.TotalMilliseconds != 0) { q = q + " and time <=" + et.ToString(); } q = q + " order by day,seqno limit " + Maxrows; #endregion TExecuteStatementReq execReq = new TExecuteStatementReq { SessionHandle = sessHandle, Statement = q }; var execResp = client.ExecuteStatement(execReq); if (execResp.Status.StatusCode == TStatusCode.SUCCESS_STATUS || execResp.Status.StatusCode == TStatusCode.SUCCESS_WITH_INFO_STATUS) { #region Process Results var stmtHandle = execResp.OperationHandle; var fetchReq = new TFetchResultsReq { OperationHandle = stmtHandle, Orientation = TFetchOrientation.FETCH_NEXT, MaxRows = Maxrows }; var bMore = false; var stshow = true; var stfetchshow = true; double fetchstart = 0.0; do { if (_cancellationSource.Token.IsCancellationRequested) { return; } var resultsResp = new TFetchResultsResp(); if (stshow) { var stbegin = DateTime.Now.TimeOfDay.TotalMilliseconds; resultsResp = client.FetchResults(fetchReq); var stend = DateTime.Now.TimeOfDay.TotalMilliseconds; Console.WriteLine("Marketdata1 running query time: " + ((stend - stbegin) / 1000.0).ToString()); stshow = false; } else { resultsResp = client.FetchResults(fetchReq); } var resultSet = resultsResp.Results; bMore = resultsResp.HasMoreRows; if (stfetchshow) { fetchstart = DateTime.Now.TimeOfDay.TotalMilliseconds; stfetchshow = false; } foreach (var row in resultSet.Rows) { TimeSpan t = TimeSpan.FromMilliseconds(row.ColVals[16].I32Val.Value); var data = new Data { type = Data.DataType.TRADE, trade = new API.Tick { Symbol = row.ColVals[2].StringVal.Value, Date = DateTime.ParseExact(row.ColVals[19].I32Val.Value.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture), Price = (decimal)row.ColVals[3].DoubleVal.Value, Size = (uint)row.ColVals[7].I32Val.Value, Open = (decimal)row.ColVals[9].DoubleVal.Value, High = (decimal)row.ColVals[10].DoubleVal.Value, Low = (decimal)row.ColVals[11].DoubleVal.Value, Last = (decimal)row.ColVals[12].DoubleVal.Value, TotalVolume = (ulong)row.ColVals[14].I64Val.Value, BestBidSize = (uint)row.ColVals[0].I32Val.Value, Time = t } }; Observer.OnNext(data); // notify observer... } fetchReq.Orientation = TFetchOrientation.FETCH_NEXT; Observer.Notify((decimal)resultsResp.Results.Rows.Count); /// send a report of the pct of job completed... } while (bMore); // We're fetching 100 at a time. Console.WriteLine("Marketdata1 fetch data time: " + ((DateTime.Now.TimeOfDay.TotalMilliseconds - fetchstart) / 1000.0).ToString()); Observer.OnCompleted(); // we're done #endregion } else { Observer.OnError(new Exception(string.Format("{0}: {1}", execResp.Status.ErrorCode, execResp.Status.ErrorMessage))); } }
private void doFetchExgprints(TCLIService.Client client, TSessionHandle sessHandle, DateTime QueryDate, bool lastQuery = false) { #region Construct Query double st = StartTime.TotalMilliseconds; double et = EndTime.TotalMilliseconds; var q = string.Format("select * from {1}.exgprints where day={0:yyyyMMdd}", QueryDate, db); string symbolArry = ""; if (Symbols != null && Symbols.Count()<400) { foreach (string s in Symbols) { symbolArry = symbolArry + "','" + s; } symbolArry = "(" + symbolArry.Remove(0, 2) + "')"; q = q + " and symbol in " + symbolArry; } #endregion TExecuteStatementReq execReq = new TExecuteStatementReq { SessionHandle = sessHandle, Statement = q }; var execResp = client.ExecuteStatement(execReq); if (execResp.Status.StatusCode == TStatusCode.SUCCESS_STATUS || execResp.Status.StatusCode == TStatusCode.SUCCESS_WITH_INFO_STATUS) { #region test order file /*FileStream fs = new FileStream("Exgprints.csv", FileMode.OpenOrCreate); StreamWriter m_streamWriter = new StreamWriter(fs);*/ #endregion #region Process Results var stmtHandle = execResp.OperationHandle; var fetchReq = new TFetchResultsReq { OperationHandle = stmtHandle, Orientation = TFetchOrientation.FETCH_NEXT, MaxRows = Maxrows }; var bMore = false; var stshow = true; var stfetchshow = true; double fetchstart = 0.0; do { if (_cancellationSource.Token.IsCancellationRequested) { return; } var resultsResp =new TFetchResultsResp(); if (stshow) { var stbegin = DateTime.Now.TimeOfDay.TotalMilliseconds; resultsResp = client.FetchResults(fetchReq); var stend = DateTime.Now.TimeOfDay.TotalMilliseconds; Console.WriteLine("Marketdata1 running query time: "+((stend-stbegin)/1000.0).ToString()); stshow = false; } else { resultsResp = client.FetchResults(fetchReq); } var resultSet = resultsResp.Results; bMore = resultsResp.HasMoreRows; if (stfetchshow) { fetchstart = DateTime.Now.TimeOfDay.TotalMilliseconds; stfetchshow = false; } #region Dic research /* var DicSym = new Dictionary<string, int>(); foreach (var symbol in Symbols) { DicSym.Add(symbol, 0); }*/ #endregion foreach (var row in resultSet.Rows) { bool symExi = false; #region Dic Research // symExi = DicSym.ContainsKey(row.ColVals[0].StringVal.Value); #endregion string str = row.ColVals[0].StringVal.Value; foreach (var sym in Symbols) { if (str == sym || Symbols.Count()<400) { symExi = true; break; } } if(symExi) { TimeSpan t = TimeSpan.FromMilliseconds(row.ColVals[1].I32Val.Value); var data = new Data { type = Data.DataType.EXGPRINTS, exgPrints = new API.Exgprints { Symbol = row.ColVals[0].StringVal.Value, Date = DateTime.ParseExact(row.ColVals[7].I32Val.Value.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture), Price = (decimal)row.ColVals[5].DoubleVal.Value, Size = (uint)row.ColVals[6].I32Val.Value, ListedExchange = (short)row.ColVals[2].I32Val.Value, ReportingExchange = (short)row.ColVals[3].I32Val.Value, printtype = (short)row.ColVals[4].I32Val.Value, Time = t } }; #region test oreder file /* m_streamWriter.WriteLine(data.exgPrints.Symbol + "," + data.exgPrints.Date.ToShortDateString() + "," + data.exgPrints.Time.ToString() + "," + data.exgPrints.Price.ToString() + "," + data.exgPrints.Size.ToString() + "," + data.exgPrints.ListedExchange.ToString() + "," + data.exgPrints.printtype.ToString() + "," + data.exgPrints.ReportingExchange.ToString());*/ #endregion Observer.OnNext(data); // notify observer... } } fetchReq.Orientation = TFetchOrientation.FETCH_NEXT; Observer.Notify((decimal)resultsResp.Results.Rows.Count); /// send a report of the pct of job completed... } while (bMore); // We're fetching 100 at a time. Console.WriteLine("Marketdata1 fetch data time: " + ((DateTime.Now.TimeOfDay.TotalMilliseconds - fetchstart) / 1000.0).ToString()); if (lastQuery) { Observer.OnCompleted(); // we're done } #region test oder file /* m_streamWriter.Close(); m_streamWriter.Dispose(); fs.Close(); fs.Dispose();*/ #endregion #endregion } else { Observer.OnError(new Exception(string.Format("{0}: {1}", execResp.Status.ErrorCode, execResp.Status.ErrorMessage))); } }