def test_combine_date_time(): date = 20170101 time = 145930 assert jutil.combine_date_time(date, time) == 20170101145930 a = np.arange(20170101, 20170101 + 500, dtype=np.int64) b = np.arange(93000, 93000 + 500, dtype=np.int64) assert np.all(jutil.combine_date_time(a, b) == a * 1000000 + b)
def test_dtutil(): import datetime date = 20170105 dt = jutil.convert_int_to_datetime(date) assert jutil.shift(date, 2) == 20170119 assert jutil.convert_datetime_to_int(jutil.shift(dt, 2)) == 20170119 t = 145539 dt = jutil.combine_date_time(date, t) assert jutil.split_date_time(dt) == (date, t) assert jutil.get_next_period_day(date, 'day', 1, 1) == 20170109 assert jutil.get_next_period_day(date, 'week', 2, 0) == 20170116 assert jutil.get_next_period_day(date, 'month', 1, 0) == 20170201 date = 20170808 assert jutil.get_next_period_day(20170831, 'day', extra_offset=1) == 20170904 assert jutil.get_next_period_day(20170831, 'day', n=2, extra_offset=0) == 20170904 assert jutil.get_next_period_day(20170831, 'day', n=7, extra_offset=0) == 20170911 assert jutil.get_next_period_day(20170831, 'week', extra_offset=1) == 20170905 assert jutil.get_next_period_day(20170831, 'month', extra_offset=0) == 20170901 monthly = 20170101 while monthly < 20180301: monthly = jutil.get_next_period_day(monthly, 'month', extra_offset=0) assert datetime.datetime.strptime(str(monthly), "%Y%m%d").weekday() < 5
def _init_trades(self, df): """Add datetime column. """ df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'], df.loc[:, 'fill_time']) df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0) # self._trades = jutil.group_df_to_dict(df, by='symbol') self._trades = df
def _init_trades(self, df): """ Modify trading records dataframe. (Add datetime column) Parameters ---------- df : pd.DataFrame Each row represents a single trading record. """ df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'], df.loc[:, 'fill_time']) df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0) # self._trades = jutil.group_df_to_dict(df, by='symbol') self._trades = df
def _init_trades(self, df): """ Modify trading records dataframe. (Add datetime column) Parameters ---------- df : pd.DataFrame Each row represents a single trading record. """ self._raw_trades = df.copy() df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'], df.loc[:, 'fill_time']) df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0) # self._trades = jutil.group_df_to_dict(df, by='symbol') self._trades = df
def _create_time_symbol_bars(self, date): from collections import defaultdict # query quotes data symbols_str = ','.join(self.ctx.universe) df_quotes, msg = self.ctx.data_api.bar(symbol=symbols_str, start_time=200000, end_time=160000, trade_date=date, freq=self.bar_type) if msg != '0,': print msg if df_quotes is None or df_quotes.empty: return dict() # create nested dict quotes_list = Bar.create_from_df(df_quotes) dic = defaultdict(dict) for quote in quotes_list: dic[jutil.combine_date_time(quote.date, quote.time)][quote.symbol] = quote return dic