true if this event was emitted from a backtest run, false if from a
live trading run. Use this to branch listener logic without inspecting
other fields.
Average symbol price observed at the moment the event was emitted,
fetched from ExchangeConnectionService.getAveragePrice(symbol).
Provided as a convenience so subscribers don't need to query the
exchange themselves.
Name of the exchange providing market data for this run.
Name of the frame (timeframe / date range) for the run. Empty string in live mode, where frames are not used.
Name of the strategy being executed. Use this to demultiplex events when subscribing globally to runs across multiple strategies on the same symbol.
Trading symbol the run is for (e.g., "BTCUSDT", "ETHUSDT").
Same value that was passed to Backtest.run / Live.run.
Same value as when, expressed as milliseconds since the Unix epoch.
Provided so subscribers can avoid calling .getTime() and to keep the
payload trivially serialisable (e.g., for forwarding over IPC or
writing to a log).
Event time as a Date instance.
In backtest: the planned start of the frame (aligned to 1-minute boundary). Represents intended start time, not the moment of emission.
In live: wall-clock now, aligned to 1-minute boundary.
Always equal to new Date(timestamp).
Contract for the beforeStart lifecycle event of strategy execution.
Emitted by the engine immediately before it begins iterating the strategy for a given symbol — after validation and context setup, but before the first candle/tick is processed. Used by subscribers to perform initialization that should happen exactly once per run: opening log files, resetting per-run accumulators, sending a "run started" notification, snapshotting initial state, etc.
Guarantees:
run()invocation, before any signal is yielded.AfterEndContractevent for the same run, even if the iterator is interrupted, throws, or is cancelled externally. If beforeStart fires, afterEnd is guaranteed to fire afterwards.Mode differences:
whenis the planned start of the frame (from FrameSchemaService.startDate, aligned to 1-minute boundary). It is the intended beginning of the historical replay, not wall-clock time.whenis the current wall-clock time aligned to the 1-minute boundary.See
AfterEndContract — the paired completion event.