示例#1
0
        private List <LogFileInfo> GetLogFiles(USeProductManager productManager)
        {
            DirectoryInfo klineDir     = new DirectoryInfo(m_kLineFolder);
            string        searchParten = "";

            if (m_cycle == USeCycleType.Day)
            {
                searchParten = "1day-*.csv";
            }
            else if (m_cycle == USeCycleType.Min1)
            {
                searchParten = "1min-*.csv";
            }
            else
            {
                throw new NotSupportedException(string.Format("未知的周期类型文件:{0}", m_cycle));
            }
            FileInfo[] klineFiles = klineDir.GetFiles(searchParten);

            List <LogFileInfo> logFileList = new List <LogFileInfo>();

            foreach (FileInfo fileItem in klineFiles)
            {
                //if (fileItem.Name.StartsWith("1min-cu1707") || fileItem.Name.StartsWith("1day-cu1707"))
                {
                    LogFileInfo logFileInfo = LogFileInfo.ParseLogFile(fileItem, productManager);
                    logFileList.Add(logFileInfo);
                }
            }

            return(logFileList);
        }
        public override bool Run()
        {
            USeProductManager varietiesManager = CreateVarietiesManager();

            DirectoryInfo klineDir = new DirectoryInfo(m_kLineFolder);

            FileInfo[] klineFiles = klineDir.GetFiles("1min-*.csv");

            List <LogFileInfo> logFileList = new List <LogFileInfo>();

            foreach (FileInfo fileItem in klineFiles)
            {
                //if (fileItem.Name.StartsWith("1min") || fileItem.Name.StartsWith("1day"))
                //if (fileItem.Name.StartsWith("1min-cu1707"))//  || fileItem.Name.StartsWith("1day"))
                {
                    LogFileInfo logFileInfo = LogFileInfo.ParseLogFile(fileItem, varietiesManager);
                    logFileList.Add(logFileInfo);
                }
            }

            if (logFileList.Count < 0)
            {
                string text = "无可导入文件";
                m_eventLogger.WriteInformation(text);
                USeConsole.WriteLine(text);
                return(true);
            }

            int index = 0;

            foreach (LogFileInfo file in logFileList)
            {
                index++;
                try
                {
                    ClosePrice2Importer importer = new ClosePrice2Importer(file);

                    List <ClosePrice2Entity> closePriceList = importer.ParseClosePrice2();
                    string text = string.Format("解析{0}.{1}午盘数据完成,共计{2}条",
                                                importer.InstrumentCode, importer.Market, closePriceList.Count);
                    USeConsole.WriteLine(text);
                    Stopwatch stopWathch = new Stopwatch();
                    stopWathch.Start();
                    SaveClosePrice2Data(importer.Market, closePriceList);
                    stopWathch.Stop();
                    long useSecondes = stopWathch.ElapsedMilliseconds / 1000;
                    USeConsole.WriteLine(string.Format("导入{0}.{1}午盘数据完成,共计{2}条,耗时{3}秒,平均速度{4}/秒,Finish{5}/{6}",
                                                       importer.InstrumentCode, importer.Market, closePriceList.Count, useSecondes,
                                                       useSecondes > 0 ? closePriceList.Count / useSecondes : 0, index, logFileList.Count));
                }
                catch (Exception ex)
                {
                    string text = string.Format("导入数据失败,文件路径:{0},错误:{1}", file.FileInfo.FullName, ex.Message);
                    m_eventLogger.WriteInformation(text);
                    USeConsole.WriteLine(text);
                }
            }

            return(true);
        }
示例#3
0
        /// <summary>
        /// 创建品种管理类。
        /// </summary>
        private void CreateProductManager()
        {
            string dbConnStr = ConfigurationManager.ConnectionStrings["KLineDB"].ConnectionString;

            if (string.IsNullOrEmpty(dbConnStr))
            {
                throw new ArgumentException("Not found KLineDB ConnectionString");
            }
            string alpahDBName = ConfigurationManager.AppSettings["AlphaDBName"];

            if (string.IsNullOrEmpty(alpahDBName))
            {
                throw new ArgumentException("Not foun AlphaDBName config");
            }

            try
            {
                USeProductManager manager = new USeProductManager(dbConnStr, alpahDBName);
                manager.Initialize();

                m_productManager = manager;

                string text = String.Format("{0} Create {1} OK.", this, manager);
                m_eventLogger.WriteInformation(text);
            }
            catch (Exception ex)
            {
                string text = "Create ProductManager object failed, " + ex.Message;
                throw new ApplicationException(text, ex);
            }
        }
示例#4
0
        protected USeProductManager CreateVarietiesManager()
        {
            USeProductManager manager = new USeProductManager(m_dbConStr, m_alphaDBName);

            manager.Initialize();

            return(manager);
        }
