OrderRejectOpenNotification

Order reject notification (TERMINAL open/placement rejection). Emitted ONLY when the open gate resolved into the "rejected" verdict — the broker adapter threw OrderRejectedError ("the exchange definitively refused this order, retrying is pointless"). Exactly once per dropped attempt: the rejected signalId is consumed by the whipsaw guard, so this cannot repeat per-tick for one signal. Transient failures never fire here (they retry silently). Live-only. Source: orderRejectSubject (OrderRejectContract).

type: "order_reject.open"

Discriminator for type-safe union

id: string

Unique notification identifier

timestamp: number

Unix timestamp in milliseconds when the gate rejected

backtest: boolean

Always false: rejections are live-only (kept for cross-channel filter uniformity)

symbol: string

Trading pair symbol (e.g., "BTCUSDT")

strategyName: string

Strategy name that generated this signal

exchangeName: string

Exchange name that refused the order

signalId: string

Unique signal identifier (UUID v4) — equals the adapter's clientOrderId

orderType: "schedule" | "active"

Which order was rejected (from OrderRejectContract.type):

  • "active" — the position order (immediate open or activation fill)
  • "schedule" — the resting entry order being placed at scheduled-signal creation
attempt: number

Number of consecutive failed gate attempts that preceded this terminal one (0 = rejected on the first attempt)

message: string

Human-readable rejection reason (the OrderRejectedError message from the broker adapter)

currentPrice: number

Market price at the moment of rejection (VWAP)

pnl: IStrategyPnL

PNL snapshot of the position at the moment of this event

peakProfit: IStrategyPnL

Peak profit achieved during the life of this position up to the moment this public signal was created

maxDrawdown: IStrategyPnL

Maximum drawdown experienced during the life of this position up to the moment this public signal was created

pnlPercentage: number

Profit/loss as percentage

pnlPriceOpen: number

Entry price from PNL calculation

pnlPriceClose: number

Exit price from PNL calculation

pnlCost: number

Absolute profit/loss in USD

pnlEntries: number

Total invested capital in USD

peakProfitPriceOpen: number

Peak price reached in profit direction during the life of this position

peakProfitPriceClose: number

Exit price for PNL calculation at the moment of peak profit

peakProfitCost: number

Absolute profit/loss in USD at the moment the position reached its peak profit during the life of this position

peakProfitPercentage: number

Profit/loss as percentage at the moment the position reached its peak profit during the life of this position

peakProfitEntries: number

Number of entries executed at the moment the position reached its peak profit during the life of this position

maxDrawdownPriceOpen: number

Maximum drawdown price reached in loss direction during the life of this position

maxDrawdownPriceClose: number

Exit price for PNL calculation at the moment of max drawdown

maxDrawdownCost: number

Absolute profit/loss in USD at the moment the position reached its maximum drawdown during the life of this position

maxDrawdownPercentage: number

Profit/loss as percentage at the moment the position reached its maximum drawdown during the life of this position

maxDrawdownEntries: number

Number of entries executed at the moment the position reached its maximum drawdown during the life of this position

cost: number

Cost of the position entry in USD

position: "long" | "short"

Trade direction: "long" (buy) or "short" (sell)

priceOpen: number

Effective entry price (DCA-averaged when entries exist)

priceTakeProfit: number

Effective take profit price (trailing-aware)

priceStopLoss: number

Effective stop loss price (trailing-aware)

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

totalEntries: number

Total number of DCA entries (_entry.length). 1 = no averaging.

totalPartials: number

Total number of partial closes executed (_partial.length). 0 = no partial closes done.

scheduledAt: number

Signal creation timestamp in milliseconds

pendingAt: number

Position activation timestamp in milliseconds

note: string

Optional human-readable description of signal reason

createdAt: number

Unix timestamp in milliseconds when the notification was created