Function setSignalState

  • Updates the state value scoped to the current active signal.

    Resolves the active pending signal automatically from execution context. If no pending signal exists, logs a warning and returns without writing.

    Automatically detects backtest/live mode from execution context.

    Intended for LLM-driven capitulation strategies that accumulate per-trade metrics (e.g. peakPercent, minutesOpen) across onActivePing ticks. Profitable trades endure -0.5–2.5% drawdown and reach peak 2–3%+. SL trades show peak < 0.15% (Feb08, Feb13) or never go positive (Feb25). Rule: if minutesOpen >= N and peakPercent < threshold (e.g. 0.3%) — exit.

    Type Parameters

    • Value extends object = object

    Parameters

    • symbol: string

      Trading pair symbol

    • dispatch: Value | Dispatch$1<Value>
    • dto: { bucketName: string; initialValue: Value }
      • bucketName: string

        State bucket name

      • initialValue: Value

        Default value when no persisted state exists

    Returns Promise<Value>

    Promise resolving to updated state value, or initialValue if no signal

    Better use createSignalState().setState with codestyle native syntax

    import { setSignalState } from "backtest-kit";

    await setSignalState(
    dispatch: (s) => ({
    peakPercent: Math.max(s.peakPercent, currentUnrealisedPercent),
    minutesOpen: s.minutesOpen + 1,
    }),
    {
    bucketName: "trade",
    initialValue: { peakPercent: 0, minutesOpen: 0 },
    }
    );