示例#5
0
        /// <summary>
        /// 启动。
        /// </summary>
        /// <param name="marketDataProvider"></param>
        /// <param name="dbStore"></param>
        public void Start(List <IKLineDataListener> storers, ITradeRangeManager tradeRangeManager,
                          MainContractManager mainContractManager, USeProductManager productManager, AlphaDBVistor alphaDBVistor,
                          USeTradingInstrumentManager instrumentManager,
                          IAppLogger eventLogger)
        {
            m_runFlag = true;

            if (storers == null)
            {
                throw new ArgumentNullException("storers");
            }
            if (tradeRangeManager == null)
            {
                throw new ArgumentNullException("tradeRangeManager");
            }
            if (mainContractManager == null)
            {
                throw new ArgumentNullException("mainContractManager");
            }
            if (productManager == null)
            {
                throw new ArgumentNullException("productManager");
            }
            if (alphaDBVistor == null)
            {
                throw new ArgumentNullException("kLineVistor");
            }
            if (instrumentManager == null)
            {
                throw new ArgumentNullException("instrumentManager");
            }
            if (eventLogger == null)
            {
                throw new ArgumentNullException("eventLogger");
            }

            m_storers             = storers;
            m_tradeRangeManager   = tradeRangeManager;
            m_productManager      = productManager;
            m_mainContractManager = mainContractManager;
            m_alphaDBVistor       = alphaDBVistor;
            m_instrumentManager   = instrumentManager;
            m_eventLogger         = eventLogger;

            KLinePublisher kLinePublisher = new KLinePublisher();

            kLinePublisher.SetMarketDataStore(storers);
            m_kLinePublisher = kLinePublisher;

            this.m_workThread = new Thread(new ThreadStart(DoWork));
            this.m_workThread.Start();
        }
示例#6
0
        public override bool Run()
        {
            USeProductManager  varietiesManager = CreateVarietiesManager();
            List <LogFileInfo> logFileList      = GetLogFiles(varietiesManager);

            if (logFileList.Count < 0)
            {
                string text = "无可导入文件";
                m_eventLogger.WriteInformation(text);
                USeConsole.WriteLine(text);
                return(true);
            }

            int index = 0;

            foreach (LogFileInfo file in logFileList)
            {
                index++;
                try
                {
                    KLineImporter importer = new KLineImporter(file);
                    if (importer.Cycel != USeCycleType.Min1 &&
                        importer.Cycel != USeCycleType.Day)
                    {
                        continue;
                    }
                    DateTime        beginDate;
                    DateTime        endDate;
                    List <USeKLine> klineList = importer.ParseKLine(out beginDate, out endDate);
                    string          text      = string.Format("解析{0}.{1}@{2}数据完成,共计{3}条",
                                                              importer.InstrumentCode, importer.Market, importer.Cycel, klineList.Count);
                    USeConsole.WriteLine(text);
                    Stopwatch stopWathch = new Stopwatch();
                    stopWathch.Start();
                    SaveKLineData(importer.Market, importer.Cycel, importer.InstrumentCode, beginDate, endDate, klineList);
                    stopWathch.Stop();
                    long useSecondes = stopWathch.ElapsedMilliseconds / 1000;
                    USeConsole.WriteLine(string.Format("导入{0}.{1}@{2}完成,共计{3}条,耗时{4}秒,平均速度{7}/秒,Finish{5}/{6}",
                                                       importer.InstrumentCode, importer.Market, importer.Cycel, klineList.Count, useSecondes, index, logFileList.Count,
                                                       useSecondes > 0 ? klineList.Count / useSecondes : 0));
                }
                catch (Exception ex)
                {
                    string text = string.Format("导入数据失败,文件路径:{0},错误:{1}", file.FileInfo.FullName, ex.Message);
                    m_eventLogger.WriteInformation(text);
                    USeConsole.WriteLine(text);
                }
            }

            return(true);
        }
示例#7
0
        public static LogFileInfo ParseLogFile(FileInfo fileInfo, USeProductManager productManager)
        {
            string[] items = fileInfo.Name.Split(new char[] { '-', '.' });
            if (items.Length != 3 && items[2].ToLower() != "csv")
            {
                throw new Exception("Undistinguish fileName:" + fileInfo.Name);
            }

            USeCycleType cycle          = USeCycleType.Unknown;
            string       cycleValue     = items[0].ToLower();
            string       instrumentCode = items[1];

            if (cycleValue == "1min")
            {
                cycle = USeCycleType.Min1;
            }
            else if (cycleValue == "5min")
            {
                cycle = USeCycleType.Min5;
            }
            else if (cycleValue == "1day")
            {
                cycle = USeCycleType.Day;
            }
            else
            {
                throw new Exception("Undistinguish cycel:" + cycleValue);
            }

            string     productCode = USeTraderProtocol.GetVarieties(instrumentCode);
            USeProduct product     = productManager.GetPruduct(productCode);

            if (product == null)
            {
                throw new Exception("Undistinguish cycel:" + cycleValue);
            }

            LogFileInfo logInfo = new LogFileInfo();

            logInfo.InstrumentCode = GetOfficeInstrumentCode(instrumentCode, product.Market);
            logInfo.Market         = product.Market;
            logInfo.Cycle          = cycle;
            logInfo.FileInfo       = fileInfo;

            return(logInfo);
        }