Example #1
0
def _get_sz_index_kline(start_date: datetime.date):
    rdindex = redisRW.redisrw(redisRW.db_index)
    rdindex.delete(comm.index_sz_code)
    klines = dataBaostock.get_kline_index_from_start_date(
        comm.index_sz_code, start_date)
    k_len = len(klines)
    if k_len == 0:
        raise Exception('指数K线获取错误。')
    # 计算
    zbKline.klines_calculate(comm.index_sz_code, klines)
    if k_len != rdindex.wirte_l_datas(comm.index_sz_code, klines):
        raise Exception('指数K线存储错误。')
Example #2
0
def get_all_clear_finance_qfq_kline_from_start_date(start_date: datetime.date):
    rdkline = redisRW.redisrw(redisRW.db_kline)
    rdkline_week = redisRW.redisrw(redisRW.db_kline_week)
    rdbaseinfo = redisRW.redisrw(redisRW.db_baseinfo)
    rdhangye = redisRW.redisrw(redisRW.db_hangye)
    rdfinance = redisRW.redisrw(redisRW.db_finance)
    # 清空数据
    rdkline.del_db()
    rdkline_week.del_db()
    # 3年的财务信息
    cw_start_year = datetime.datetime.now().year - 3
    # 获取指数
    _get_sz_index_kline(start_date)
    # 实例化通达信对象
    tdx = dataTdx.DataTdx()
    tdx.select_fast_addr()
    # 没有行业信息则更新
    if len(rdhangye.read_codes()) == 0:
        hy = dataBaostock.get_hangye()
        for h in hy:
            rdhangye.write_json(h['code'], h)
    # 读取市场股票
    codes_info = tdx.get_szsh_a_codes()
    bar = progressBar.progressbar()
    bar.start('存储%s至今历史数据' % start_date.strftime('%Y%m%d'), len(codes_info))
    for d in codes_info:
        bar.progress()
        code = d['code']
        if comm.is_kzz(code):
            klines = tdx.get_kline_from_count(code, 800)
            none_klines = tdx.get_kline_from_count(code, 800)
            k_len = len(klines)
            if k_len == 0:
                bar.out_text(code, '没有K线数据。')
                continue
            # 复权因子
            dataBaostock.qfq_adjust_factor(none_klines, klines)
            zbKline.klines_calculate(code, klines)
            if k_len != rdkline.wirte_l_datas(code, klines):
                bar.out_text(code, '历史K线数据存储错误。')
                continue
            continue
        # 前复权k线
        klines = dataBaostock.get_kline_from_start_date(code, start_date)
        # 不复权k线
        none_klines = dataBaostock.get_kline_from_start_date(code,
                                                             start_date,
                                                             adjustflag='3')
        #klines = akshareData.get_kline(code, start_date)
        k_len = len(klines)
        if k_len == 0:
            bar.out_text(code, '没有K线数据。')
            continue
        # 复权因子
        dataBaostock.qfq_adjust_factor(none_klines, klines)
        # 前复权周k线
        klines_week = dataBaostock.get_kline_from_start_date(code,
                                                             start_date,
                                                             frequency='w')
        # 计算
        zbKline.klines_calculate(code, klines_week)
        zbKline.klines_calculate(code, klines)
        if k_len != rdkline.wirte_l_datas(code, klines) or \
            len(klines_week) != rdkline_week.wirte_l_datas(code, klines_week):
            bar.out_text(code, '历史K线数据存储错误。')
            continue
        # 没有财务数据则更新
        if rdfinance.read_str(code) is None:
            # 财务信息
            finance_data = {
                'code':
                code,
                'profit':
                dataBaostock.get_profit_from_start_year(code, cw_start_year),
                'balance':
                dataBaostock.get_balance_from_start_year(code, cw_start_year),
                'cash_flow':
                dataBaostock.get_cash_flow_from_start_year(
                    code, cw_start_year),
                'growth':
                dataBaostock.get_growth_from_start_year(code, cw_start_year),
                'operation':
                dataBaostock.get_operation_from_start_year(
                    code, cw_start_year)
            }
            if not rdfinance.write_json(code, finance_data):
                bar.out_text(code, '财务信息存储错误。')
        # 没有基本信息则更新
        '''if len(rdbaseinfo.read_l_str(code, 0, 0)) == 0: