class PyStrategy(TradingStrategy): """ A strategy which is empty and does nothing. """ def __init__(self, bar_type: BarType): """ Initializes a new instance of the PyStrategy class. """ super().__init__(order_id_tag='001') self.bar_type = bar_type self.object_storer = ObjectStorer() def on_start(self): self.subscribe_bars(self.bar_type) def on_tick(self, tick): pass def on_bar(self, bar_type, bar): print(bar) self.object_storer.store_2(bar_type, bar) def on_instrument(self, instrument): pass def on_event(self, event): self.object_storer.store(event) def on_stop(self): pass def on_reset(self): pass def on_save(self): return {} def on_load(self, state): pass def on_dispose(self): pass
class PyStrategy(TradingStrategy): """ A strategy which is empty and does nothing. """ def __init__(self, bar_type: BarType): """Initialize a new instance of the PyStrategy class.""" super().__init__(order_id_tag="001") self.bar_type = bar_type self.object_storer = ObjectStorer() def on_start(self): self.subscribe_bars(self.bar_type) def on_bar(self, bar_type, bar): self.object_storer.store_2(bar_type, bar) def on_event(self, event): self.object_storer.store(event)
class TestStrategy1(TradingStrategy): """" A simple strategy for unit testing. """ __test__ = False def __init__(self, bar_type, id_tag_strategy='001', clock=TestClock()): """ Initializes a new instance of the TestStrategy1 class. """ super().__init__(order_id_tag=id_tag_strategy, clock=clock) self.object_storer = ObjectStorer() self.bar_type = bar_type self.ema1 = ExponentialMovingAverage(10) self.ema2 = ExponentialMovingAverage(20) self.register_indicator(self.bar_type, self.ema1, self.ema1.update) self.register_indicator(self.bar_type, self.ema2, self.ema2.update) self.position_id = None def on_start(self): self.object_storer.store('custom start logic') self.account_inquiry() def on_tick(self, tick): self.object_storer.store(tick) def on_bar(self, bar_type, bar): self.object_storer.store((bar_type, Bar)) if bar_type.equals(self.bar_type): if self.ema1.value > self.ema2.value: buy_order = self.order_factory.market(self.bar_type.symbol, Label('TestStrategy1_E'), OrderSide.BUY, 100000) self.submit_order(buy_order, PositionId(str(buy_order.id))) self.position_id = buy_order.id elif self.ema1.value < self.ema2.value: sell_order = self.order_factory.market( self.bar_type.symbol, Label('TestStrategy1_E'), OrderSide.SELL, 100000) self.submit_order(sell_order, PositionId(str(sell_order.id))) self.position_id = sell_order.id def on_instrument(self, instrument): self.object_storer.store(instrument) def on_event(self, event): self.object_storer.store(event) def on_stop(self): self.object_storer.store('custom stop logic') def on_reset(self): self.object_storer.store('custom reset logic') def on_save(self): self.object_storer.store('custom save logic') return {} def on_load(self, state): self.object_storer.store('custom load logic') def on_dispose(self): self.object_storer.store('custom dispose logic')
class TestStrategy1(TradingStrategy): """ A simple strategy for unit testing. """ __test__ = False def __init__(self, bar_type, id_tag_strategy="001"): """Initialize a new instance of the TestStrategy1 class.""" super().__init__(order_id_tag=id_tag_strategy) self.object_storer = ObjectStorer() self.bar_type = bar_type self.ema1 = ExponentialMovingAverage(10) self.ema2 = ExponentialMovingAverage(20) self.register_indicator_for_bars(self.bar_type, self.ema1) self.register_indicator_for_bars(self.bar_type, self.ema2) self.position_id = None def on_start(self): self.object_storer.store("custom start logic") def on_quote_tick(self, tick): self.object_storer.store(tick) def on_bar(self, bar_type, bar): self.object_storer.store((bar_type, Bar)) if bar_type == self.bar_type: if self.ema1.value > self.ema2.value: buy_order = self.order_factory.market( self.bar_type.symbol, OrderSide.BUY, 100000, ) self.submit_order(buy_order) self.position_id = buy_order.cl_ord_id elif self.ema1.value < self.ema2.value: sell_order = self.order_factory.market( self.bar_type.symbol, OrderSide.SELL, 100000, ) self.submit_order(sell_order) self.position_id = sell_order.cl_ord_id def on_instrument(self, instrument): self.object_storer.store(instrument) def on_event(self, event): self.object_storer.store(event) def on_stop(self): self.object_storer.store("custom stop logic") def on_reset(self): self.object_storer.store("custom reset logic") def on_save(self): self.object_storer.store("custom save logic") return {} def on_load(self, state): self.object_storer.store("custom load logic") def on_dispose(self): self.object_storer.store("custom dispose logic")