def available_data_range(self, frequency): if frequency in ['tick', '1d']: s, e = self._day_bars[ self.INSTRUMENT_TYPE_MAP['INDX']].get_date_range('000001.XSHG') return convert_int_to_date(s).date(), convert_int_to_date(e).date() raise NotImplementedError
def events(self, start_date, end_date, frequency): s, e = self._env.data_source._day_bars[ INSTRUMENT_TYPE.INDX].get_date_range('000001.XSHG') event_end_date = convert_int_to_date(e) if convert_int_to_date( e).date() < self._end_date else self._end_date return super(IncrementalEventSource, self).events(self._event_start_date, event_end_date, frequency)
def available_data_range(self, frequency): # FIXME from rqalpha.const import DEFAULT_ACCOUNT_TYPE accounts = Environment.get_instance().config.base.accounts if not (DEFAULT_ACCOUNT_TYPE.STOCK in accounts or DEFAULT_ACCOUNT_TYPE.FUTURE in accounts): return date.min, date.max if frequency in ['tick', '1d']: s, e = self._day_bars[INSTRUMENT_TYPE.INDX].get_date_range('000001.XSHG') return convert_int_to_date(s).date(), convert_int_to_date(e).date()
def available_data_range(self, frequency): if self._market == MARKET.CN: if frequency in ['tick', '1d']: s, e = self._day_bars[self.INSTRUMENT_TYPE_MAP[ 'INDX']].get_date_range('000001.XSHG') return convert_int_to_date(s).date(), convert_int_to_date( e).date() elif self._market == MARKET.HK: # FIXME return datetime.date(2015, 1, 1), datetime.datetime.now().date() raise NotImplementedError
def available_data_range(self, frequency): """ 此数据源能提供数据的时间范围 :param str frequency: 周期频率,`1d` 表示日周期, `1m` 表示分钟周期 :return: (earliest, latest) """ if frequency == '1d': mongo_data = self._day_bars[ self.INSTRUMENT_TYPE_MAP['INDX']]['000001.XSHG'].find({}, { "_id": 0 }).sort('date', pymongo.ASCENDING) mongo_data = list(mongo_data) s, e = np.uint32(mongo_data[0]['date']), np.uint32( mongo_data[-1]['date']) return convert_int_to_date(s).date(), convert_int_to_date(e).date() if frequency == '1m': raise NotImplementedError
def available_data_range(self, frequency): if frequency in ['tick', '1d']: s, e = self._day_bars[INSTRUMENT_TYPE.INDX].get_date_range( '000001.XSHG') return convert_int_to_date(s).date(), convert_int_to_date(e).date()
def get_available_data_range(self): min_date, max_date = self._table.attrs["min_date"], self._table.attrs["max_date"] return convert_int_to_date(min_date).date(), convert_int_to_date(max_date).date()
def available_data_range(self, frequency): if frequency in ['tick', '1d']: s, e = self._day_bars[self.INSTRUMENT_TYPE_MAP['INDX']].get_date_range('000001.XSHG') return convert_int_to_date(s).date(), convert_int_to_date(e).date() raise NotImplementedError
def raw_history_bars(self, instrument, frequency, start_dt=None, end_dt=None, length=None): if frequency[-1] == "m": days = [] if start_dt and end_dt: assert start_dt <= end_dt, "start datetime later then end datetime!" s_date, s_time = start_dt.date(), start_dt.time() e_date, e_time = end_dt.date(), end_dt.time() s_date_int = convert_date_to_int(s_date) e_date_int = convert_date_to_int(e_date) dates = self._dates_index(instrument) s_pos = safe_searchsorted(dates, s_date_int) e_pos = safe_searchsorted(dates, e_date_int, side="right") - 1 if s_pos == e_pos: days.append( dict( trade_date=convert_int_to_date(dates[s_pos]), start_time=s_time, end_time=e_time, )) else: days.append( dict(trade_date=convert_int_to_date(dates[s_pos]), start_time=s_time)) days.extend( map(lambda x: dict(trade_date=convert_int_to_date(x)), dates[s_pos + 1:e_pos])) days.append( dict(trade_date=convert_int_to_date(dates[e_pos]), end_time=e_time)) post_handler = lambda x: x elif start_dt and length: s_date, s_time = start_dt.date(), int( start_dt.strftime("%H%M%S")) dates = self._dates_index(instrument) s_date_int = convert_date_to_int(s_date) s_pos = safe_searchsorted(dates, s_date_int) s_bar_count = self.get_bar_count_in_day(instrument, frequency, trade_date=s_date, start_time=s_time) total_bar_count = self.get_bar_count_in_day( instrument, frequency) extra_days = (max(length - s_bar_count, 0) - 1) // total_bar_count + 1 days.append(dict(trade_date=s_date, start_time=s_time)) days.extend( map(lambda x: dict(trade_date=convert_int_to_date(x)), dates[s_pos + 1:s_pos + 1 + extra_days])) post_handler = lambda x: x[:length] elif end_dt and length: e_date, e_time = end_dt.date(), int(end_dt.strftime("%H%M%S")) dates = self._dates_index(instrument) e_date_int = convert_date_to_int(e_date) e_pos = safe_searchsorted(dates, e_date_int, side="right") - 1 e_bar_count = self.get_bar_count_in_day(instrument, frequency, trade_date=e_date, end_time=e_time) total_bar_count = self.get_bar_count_in_day( instrument, frequency) extra_days = (max(length - e_bar_count, 0) - 1) // total_bar_count + 1 days.extend( map(lambda x: dict(trade_date=convert_int_to_date(x)), dates[max(e_pos - extra_days, 0):e_pos])) days.append(dict(trade_date=e_date, end_time=e_time)) post_handler = lambda x: x[-length:] else: raise RuntimeError( "At least two of [start_dt,end_dt,length] should be given." ) data = post_handler( self._get_bars_in_days(instrument, frequency, days)) return data else: return None