Пример #1
0
    def __init__(self, start_time: datetime.datetime, end_time: datetime.datetime, frequency: str):
        assert is_aware_datetime(start_time)
        assert is_aware_datetime(end_time)

        if start_time >= end_time:
            raise SettingError(_("START TIME can not bigger than END TIME"))
        self.start_time = start_time
        self.end_time = end_time
        self.frequency = FREQ_DICT.get(frequency)

        self.current = start_time
Пример #2
0
 def active_instruments(
         self, date_time: datetime.datetime) -> Dict[str, Instrument]:
     assert is_aware_datetime(date_time)
     active = {}
     for instrument in self.instruments.values():
         if instrument.expiry_date is None:
             active[instrument.symbol] = instrument
             continue
         if instrument.listing_date is None:
             continue
         if instrument.listing_date < date_time and instrument.expiry_date > date_time:
             active[instrument.symbol] = instrument
     return active
Пример #3
0
 def get_last_price(self, symbol: str,
                    date_time: datetime.datetime) -> float:
     assert is_aware_datetime(date_time)
     kline = self._kline_store.get(symbol)
     time_target = make_datetime_exactly(date_time, "T", forward=False)
     try:
         bar = kline.loc[time_target]
         return bar['close']
     except KeyError:
         logger.warning(
             _("Instrument {} on {} has no bar data., Use 0 as last price".
               format(symbol, date_time)))
         return 0.0
Пример #4
0
 def get_kline(self, symbol: str, date_time: datetime.datetime,
               count: int) -> pandas.DataFrame:
     assert is_aware_datetime(date_time)
     kline_frame = self._kline_store.get(symbol)
     target_klines = kline_count_window(kline_frame, date_time, count)
     return target_klines
Пример #5
0
def test_aware_datetime() -> None:
    d1 = datetime.datetime(2018, 1, 1, 12, 0, 0)
    assert not is_aware_datetime(d1)

    d2 = datetime.datetime(2018, 1, 1, 12, tzinfo=pytz.utc)
    assert is_aware_datetime(d2)