def __init__(self, algo, working_capital, order_book, data_provider): if not isinstance(algo, Framework): raise TypeError( "algorithm must be a subclass of strategy.strategy.Framework") if not isinstance(order_book, OrderBook): raise TypeError("order_book must be a subclass of OrderBook") if not isinstance(data_provider, MarketData): raise TypeError("data_provider must be a subclass of MarketData") self.algo = algo self.starting_capital = working_capital self.order_book = order_book self.data_provider = data_provider self.context = Context(working_capital, self.order_book, self.algo.analysis_symbols(), self.algo.quote_cache_size()) self.algo.initialise_context(self.context) self.order_book.addOrderStatusObserver(self.context, self.order_status_update) self.order_book.addPositionStatusObserver( self.context, self.position_status_observer) for (symbol, period, callback) in self.algo.analysis_symbols(): self.data_provider.addPriceObserver( symbol, period, partial(self.handle_tick_update, callback))
def setUp(self): Symbol.set_info_provider(DummySymbolProvider()) self.order_router = TestOrderRouter() self.algo = NakedBigShadow(10, 50, 100, MarketDataPeriod.HOUR_1) self.context = Context(10000, OrderBook(self.order_router, BacktestOrderbookPersist()), self.algo.analysis_symbols(), self.algo.quote_cache_size())