def get_trading_time(target_list: 'list',
                     frequency: 'str',
                     fre_num: 'int',
                     begin_date,
                     end_date=''):
    if isinstance(target_list, str):
        target_list = [target_list]

    new_targets = todictmc(target_list)
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)
    if isinstance(end_date, str) and end_date.strip() == '':
        new_end_date = to_int_now_date('%Y%m%d')
    else:
        new_end_date = convert_str_or_datetime_to_int_date(end_date)

    if frequency in ('day', 'week', 'month') and fre_num != 1:
        raise ValueError(text.ERROR_INPUT_FREQUENCY_FREQNUM)

    if 0 < new_end_date < new_begin_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)

    t, d = _history.get_trading_time(new_targets, frequency, new_begin_date,
                                     new_end_date, fre_num)

    if gv.freuency_to_int(frequency) >= gv.KFreq_Day:
        d = np.arange(0, t.size, 1, dtype=np.int)
    else:
        d -= 1

    return history_cvt.convert_trading_time_to_df(t, d)
def get_code_list_set(block, begin_date, end_date):
    blocks = block.strip().split(',')
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)

    if isinstance(end_date, str) and end_date.strip() == '':
        new_end_date = to_int_now_date('%Y%m%d')
    else:
        new_end_date = convert_str_or_datetime_to_int_date(end_date)

    if 0 < new_end_date < new_begin_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)

    ls = _history.get_code_list_set(blocks, new_begin_date, new_end_date)

    return history_cvt.convert_code_list_set_to_df(ls)
Exemple #3
0
def get_factor_by_code(factor_list: 'list', target: 'str', begin_date,
                       end_date):
    if isinstance(factor_list, str):
        factor_list = [factor_list]

    targets = check_target(todictmc([target]))
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)
    new_end_date = convert_str_or_datetime_to_int_date(end_date)
    if begin_date != 0 and new_begin_date > new_end_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)
    check_begin_end_date(new_begin_date, new_end_date)
    factor_dict = _factors.get_factor_by_code(factor_list, targets,
                                              new_begin_date, new_end_date)
    factor_df = factor_cvt.convert_factor_by_code_to_df(
        factor_dict) if factor_dict is not None else None
    return factor_df
def get_trading_days(market: 'str', begin_date, end_date=''):
    # TODO market: 支持数字货币
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)
    if isinstance(end_date, str) and end_date.strip() == '':
        new_end_date = to_int_now_date('%Y%m%d')
    else:
        new_end_date = convert_str_or_datetime_to_int_date(end_date)
    if new_begin_date > new_end_date:
        return None

    result = _history.get_trading_days_condition(market, new_begin_date,
                                                 new_end_date)
    if result.size < 1:
        return None

    return history_cvt.convert_trading_days_to_np_datetime(result)
Exemple #5
0
def get_factor_by_factor(factor: 'str', target_list: 'list', begin_date,
                         end_date):
    if isinstance(target_list, str):
        target_list = [target_list]

    targets = check_target(todictmc(target_list))
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)
    new_end_date = convert_str_or_datetime_to_int_date(end_date)
    if begin_date != 0 and new_begin_date > new_end_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)
    check_begin_end_date(new_begin_date, new_end_date)
    factor_dict = _factors.get_factor_by_factor(factor, targets,
                                                new_begin_date, new_end_date)
    result_df = factor_cvt.convert_factor_by_factor_to_df(
        factor_dict,
        todotmc(targets)) if factor_dict['date'].size > 0 else None
    return result_df
def get_kdata(target_list: 'list',
              frequency: 'str',
              fre_num: 'int',
              begin_date,
              end_date,
              fq=enums.FQ_NA,
              fill_up=False,
              df=False,
              sort_by_date=False):
    if isinstance(target_list, str):
        target_list = [target_list]

    if len(target_list) < 1:
        raise ValueError(
            text.ERROR_INPUT_EMPTY_PARAM.format(PARAMNAME='target_list'))

    begin_date = convert_str_or_datetime_to_int_date(begin_date)
    end_date = convert_str_or_datetime_to_int_date(end_date)
    new_targets = todictmc(target_list)
    fq = convert_internal_fq_to_atcore(fq)

    if frequency in ('day', 'week', 'month') and fre_num != 1:
        raise ValueError(text.ERROR_INPUT_FREQUENCY_FREQNUM)

    if 0 < end_date < begin_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)

    results = [None] * len(new_targets)
    data_list = _history.get_k_data(new_targets, frequency, fre_num,
                                    begin_date, end_date, fill_up, fq)
    for idx, data in enumerate(data_list):
        results[idx] = history_cvt.convert_k_data_to_df(
            data, target_list[idx],
            cnt.env.get_target_type(todotmc(new_targets[idx])))

    if df:
        data_df = pd.concat(results, ignore_index=True)  # type: pd.DataFrame
        if sort_by_date:
            data_df = data_df.sort_values(
                'time', ascending=True,
                na_position='first')  # type: pd.DataFrame
            data_df.index = range(data_df.shape[0])
        return data_df
    else:
        return {target: results[idx] for idx, target in enumerate(target_list)}
