Signal open sync event.
Emitted when a scheduled (limit order) signal is activated — i.e., the exchange allowed the framework to enter the position by filling the limit order at priceOpen.
In backtest mode: fired when candle.low <= priceOpen (long) or candle.high >= priceOpen (short). In live mode: fired when the exchange confirms the limit order is filled.
Consumers use this event to synchronize external order management systems (e.g., confirm that a limit buy/sell was executed on the exchange).
Consumers:
action: "signal-open"
Discriminator for signal-open action
currentPrice: number
Market price at the moment of activation (VWAP or candle average)
pnl: IStrategyPnL
Total PNL of the closed position (including all entries and partials)
cost: number
Cost of the position at close (sum of all entry costs)
position: "long" | "short"
Trade direction: "long" (buy) or "short" (sell)
priceOpen: number
Entry price at which the limit order was filled
priceTakeProfit: number
Effective take profit price at activation
priceStopLoss: number
Effective stop loss price at activation
originalPriceTakeProfit: number
Original take profit price before any trailing adjustments
originalPriceStopLoss: number
Original stop loss price before any trailing adjustments
originalPriceOpen: number
Original entry price before any DCA averaging (initial priceOpen)
scheduledAt: number
Signal creation timestamp in milliseconds (when scheduled signal was first created)
pendingAt: number
Position activation timestamp in milliseconds (set at this event)
totalEntries: number
Total number of DCA entries at the time of close (_entry.length). 1 = no averaging done (only initial entry). 2+ = averaged positions.
totalPartials: number
Total number of partial closes executed at the time of close (_partial.length). 0 = no partial closes done. 1+ = partial closes executed.