Skip to content

Examples

SMACrossover

Bases: StrategyBase

setup()

Source code in src/onesecondtrader/strategies/examples.py
def setup(self) -> None:
    self.fast_sma = self.add_indicator(
        indicators.SimpleMovingAverage(period=self.fast_period)  # type: ignore[attr-defined]
    )
    self.slow_sma = self.add_indicator(
        indicators.SimpleMovingAverage(period=self.slow_period)  # type: ignore[attr-defined]
    )

on_bar(event)

Source code in src/onesecondtrader/strategies/examples.py
def on_bar(self, event: events.market.BarReceived) -> None:
    sym = event.symbol
    if (
        self.fast_sma[sym, -2] <= self.slow_sma[sym, -2]
        and self.fast_sma.latest(sym) > self.slow_sma.latest(sym)
        and self.position <= 0
    ):
        self.submit_order(
            models.OrderType.MARKET,
            models.TradeSide.BUY,
            self.quantity,  # type: ignore[attr-defined]
            action=models.ActionType.ENTRY,
            signal="sma_crossover_up",
        )

    if (
        self.fast_sma[sym, -2] >= self.slow_sma[sym, -2]
        and self.fast_sma.latest(sym) < self.slow_sma.latest(sym)
        and self.position >= 0
    ):
        self.submit_order(
            models.OrderType.MARKET,
            models.TradeSide.SELL,
            self.quantity,  # type: ignore[attr-defined]
            action=models.ActionType.EXIT,
            signal="sma_crossover_down",
        )