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)
Exemple #3
0
 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()
Exemple #4
0
 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
Exemple #5
0
    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
Exemple #6
0
 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()
Exemple #7
0
 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