def iterate_timestamps(security_type, exchange, start_timestamp: pd.Timestamp, end_timestamp: pd.Timestamp, level=TradingLevel.LEVEL_1DAY, contain_all_timestamp=True, kdata_use_begin_time=False) -> pd.Timestamp: """ :param security_type: :type security_type: Union[str, zvt.domain.common.SecurityType] :param exchange: :type exchange: str :param start_timestamp: :type start_timestamp: Union[str, pd.Timestamp] :param end_timestamp: :type end_timestamp: Union[str, pd.Timestamp] :param level: :type level: zvt.domain.common.TradingLevel :param contain_all_timestamp: always contain begin and end timestamp :type contain_all_timestamp: bool :param kdata_use_begin_time: true means the interval [timestamp,timestamp+level),false means [timestamp-level,timestamp) :type kdata_use_begin_time: bool :return: :rtype: List[pandas._libs.tslibs.timestamps.Timestamp] """ date_range = pd.date_range(start=start_timestamp, end=end_timestamp, freq='1D').tolist() if level == TradingLevel.LEVEL_1DAY: return date_range if level < TradingLevel.LEVEL_1DAY: start_end_list = get_trading_intervals(security_type=security_type, exchange=exchange) time_ranges = [] for date in date_range: for start_end in start_end_list: start = start_end[0] end = start_end[1] start_date = date_and_time(the_date=date, the_time=start) end_date = date_and_time(the_date=date, the_time=end) if end == '00:00': end_date = end_date + pd.Timedelta(days=1) time_range = pd.date_range(start=start_date, end=end_date, freq=level.to_pd_freq()).tolist() if contain_all_timestamp: time_ranges += time_range else: if kdata_use_begin_time: time_ranges += time_range[:-1] else: time_ranges += time_range[1:] time_ranges = list(set(time_ranges)) time_ranges.sort() return time_ranges return date_range
def is_open_timestamp(cls, timestamp): timestamp = pd.Timestamp(timestamp) return is_same_time( timestamp, date_and_time(the_date=timestamp.date(), the_time=cls.get_trading_intervals()[0][0]))
def is_close_time(entity_type, exchange, timestamp): return is_same_time( timestamp, date_and_time(the_date=timestamp, the_time=get_trading_intervals( entity_type=entity_type, exchange=exchange)[-1][-1]))