Exemple #1
0
        /// <summary>
        /// 获取分时数据
        /// </summary>
        public static void getMinuteDatas()
        {
            if (m_minuteDatas.Count > 0)
            {
                return;
            }
            String appPath = DataCenter.getAppPath();

            foreach (String code in m_codedMap.Keys)
            {
                String fileName = m_newFileDir + FCStrEx.convertDBCodeToFileName(code);
                if (!FCFile.isFileExist(fileName))
                {
                    fileName = m_newFileDir + FCStrEx.convertDBCodeToSinaCode(code).ToUpper() + ".txt";
                }
                if (FCFile.isFileExist(fileName))
                {
                    String text = "";
                    FCFile.read(fileName, ref text);
                    List <SecurityData> datas = new List <SecurityData>();
                    StockService.getHistoryDatasByMinuteStr(text, datas);
                    if (datas.Count > 0)
                    {
                        int rindex   = 0;
                        int dataSize = datas.Count;
                        while (rindex < dataSize)
                        {
                            SecurityData d = datas[rindex];
                            if (rindex == 0)
                            {
                                d.m_avgPrice = d.m_close;
                            }
                            else
                            {
                                SecurityData ld = datas[rindex - 1];
                                d.m_avgPrice = (ld.m_avgPrice * rindex + d.m_close) / (rindex + 1);
                            }
                            rindex++;
                        }
                        m_minuteDatas[code] = datas;
                    }
                }
            }
        }
Exemple #2
0
 /// <summary>
 /// 加载历史数据
 /// </summary>
 /// <param name="history"></param>
 public static void loadHistoryDatas()
 {
     if (m_historyDatas.Count > 0)
     {
         return;
     }
     foreach (String code in m_codedMap.Keys)
     {
         String fileName = DataCenter.getAppPath() + "\\day\\" + FCStrEx.convertDBCodeToSinaCode(code).ToUpper() + ".txt";
         if (File.Exists(fileName))
         {
             StreamReader        sra   = new StreamReader(fileName, Encoding.Default);
             String              text  = sra.ReadToEnd();
             List <SecurityData> datas = new List <SecurityData>();
             StockService.getHistoryDatasByTdxStr(text, datas);
             if (datas.Count > 0)
             {
                 m_historyDatas[code] = datas;
             }
         }
     }
 }
Exemple #3
0
 /// <summary>
 /// 开始工作
 /// </summary>
 private static void startWork()
 {
     while (true)
     {
         if (m_codes != null && m_codes.Length > 0)
         {
             if (m_codes.EndsWith(","))
             {
                 m_codes.Remove(m_codes.Length - 1);
             }
             String[] strCodes    = m_codes.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries);
             int      codesSize   = strCodes.Length;
             String   latestCodes = "";
             for (int i = 0; i < codesSize; i++)
             {
                 latestCodes += strCodes[i];
                 if (i == codesSize - 1 || (i > 0 && i % 50 == 0))
                 {
                     String latestDatasResult = StockService.getSinaLatestDatasStrByCodes(latestCodes);
                     if (latestDatasResult != null && latestDatasResult.Length > 0)
                     {
                         List <SecurityLatestData> latestDatas = new List <SecurityLatestData>();
                         StockService.getLatestDatasBySinaStr(latestDatasResult, 0, latestDatas);
                         String[] subStrs         = latestDatasResult.Split(new String[] { ";\n" }, StringSplitOptions.RemoveEmptyEntries);
                         int      latestDatasSize = latestDatas.Count;
                         for (int j = 0; j < latestDatasSize; j++)
                         {
                             SecurityLatestData latestData = latestDatas[j];
                             if (latestData.m_close == 0)
                             {
                                 latestData.m_close = latestData.m_buyPrice1;
                             }
                             if (latestData.m_close == 0)
                             {
                                 latestData.m_close = latestData.m_sellPrice1;
                             }
                             lock (m_latestDatas) {
                                 m_latestDatasStr[latestData.m_code] = subStrs[j];
                                 //bool append = true;
                                 //if (m_latestDatas.ContainsKey(latestData.m_code))
                                 //{
                                 //    if (!m_latestDatas[CStrA.ConvertFileCodeToMemoryCode(latestData.m_code)].Equals(latestData))
                                 //    {
                                 //        append = false;
                                 //    }
                                 //}
                                 //if(append)
                                 //{
                                 //    long today = (long)DateTime.Now.Subtract(DateTime.Parse("1970-1-1")).TotalMilliseconds / 86400000;
                                 //    if (m_today < today)
                                 //    {
                                 //        m_today = today;
                                 //        String nPath = DataCenter.GetAppPath() + "\\tick\\" + DateTime.Now.ToString("yyyy-MM-dd");
                                 //        if (!Directory.Exists(nPath))
                                 //        {
                                 //            Directory.CreateDirectory(nPath);
                                 //        }
                                 //        m_newFileDir = nPath + "\\";
                                 //    }
                                 //    String line = String.Format("{0},{1},{2},{3}\r\n", latestData.m_date,//
                                 //        latestData.m_close, latestData.m_volume, latestData.m_amount);
                                 //    CFileA.Append(m_newFileDir + latestData.m_code + ".txt", line);
                                 //}
                                 if (!m_latestDatas.ContainsKey(latestData.m_code))
                                 {
                                     m_latestDatas[latestData.m_code] = latestData;
                                 }
                                 else
                                 {
                                     m_latestDatas[latestData.m_code].copy(latestData);
                                 }
                                 if (latestData.m_code == "000001.SH")
                                 {
                                     m_shTradeTime = latestData.m_date;
                                 }
                             }
                         }
                         latestDatas.Clear();
                     }
                     latestCodes = "";
                 }
                 else
                 {
                     latestCodes += ",";
                 }
             }
         }
         Thread.Sleep(1);
     }
 }