Ejemplo n.º 1
0
 private void pushDataTodayXDR(string code, TodayXDR xdr)
 {
     lock (lockData)
     {
         this.ltDataTodayXDR.Add(new KeyValuePair <string, TodayXDR>(code, xdr));
     }
 }
Ejemplo n.º 2
0
        private void GetTodayXDRFromTradeXB()
        {
            StringBuilder sErrInfo = new StringBuilder(256);
            StringBuilder sResult  = new StringBuilder(1024 * 1024);

            int idConn = 0;

            while (true)
            {
                idConn = ThreadGetDataFromTradeX.connectTDX();
                if (idConn < 0)
                {
                    Console.WriteLine("没有可用的TDX行情服务器!  请检查网络...... 重连......" + DateTime.Now);

                    System.Threading.Thread.Sleep(1000);

                    continue;
                }

                bool   bRet      = true;
                string code      = "";
                short  getCounts = -1;
                while (getCode(ref code, ref getCounts))
                {
                    sResult.Clear();
                    sErrInfo.Clear();

                    byte market = 0;
                    if (code.Substring(0, 1) == "6")
                    {
                        market = 1;
                    }

                    bRet = TradeXB.TdxHq_GetXDXRInfo(idConn, market, code, sResult, sErrInfo);
                    if (bRet)
                    {
                        string[] rows = sResult.ToString().Split(new char[] { '\n' });
                        foreach (var row in rows)
                        {
                            string[] cols = row.Split(new char[] { '\t' });
                            if (cols.Count() >= 8 &&
                                (cols[0] == "0" || cols[0] == "1") &&
                                cols[2] == DateTime.Now.ToString("yyyyMMdd") &&
                                cols[3] == "1")
                            {
                                TodayXDR xdr = new TodayXDR
                                {
                                    presentCash  = Convert.ToDecimal(cols[4]),
                                    presentStock = Convert.ToDecimal(cols[6]),
                                };
                                pushDataTodayXDR(code, xdr);
                            }
                        }
                    }
                    else
                    {
                        Console.Write(0);

                        if (getCounts < 3)
                        {
                            pushCode(code, ++getCounts);
                        }

                        string szErrorInfo = sErrInfo.ToString();
                        Console.WriteLine(szErrorInfo);
                        if (szErrorInfo.Contains("连接断开"))
                        {
                            System.Threading.Thread.Sleep(100);
                            idConn = -1;

                            break;
                        }
                        else
                        {
                            bRet = true;
                        }                //no break
                    }
                }

                if (bRet)
                {
                    if (idConn >= 0)
                    {
                        TradeXB.TdxHq_Disconnect(idConn);
                    }

                    break;
                }
            }

            subtractReferenced();
        }