Function overrideActionSchema

  • Overrides an existing action handler configuration in the framework.

    This function partially updates a previously registered action handler with new configuration. Only the provided fields will be updated, other fields remain unchanged.

    Useful for:

    • Updating event handler logic without re-registering
    • Modifying callbacks for different environments (dev/prod)
    • Switching handler implementations dynamically
    • Adjusting action behavior without strategy changes

    Parameters

    • actionSchema: TActionSchema

      Partial action configuration object

      • actionName

        Unique action identifier (must exist)

      • handler

        Optional: Action handler class constructor or plain object

      • callbacks

        Optional: Lifecycle callbacks to update

    Returns Promise<IActionSchema>

    // Override handler implementation
    class ImprovedTelegramNotifier implements Partial<IPublicAction> {
    constructor(
    private strategyName: StrategyName,
    private frameName: FrameName,
    private actionName: ActionName
    ) {}

    async signal(event: IStrategyTickResult) {
    if (event.action === 'opened') {
    await this.bot.send(`📈 ${event.signal.side} signal opened`); // Enhanced formatting
    }
    }
    }

    overrideAction({
    actionName: "telegram-notifier",
    handler: ImprovedTelegramNotifier, // Only update handler
    });

    // Override only callbacks
    overrideAction({
    actionName: "telegram-notifier",
    callbacks: {
    onSignal: (event, actionName, strategyName, frameName, backtest) => {
    console.log(`[VERBOSE] ${actionName}: ${event.action}`); // More verbose logging
    },
    },
    });

    // Update plain object handler
    overrideAction({
    actionName: "simple-logger",
    handler: {
    signal: (event) => console.log('📊 Signal:', event.action),
    breakeven: (event) => console.log('⚖️ Breakeven triggered'),
    partialProfit: (event) => console.log('💰 Partial profit:', event.level),
    },
    });