Exemple #1
0
    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))
Exemple #2
0
 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())