Пример #1
0
 /// <summary>
 /// 是否在交易时间
 /// </summary>
 /// <returns></returns>
 public static bool IsTradingTime()
 {
     if (CONST.IsTradingDay() && DateTime.Now.Date.AddHours(9.5) <= DateTime.Now && DateTime.Now <= DateTime.Now.Date.AddHours(15)) ///若是在交易日内
     {
         return(true);
     }
     return(false);
 }
Пример #2
0
 /// <summary>
 /// 判断是否是安全更新时间
 /// </summary>
 /// <param name="updateCost"></param>
 /// <returns></returns>
 public static bool IsSafeUpdateTime(int updateCost)
 {                              //非交易日 或交易日前1小时 或交易时间结束
     if (!CONST.IsTradingDay()) ///不是交易日
     {
         return(true);
     }
     else if (CONST.IsTradingDay() && (DateTime.Now <= DateTime.Now.Date.AddHours(7) || DateTime.Now.Date.AddHours(15.5) <= DateTime.Now.AddHours(updateCost)))
     {
         ///交易日内早7点前,或交易结束后
         return(true);
     }
     return(false);
 }
Пример #3
0
        /// <summary>
        /// 不断更新最新的新闻
        /// </summary>
        public void SyncStockNews()
        {
            var startTime = DateTime.Now;///开始运行时间

            Console.Title = "同花顺财经要闻 更新进程 启动时间:" + startTime;

            var exe = StockTaskExecutor.CreateInstance();

            while (true)
            {
                try
                {
                    if (CONST.IsSafeUpdateTime(1))
                    {
                        exe.GetNewsListCJYW(DateTime.Now.ToShortDateString());
                        ///非交易时间
                        if (DateTime.Now.Hour < 6 || DateTime.Now.Hour > 23) ///6点前,23点后
                        {
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-1).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-2).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-3).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-4).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-5).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-6).ToShortDateString());
                            exe.GetNewsListCJYW(DateTime.Now.AddDays(-7).ToShortDateString());

                            ThreadManager.Pause(hours: 1); ///凌晨一小时更新一次
                        }
                        else
                        {
                            ThreadManager.Pause(minutes: 10); ///10分钟更新一次新闻
                        }
                    }
                    else
                    {
                        exe.GetNewsListCJYW(DateTime.Now.ToShortDateString()); ///交易时间
                        ThreadManager.Pause(minutes: 3);                       ///3分钟更新一次新闻
                    }

                    LOGGER.Log(string.Format("自动新闻更新 已运行时间 {0}", DateTime.Now - startTime));
                }
                catch (Exception e)
                {
                    LOGGER.Log(string.Format("异常:{0}", e.Message));
                    LOGGER.Log(string.Format("位置:{0}", e.StackTrace));
                    LOGGER.Beep();
                    ThreadManager.Pause(minutes: 1); ///停一分钟
                }
            }
        }
Пример #4
0
        public void SyncStockRardar()
        {
            var startTime = DateTime.Now;///开始运行时间

            Console.Title = "SINA 股市雷达异动 更新进程 启动时间:" + startTime;

            var exe            = StockTaskExecutor.CreateInstance();
            var mongo          = DataStorage.GetInstance(DBType.MongoDB);
            var dbName         = CONST.DB.DBName_StockService;
            var collectionName = CONST.DB.CollectionName_Radar;
            var methodName     = "SyncStockRardar";

            while (true)
            {
                var filterCheck = "{\"TradingDate\":new Date('" + string.Format("{0:yyyy/MM/dd}", DateTime.Now) + "')}";
                var checkRes    = mongo.Count(dbName, collectionName, filterCheck);
                if (0 == checkRes && CONST.IsSafeUpdateTime(1))
                {
                    var listData = WebDataSource.GetInstance().GetStockRadar();
                    foreach (var item in listData)
                    {
                        var tradingTime = item["异动时间"].ToString().Replace("-", "/");
                        var filter      = "{\"ContentType\":\"SINA 股市雷达\",\"TradingTime\":new Date('" + tradingTime + "')}";
                        var svItem      = new
                        {
                            StockCode   = item["股票代码"],
                            StockName   = item["股票简称"],
                            AnomalyInfo = item["异动信息"],
                            TradingTime = item["异动时间"],
                            TradingDate = Convert.ToDateTime(tradingTime).Date
                        };
                        mongo.Save3(dbName, collectionName, svItem, filter);
                    }

                    TaskStatusManager.Set(methodName, new { ID = methodName, Status = "队列处理完毕", CreateTime = DateTime.Now });

                    LOGGER.Log(string.Format("本次股市雷达异动更新完毕,下一次一天以后更新 {0}", DateTime.Now));
                }
                else
                {
                    LOGGER.Log(string.Format("今日股市雷达异动已经更新,下一次一天以后更新"));
                }
                ThreadManager.Pause(hours: 2);
            }
        }
Пример #5
0
        /// <summary>
        /// SINA大单数据更新
        /// </summary>
        public void SyncSINADaDan()
        {
            var startTime = DateTime.Now;///开始运行时间

            Console.Title = "SINA大单数据更新 更新进程 启动时间:" + startTime;
            var exe = StockTaskExecutor.CreateInstance();

            while (true)
            {
                if (CONST.IsSafeUpdateTime(1))
                {
                    exe.GetDaDanData();
                    LOGGER.Log(string.Format("大单数据已更新,下一次更新在一天后 {0}", DateTime.Now));
                    ThreadManager.Pause(days: 1);
                }
                else
                {
                    LOGGER.Log(string.Format("未在安全更新时间内 {0}", DateTime.Now));
                    ThreadManager.Pause(minutes: 5);
                }
            }
        }
Пример #6
0
        /// <summary>
        /// 更新股票代码
        /// </summary>
        public void SyncStockCode()
        {
            var startTime = DateTime.Now;///开始运行时间

            Console.Title = "股票代码更新进程 启动时间:" + startTime;
            var inst = StockTaskExecutor.CreateInstance();

            while (true)
            {
                if (CONST.IsSafeUpdateTime(1)) ///非交易时间,且交易前1小时
                {
                    LOGGER.Log(string.Format("准备更新股票代码 {0}", DateTime.Now));
                    inst.UpdateAllStockCode();
                    LOGGER.Log(string.Format("股票代码更新完毕 {0} {1} 下一次更新在一天后后 已运行 ", DateTime.Now, DateTime.Now - startTime));
                    ThreadManager.Pause(days: 1); ///每日更新一次
                }
                else
                {
                    Console.WriteLine("交易时间或非安全可更新时间 {0}", DateTime.Now);
                    ThreadManager.Pause(hours: 1);
                }
            }
        }