IbkrApi.Backtester.Strategy behaviour (ibkr_api v1.0.0)

View Source

Behaviour for defining backtesting strategies.

Strategies implement the signal/3 callback to generate buy/sell/hold signals based on current market data and historical context.

Summary

Callbacks

Optional callback for strategy initialization.

Generates a trading signal based on current bar and historical data.

Callbacks

init(opts)

(optional)
@callback init(opts :: keyword()) :: map()

Optional callback for strategy initialization.

Called once before backtesting begins. Can be used to set up initial state, validate parameters, etc.

Default implementation returns an empty map.

signal(current_bar, previous_bars, state)

@callback signal(
  current_bar :: IbkrApi.Backtester.Bar.t(),
  previous_bars :: [IbkrApi.Backtester.Bar.t()],
  state :: map()
) :: {:buy | :sell | :hold, map()}

Generates a trading signal based on current bar and historical data.

Parameters

  • current_bar: The current bar being processed
  • previous_bars: List of previous bars (most recent first)
  • state: Strategy-specific state map for maintaining indicators, etc.

Returns

A tuple containing the signal (:buy, :sell, or :hold) and updated state.

Examples

def signal(bar, prev_bars, state) do
  if bar.close > calculate_sma(prev_bars, 20) do
    {:buy, state}
  else
    {:sell, state}
  end
end