def set_feed(self, episode: 'int') -> None: """Sets the current feed. Parameters ---------- episode : `int` The episodes of the feed to set. """ for exchange in self.portfolio.exchanges: exchange.set_episode(episode) internal_group = Stream.group(_create_internal_streams(self.portfolio)).rename("internal") external_group = Stream.group(self.feeds[episode].inputs).rename("external") if self.renderer_feeds: renderer_group = Stream.group(self.renderer_feeds[episode].inputs).rename("renderer") self.feed = DataFeed([ internal_group, external_group, renderer_group ]) else: self.feed = DataFeed([ internal_group, external_group ]) self.feed = self.feed.attach(self.portfolio) self.feed.compile()
def __init__(self, portfolio: 'Portfolio', feed: 'DataFeed' = None, renderer_feed: 'DataFeed' = None, stop_time: 'datetime.time' = dt.time(16, 0, 0), window_size: int = 1, min_periods: int = None, randomize: bool = False, **kwargs) -> None: internal_group = Stream.group( _create_internal_streams(portfolio)).rename("internal") external_group = Stream.group(feed.inputs).rename("external") if renderer_feed: renderer_group = Stream.group( renderer_feed.inputs).rename("renderer") self.feed = DataFeed( [internal_group, external_group, renderer_group]) else: self.feed = DataFeed([internal_group, external_group]) self.stop_time = stop_time self.window_size = window_size self.min_periods = min_periods self.randomize = randomize self._observation_dtype = kwargs.get('dtype', np.float32) self._observation_lows = kwargs.get('observation_lows', -np.inf) self._observation_highs = kwargs.get('observation_highs', np.inf) self.history = ObservationHistory(window_size=window_size) initial_obs = self.feed.next()["external"] initial_obs.pop('timestamp', None) n_features = len(initial_obs.keys()) self._observation_space = Box(low=self._observation_lows, high=self._observation_highs, shape=(self.window_size, n_features), dtype=self._observation_dtype) self.feed = self.feed.attach(portfolio) self.renderer_history = [] if self.randomize: self.num_episodes = 0 while (self.feed.has_next()): ts = self.feed.next()["external"]["timestamp"] if ts.time() == self.stop_time: self.num_episodes += 1 self.feed.reset() self.warmup() self.stop = False
def __init__(self, portfolio: 'Portfolio', feed: 'DataFeed' = None, renderer_feed: 'DataFeed' = None, window_size: int = 1, min_periods: int = None, **kwargs) -> None: internal_group = Stream.group( _create_internal_streams(portfolio)).rename("internal") external_group = Stream.group(feed.inputs).rename("external") # print('---------===0') # print(feed, '---input feed: ', feed.next() ) # print(renderer_feed, '---input render feed: ', renderer_feed.next()) # print(internal_group.streams , '-------------------------', external_group.streams ) # print('---------0') if renderer_feed: renderer_group = Stream.group( renderer_feed.inputs).rename("renderer") # print('--- render group: ', renderer_group.streams) # print('-----------======making push feed in observer') self.feed = PushFeed( [internal_group, external_group, renderer_group]) else: self.feed = DataFeed([internal_group, external_group]) self.window_size = window_size self.min_periods = min_periods self._observation_dtype = kwargs.get('dtype', np.float32) self._observation_lows = kwargs.get('observation_lows', -np.inf) self._observation_highs = kwargs.get('observation_highs', np.inf) self.history = ObservationHistory(window_size=window_size) # print('---------') # print('---feed: ', self.feed, ' has next') # print('---rendere: ', self.feed.next()['renderer']) # print('---external: ', self.feed.next()['external']) # print('---internal: ', self.feed.next()['internal']) # print('---------') # initial_obs = self.feed.next()["external"] # n_features = len(initial_obs.keys()) n_features = 28 self._observation_space = Box(low=self._observation_lows, high=self._observation_highs, shape=(self.window_size, n_features), dtype=self._observation_dtype) self.feed = self.feed.attach(portfolio) self.renderer_history = [] self.feed.reset()
def __init__(self, portfolio: 'Portfolio', feed: 'DataFeed' = None, renderer_feed: 'DataFeed' = None, window_size: int = 1, min_periods: int = None, **kwargs) -> None: internal_group = Stream.group(_create_internal_streams(portfolio)).rename("internal") external_group = Stream.group(feed.inputs).rename("external") if renderer_feed: renderer_group = Stream.group(renderer_feed.inputs).rename("renderer") self.feed = DataFeed([ internal_group, external_group, renderer_group ]) else: self.feed = DataFeed([ internal_group, external_group ]) self.window_size = window_size self.min_periods = min_periods self._observation_dtype = kwargs.get('dtype', np.float32) self._observation_lows = kwargs.get('observation_lows', -np.inf) self._observation_highs = kwargs.get('observation_highs', np.inf) self.history = ObservationHistory(window_size=window_size) initial_obs = self.feed.next()["external"] n_features = len(initial_obs.keys()) self._observation_space = Box( low=self._observation_lows, high=self._observation_highs, shape=(self.window_size, n_features), dtype=self._observation_dtype ) self.feed = self.feed.attach(portfolio) self.renderer_history = [] self.feed.reset() self.warmup()