コード例 #1
0
ファイル: Client.cs プロジェクト: Jack-coastal/backupCode
        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)));
            }
        }
コード例 #2
0
ファイル: Client.cs プロジェクト: Jack-coastal/backupCode
        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)));
            }
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: Jack-coastal/backupCode
        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)));
            }
        }