Esempio n. 1
0
def getTradeday(start, end, fre='month'):
    trade_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                    beginDate=start,
                                    endDate=end,
                                    field=u"",
                                    pandas="1")

    trade_day = trade_day[trade_day.isOpen == 1][[
        'calendarDate', 'isWeekEnd', 'isMonthEnd'
    ]]

    if fre == 'month':
        df = trade_day[trade_day.isMonthEnd == 1]['calendarDate']
    elif fre == 'week':
        df = trade_day[trade_day.isWeekEnd == 1]['calendarDate']
    elif fre == 'day':
        df = trade_day['calendarDate']
    elif fre == '2week':
        df = trade_day[trade_day.isWeekEnd == 1][['calendarDate', 'isWeekEnd']]
        df = df[1::2]
        df = df['calendarDate']
    else:
        print 'change fre parameter'
        raise ValueError
    df.index = range(len(df))
    df = pd.DataFrame(df)
    df['calendarDate'] = pd.to_datetime(df['calendarDate'], format='%Y-%m-%d')
    df['calendarDate'] = df['calendarDate'].apply(
        lambda x: x.strftime("%Y%m%d"))
    df = df['calendarDate']
    return df
Esempio n. 2
0
def get_features(security_id='', start_date='', end_date='', min_unit="5"):
    df = DataAPI.TradeCalGet(exchangeCD=u"XSHG,XSHE",
                             beginDate=start_date.replace('-', ''),
                             endDate=end_date.replace('-', ''),
                             isOpen=u"1",
                             field=u"calendarDate",
                             pandas="1")
    t_dates = list(df['calendarDate'])
    df_min = DataAPI.MktBarHistDateRangeGet(securityID=security_id,
                                            startDate=start_date.replace(
                                                '-', ''),
                                            endDate=end_date.replace('-', ''),
                                            unit=min_unit,
                                            field=u"",
                                            pandas="1")

    df_min['vwap'] = df_min['totalValue'] / df_min['totalVolume']
    # TODO normally it should be closePrice
    df_min['ret'] = df_min[['vwap'
                            ]].rolling(2).apply(lambda x: x[-1] / x[0] - 1)
    df_min['label'] = [
        1 if item >= 0.0 else 0 for item in (([0.0] + list(df_min['ret']))[1:])
    ]
    # df_min['dealPrice'] = (df_min['openPrice'] + df_min['vwap'])/2
    df_min['dealPrice'] = df_min['vwap']
    return df_min
Esempio n. 3
0
    def get_trading_day_list(self, start, end, frequency, exchange_cd='XSHG'):
        """
		输入起始日期和频率,即可获得日期列表(daily包括起始日,其余的都是位于起始日中间的)
		输入:
		start,开始日期,'YYYYMMDD'形式
		end,截止日期,'YYYYMMDD'形式
		frequency,频率,day为所有交易日,week为每周最后一个交易日,month为每月最后一个交易日,quarter为每季最后一个交易日
		返回:
		获得list型日期列表,以'YYYYMMDD'形式存储
		"""
        df = DataAPI.TradeCalGet(exchangeCD=exchange_cd,
                                 beginDate=start,
                                 endDate=end,
                                 field=u"",
                                 pandas="1")
        df['calendarDate'] = df['calendarDate'].apply(
            lambda x: x.replace('-', ''))
        if frequency == 'quarter':
            res = df.query('isQuarterEnd==1')
        elif frequency == 'semi':
            res = df.query('isQuarterEnd==1')
            res = res.reset_index()
            res = res.loc[res['calendarDate'].apply(
                lambda x: (x[4:6] == '06' or x[4:6] == '12'))]
        elif frequency == 'month':
            res = df.query('isMonthEnd==1')
        elif frequency == 'week':
            res = df.query('isWeekEnd==1')
        elif frequency == 'day':
            res = df.query('isOpen==1')
        else:
            raise ValueError('调仓频率必须为day/week/month/quarter/semi!!!')
        return list(res['calendarDate'])
