def create_trade_history(sid, prices, amounts, interval, trading_calendar): trades = [] current = trading_calendar.first_open for price, amount in zip(prices, amounts): trade = create_trade(sid, price, amount, current) trades.append(trade) current = get_next_trading_dt(current, interval, trading_calendar) assert len(trades) == len(prices) return trades
def create_trade_history(sid, prices, amounts, interval, sim_params, source_id="test_factory"): trades = [] current = sim_params.first_open for price, amount in zip(prices, amounts): trade = create_trade(sid, price, amount, current, source_id) trades.append(trade) current = get_next_trading_dt(current, interval) assert len(trades) == len(prices) return trades
def create_fresh_generator(self): if self.event_list: event_gen = (event for event in self.event_list) unfiltered = self.update_source_id(event_gen) # Set up iterators for each expected field. else: if self.concurrent: # in this context the count is the number of # trades per sid, not the total. dates = date_gen( count=self.count, start=self.start, delta=self.delta, repeats=len(self.sids), ) else: dates = date_gen( count=self.count, start=self.start, delta=self.delta ) prices = mock_prices(self.count) volumes = mock_volumes(self.count) sids = cycle(self.sids) # Combine the iterators into a single iterator of arguments arg_gen = izip(sids, prices, volumes, dates) # Convert argument packages into events. unfiltered = (create_trade(*args, source_id=self.get_hash()) for args in arg_gen) # If we specified a sid filter, filter out elements that don't # match the filter. if self.filter: filtered = ifilter( lambda event: event.sid in self.filter, unfiltered) # Otherwise just use all events. else: filtered = unfiltered # Return the filtered event stream. return filtered