Example #1
0
    def __saving_work(code, coll_stock_day):
        try:
            QA_util_log_info('##JOB01 Now Saving STOCK_DAY==== %s' %
                             (str(code)))

            ref = coll_stock_day.find({'code': str(code)[0:6]})
            end_date = str(now_time())[0:10]
            if ref.count() > 0:
                # 加入这个判断的原因是因为如果股票是刚上市的 数据库会没有数据 所以会有负索引问题出现

                start_date = ref[ref.count() - 1]['date']
            else:
                start_date = '1990-01-01'
            QA_util_log_info(
                ' UPDATE_STOCK_DAY \n Trying updating %s from %s to %s' %
                (code, start_date, end_date))
            if start_date != end_date:
                coll_stock_day.insert_many(
                    QA_util_to_json_from_pandas(
                        QA_fetch_get_stock_day(str(code), start_date, end_date,
                                               '00')[1::]))
        except:
            __err.append(str(code))
Example #2
0
    def __init__(self):
        super().__init__()
        self.frequence = FREQUENCE.DAY
        self.market_type = MARKET_TYPE.STOCK_CN

        # self.stock_basics = QATs.get_stock_basics()
        # self.time_to_Market_300439 = self.stock_basics.loc['300439', 'timeToMarket']
        # self.time_to_Market_300439 = QA.QA_util_date_int2str(self.time_to_Market_300439)
        # self.time_to_day = QA_util_datetime_to_strdate(QA.QA_util_date_today())
        # print(self.time_to_Market_300439)
        #print(self.time_to_day)

        self.time_to_Market_300439 = '2015-04-22'
        self.time_to_day = '2018-05-01'

        self.df_from_Tdx = QA_fetch_get_stock_day('300439',
                                                  self.time_to_Market_300439,
                                                  self.time_to_day, '01')
        #print(self.df_from_Tdx)

        self.ma05 = QA_indicator_MA(self.df_from_Tdx, 5)
        self.ma10 = QA_indicator_MA(self.df_from_Tdx, 10)
        self.ma15 = QA_indicator_MA(self.df_from_Tdx, 15)
        self.ma20 = QA_indicator_MA(self.df_from_Tdx, 20)
Example #3
0
    def test_select_best_ip(self):
        best_ip = select_best_ip()
        ip = best_ip['stock']['ip']
        port = best_ip['stock']['port']
        self.assertTrue(isinstance(ip, str), '未获取到ip')
        self.assertTrue(isinstance(port, int), '未获取到端口号')
        self.assertTrue(
            ping(ip, port, 'stock') < datetime.timedelta(0, 1, 0),
            '地址ping不通: {} {} {}'.format(ip, port, ping(ip, port, 'stock')))
        type = 'future'
        ip = best_ip[type]['ip']
        port = best_ip[type]['port']
        self.assertTrue(
            ping(ip, port, type) < datetime.timedelta(0, 1, 0),
            '地址ping不通: {} {} {}'.format(ip, port, ping(ip, port, 'stock')))

        code = '000001'
        days = 300
        start = datetime.datetime.now().date() - datetime.timedelta(days)
        end = datetime.datetime.now().date() - datetime.timedelta(10)
        data = QA_fetch_get_stock_day(code, start_date=start, end_date=end)
        # print(data)
        self.assertTrue(
            len(data) > (end - start).days / 2,
            '返回数据个数不匹配,数据长度:{},天数(包含节假日):{}'.format(len(data),
                                                    (end - start).days / 2))

        # 恢复初始化ip,重新测试ip
        default_ip = {
            'stock': {
                'ip': None,
                'port': None
            },
            'future': {
                'ip': None,
                'port': None
            }
        }
        qasetting = QA_Setting()
        qasetting.set_config(section='IPLIST',
                             option='default',
                             default_value=default_ip)
        filenames = ['stock_ip_list', 'stock_ip_list_MP']
        for filename in filenames:
            # 删除保存ip的pickle文件
            filename = '{}{}{}.pickle'.format(
                qasetting.get_config(section='LOG',
                                     option='path',
                                     default_value=""), os.sep, filename)
            if os.path.isfile(filename):
                os.remove(filename)
        best_ip = select_best_ip()
        ip = best_ip['stock']['ip']
        port = best_ip['stock']['port']
        self.assertTrue(isinstance(ip, str), '未获取到ip')
        self.assertTrue(isinstance(port, int), '未获取到端口号')
        ip = best_ip['future']['ip']
        port = best_ip['future']['port']
        self.assertTrue(isinstance(ip, str), '未获取到ip')
        self.assertTrue(isinstance(port, int), '未获取到端口号')
        data = QA_fetch_get_stock_day(code, start, end)
        self.assertTrue(
            len(data) > (end - start).days / 2,
            '返回数据个数不匹配,数据长度:{},天数(包含节假日):{}'.format(len(data),
                                                    (end - start).days / 2))
Example #4
0
    def __saving_work(code, coll_stock_day):
        try:
            QA_util_log_info(
                '##JOB01 Now Saving STOCK_DAY==== {}'.format(str(code)),
                ui_log
            )

            # 首选查找数据库 是否 有 这个代码的数据
            ref = coll_stock_day.find({'code': str(code)[0:6]})
            end_date = str(now_time())[0:10]

            # 当前数据库已经包含了这个代码的数据, 继续增量更新
            # 加入这个判断的原因是因为如果股票是刚上市的 数据库会没有数据 所以会有负索引问题出现
            if ref.count() > 0:

                # 接着上次获取的日期继续更新
                start_date = ref[ref.count() - 1]['date']

                QA_util_log_info(
                    'UPDATE_STOCK_DAY \n Trying updating {} from {} to {}'
                    .format(code,
                            start_date,
                            end_date),
                    ui_log
                )
                if start_date != end_date:
                    coll_stock_day.insert_many(
                        QA_util_to_json_from_pandas(
                            QA_fetch_get_stock_day(
                                str(code),
                                QA_util_get_next_day(start_date),
                                end_date,
                                '00'
                            )
                        )
                    )

            # 当前数据库中没有这个代码的股票数据, 从1990-01-01 开始下载所有的数据
            else:
                start_date = '1990-01-01'
                QA_util_log_info(
                    'UPDATE_STOCK_DAY \n Trying updating {} from {} to {}'
                    .format(code,
                            start_date,
                            end_date),
                    ui_log
                )
                if start_date != end_date:
                    coll_stock_day.insert_many(
                        QA_util_to_json_from_pandas(
                            QA_fetch_get_stock_day(
                                str(code),
                                start_date,
                                end_date,
                                '00'
                            )
                        )
                    )
        except Exception as error0:
            print(error0)
            err.append(str(code))