Esempio n. 4
0
def get_features(security_id=u"300634.XSHE", start_date='20191202', end_date='20191206', min_unit="1", tick=False,
                 bc='', win_len=20):
    df = DataAPI.TradeCalGet(exchangeCD=u"XSHG,XSHE", beginDate=start_date.replace('-', ''),
                             endDate=end_date.replace('-', ''), isOpen=u"1",
                             field=u"calendarDate", pandas="1")
    t_dates = list(set(df['calendarDate']))
    df_min = DataAPI.MktBarHistDateRangeGet(securityID=security_id, startDate=start_date.replace('-', ''),
                                            endDate=end_date.replace('-', ''),
                                            unit=min_unit, field=u"", pandas="1")
    df_bc_min = DataAPI.MktBarHistDateRangeGet(securityID=bc, startDate=start_date.replace('-', ''),
                                               endDate=end_date.replace('-', ''),
                                               unit=min_unit, field=u"", pandas="1")
    lst = []
    for date in t_dates:
        _df_min = df_min[df_min.dataDate == date]
        _df_bc_min = df_bc_min[df_bc_min.dataDate == date]
        _df = get_features_by_date(security_id=security_id, date=date, min_unit=min_unit, tick=tick, df_min=_df_min,
                                   df_bc_min=_df_bc_min, win_len=win_len)
        lst.append(_df)
    try:
        ret = pd.concat(lst, axis=0)
    except Exception as ex:
        logger.warn('concat the feautres for security id:{0} with error:{1}'.format(security_id, ex))
        ret = None
    return ret
Esempio n. 5
0
def uqer1(start, end, fre='day'):
    client = uqer.Client(
        token='811e6680b27759e045ed16e2ed9b408dc8a0cbffcf14e4bb755144dd45fa5ea0'
    )
    trade_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                    beginDate=start,
                                    endDate=end,
                                    field=u"",
                                    pandas="1")

    trade_day = trade_day[trade_day.isOpen == 1][[
        'calendarDate', 'isWeekEnd', 'isMonthEnd'
    ]]

    if fre == 'month':
        df = trade_day[trade_day.isMonthEnd == 1]['calendarDate']
    elif fre == 'week':
        df = trade_day[trade_day.isWeekEnd == 1]['calendarDate']
    elif fre == 'day':
        df = trade_day['calendarDate']
    elif fre == '2week':
        df = trade_day[trade_day.isWeekEnd == 1][['calendarDate', 'isWeekEnd']]
        df = df[1::2]
        df = df['calendarDate']
    else:
        print 'change fre parameter'
        raise ValueError
    df.index = range(len(df))
    df = pd.DataFrame(df)
    df['calendarDate'] = pd.to_datetime(df['calendarDate'], format='%Y-%m-%d')
    df['calendarDate'] = df['calendarDate'].apply(
        lambda x: x.strftime("%Y%m%d"))
    df = df['calendarDate']
    df.name = 'trade_day'
    return df
Esempio n. 6
0
def tdaysoffset_uqer(tdate, N, fre, offset):
    client = uqer.Client(
        token='811e6680b27759e045ed16e2ed9b408dc8a0cbffcf14e4bb755144dd45fa5ea0'
    )
    all_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                  beginDate='19000101',
                                  endDate='20181231',
                                  field=u"",
                                  pandas="1")
    all_day = all_day[all_day.isOpen == 1]
    all_day = all_day.reset_index(drop=True)
    all_day['calendarDate'] = pd.to_datetime(all_day['calendarDate'],
                                             format='%Y-%m-%d')
    all_day['calendarDate'] = all_day['calendarDate'].apply(
        lambda x: x.strftime("%Y%m%d"))

    tdate_index = all_day[all_day.calendarDate <= tdate]
    tdate_index = len(tdate_index) - 1
    if fre == 'day':
        t_index = tdate_index + N * offset
    elif fre == 'week':
        t_index = tdate_index + N * 5 * offset

    if t_index > len(all_day) - 1:
        t = None
    elif t_index < 0:
        t = None
    else:
        t = all_day.ix[t_index, 'calendarDate']
    return t
