示例#1
0
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
示例#2
0
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)
示例#3
0
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')
示例#4
0
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")