Action configuration object
Action schema registered via addActionSchema(). Defines event handler implementation and lifecycle callbacks for state management integration.
Actions provide a way to attach custom event handlers to strategies for:
Each action instance is created per strategy-frame pair and receives all events emitted during strategy execution. Multiple actions can be attached to a single strategy.
Unique action identifier for registration
Optionalcallbacks?: Partial<IActionCallbacks>Optional lifecycle and event callbacks
Action handler constructor (instantiated per strategy-frame pair)
Optionalnote?: stringOptional developer note for documentation
// Using class-based handler
class TelegramNotifier implements Partial<IPublicAction> {
constructor(
private strategyName: StrategyName,
private frameName: FrameName,
private actionName: ActionName
) {}
async init() {
this.bot = new TelegramBot(process.env.TELEGRAM_TOKEN);
await this.bot.connect();
}
async signal(event: IStrategyTickResult) {
if (event.action === 'opened') {
await this.bot.send(`New signal: ${event.signal.side}`);
}
}
async dispose() {
await this.bot?.disconnect();
}
}
addAction({
actionName: "telegram-notifier",
handler: TelegramNotifier,
callbacks: {
onInit: (actionName, strategyName, frameName, backtest) => {
console.log(`[${actionName}] Initialized for ${strategyName}/${frameName}`);
},
onSignal: (event, actionName, strategyName, frameName, backtest) => {
console.log(`[${actionName}] Signal event: ${event.action}`);
},
},
});
// Using plain object handler
addAction({
actionName: "simple-logger",
handler: {
signal: (event) => console.log('Signal:', event.action),
breakeven: (event) => console.log('Breakeven triggered'),
},
callbacks: {},
});
Registers an action handler in the framework.
Actions provide event-driven integration for:
Each action instance is created per strategy-frame pair and receives all events emitted during strategy execution (signals, breakeven, partial profit/loss, etc.).