Esempio n. 7
0
 def custom_fetch_date(self, start_date, end_date, interval):
     df = DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=start_date,
                              endDate=end_date, field='calendarDate,isOpen',pandas="1")
     df = df[df['isOpen']==1]
     str_trade_date_list = list(set(df['calendarDate']))
     str_trade_date_list.sort(reverse=False)
     str_trade_date_list = list(filter(lambda x: str_trade_date_list.index(x) % interval == 0, str_trade_date_list))
     trade_date_list = [datetime.datetime.strptime(d, '%Y-%m-%d').date() for d in str_trade_date_list]
     return trade_date_list
Esempio n. 8
0
 def get_latest_trading_day_map(self):
     df = DataAPI.TradeCalGet(exchangeCD=u"XSHG", field=u"", pandas="1")
     df['calendarDate'] = df['calendarDate'].apply(
         lambda x: x.replace('-', ''))
     trading_day_series = df[df['isOpen'] == 1]['calendarDate']
     trading_day_series.index = trading_day_series.values
     df.set_index('calendarDate', inplace=True)
     df['tradeDate'] = trading_day_series
     df['tradeDate'].fillna(method='ffill', inplace=True)
     return df['tradeDate']
Esempio n. 9
0
def get_month_start_end_dates(start_date='', end_date=''):
    df = DataAPI.TradeCalGet(exchangeCD=u"XSHG,XSHE", beginDate=start_date, endDate=end_date, isOpen=u"1",
                             field=u"", pandas="1")
    t_dates = list(set(df['calendarDate']))
    t_dates = sorted(t_dates)
    df = df[df.isMonthEnd == 1]
    t_month_end = list(set(df['calendarDate']))
    t_month_end = sorted(t_month_end)
    ret = [t_dates[0]]
    for d in t_month_end:
        try:
            _idx = t_dates.index(d)
            ret.append(d)
            ret.append(t_dates[_idx + 1])
        except Exception as ex:
            pass
    return ret
Esempio n. 10
0
    def getTradeday(self):
        #        if not os.path.isfile('tradeday_%s_%s.csv'%(self.start,self.end)):
        #            trade_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=self.start,endDate=self.end,field=u"",pandas="1")
        #            trade_day.to_csv('tradeday_%s_%s.csv'%(self.start,self.end))
        #
        #        trade_day = pd.read_csv('tradeday_%s_%s.csv'%(self.start,self.end),index_col = 0)
        trade_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                        beginDate=self.start,
                                        endDate=self.end,
                                        field=u"",
                                        pandas="1")
        trade_day = trade_day[trade_day.isOpen == 1][[
            'calendarDate', 'isWeekEnd', 'isMonthEnd'
        ]]

        if self.fre == 'month':
            df = trade_day[trade_day.isMonthEnd == 1]['calendarDate']
        elif self.fre == 'week':
            df = trade_day[trade_day.isWeekEnd == 1]['calendarDate']
        elif self.fre == 'day':
            df = trade_day['calendarDate']
        elif self.fre == '2week':
            df = trade_day[trade_day.isWeekEnd == 1][[
                'calendarDate', 'isWeekEnd'
            ]]
            df = df[1::2]
            df = df['calendarDate']
        else:
            print 'change fre parameter'
            raise ValueError
        df.index = range(len(df))
        df = pd.DataFrame(df)
        df['calendarDate'] = pd.to_datetime(df['calendarDate'],
                                            format='%Y-%m-%d')
        df['calendarDate'] = df['calendarDate'].apply(
            lambda x: x.strftime("%Y%m%d"))
        df = df['calendarDate']
        return df
Esempio n. 11
0
 def _fetch_all_date(self, start_date, end_date, columns):
     from uqer import DataAPI
     field = 'calendarDate,' + columns
     df = DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=start_date,
                              endDate=end_date, field=field,pandas="1")
     return df