def get_code_list(block: 'str', date=''):
    blocks = block.strip().split(',')
    if isinstance(date, str) and date.strip() == '':
        new_date = to_int_now_date('%Y%m%d')
    else:
        new_date = convert_str_or_datetime_to_int_date(date)
    ls = _history.get_code_list(blocks, new_date)

    return history_cvt.convert_code_list_to_df(ls)
def get_main_contract(main_code: 'str', begin_date, end_date):
    begin_date = convert_str_or_datetime_to_int_date(begin_date)
    if isinstance(end_date, str) and end_date.strip() == '':
        end_date = to_int_now_date('%Y%m%d')
    else:
        end_date = convert_str_or_datetime_to_int_date(end_date)
    new_targets = todictmc(main_code)

    if begin_date > end_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)

    ls = _history.get_main_contract(new_targets['Market'], new_targets['Code'],
                                    begin_date, end_date)
    ls = [
        t for t in ls
        if str.lower(t['TargetIns']) != str.lower(new_targets['Code'])
    ]

    return history_cvt.convert_main_contract_to_df(ls, new_targets['Market'])
def get_history_instruments(target_list: 'list',
                            begin_date,
                            end_date='',
                            df=False,
                            sort_by_date=True):
    if isinstance(target_list, str):
        target_list = [target_list]

    targets = check_target(todictmc(target_list))
    new_begin_date = convert_str_or_datetime_to_int_date(begin_date)
    new_end_date = to_int_now_date(
    ) if end_date == '' else convert_str_or_datetime_to_int_date(end_date)
    if begin_date != 0 and new_begin_date > new_end_date:
        raise ValueError(text.ERROR_INPUT_BEGIN_GT_ENDDATE)

    data_matrix = _history.get_history_instruments(targets, new_begin_date,
                                                   new_end_date)

    return history_cvt.convert_history_instrument_matrix_to_output(
        target_list, data_matrix, df, sort_by_date)
def get_kdata_n(target_list: 'list',
                frequency: 'str',
                fre_num: 'int',
                n: 'int',
                end_date: 'str',
                fq=0,
                fill_up=False,
                df=False,
                sort_by_date=False):
    if isinstance(target_list, str):
        target_list = [target_list]

    if len(target_list) < 1:
        raise ValueError(
            text.ERROR_INPUT_EMPTY_PARAM.format(PARAMNAME='target_list'))

    if isinstance(end_date, str) and end_date.strip() == '':
        end_date = to_int_now_date('%Y%m%d')
    else:
        end_date = convert_str_or_datetime_to_int_date(end_date)

    new_targets = todictmc(target_list)
    fq = convert_internal_fq_to_atcore(fq)

    if frequency in ('day', 'week', 'month') and fre_num != 1:
        raise ValueError(text.ERROR_INPUT_FREQUENCY_FREQNUM)

    results = [None] * len(new_targets)
    for idx, target in enumerate(new_targets):
        kdata = _history.get_k_data_n([target], frequency, fre_num, n,
                                      end_date, fill_up, fq)
        results[idx] = history_cvt.convert_k_data_to_df(
            kdata[0], target_list[idx],
            cnt.env.get_target_type(todotmc(target)))

    if df:
        data_df = pd.concat(results, ignore_index=True)  # type: pd.DataFrame
        if sort_by_date:
            data_df = data_df.sort_values(
                'time', ascending=True,
                na_position='first')  # type: pd.DataFrame
            data_df.index = range(data_df.shape[0])
        return data_df
    else:
        return {target: results[idx] for idx, target in enumerate(target_list)}
Exemple #11
0
def get_factor_by_day(factor_list: 'list', target_list: 'list', date=''):
    if isinstance(factor_list, str):
        factor_list = [factor_list]

    if isinstance(target_list, str):
        target_list = [target_list]

    targets = check_target(todictmc(target_list))
    if date == '':
        new_date = to_int_now_date()
    else:
        new_date = convert_str_or_datetime_to_int_date(date)
    check_begin_end_date(new_date, new_date)
    factor_dict = _factors.get_factor_by_day(factor_list, targets, new_date)
    factor_df = factor_cvt.convert_factor_by_day_to_df(
        factor_dict) if factor_dict is not None else None

    return factor_df