Discriminator for the rejected close
Number of CONSECUTIVE failed gate attempts that preceded this TERMINAL one (0 = rejected on the first attempt).
Always false: rejections are live-only (kept for cross-channel filter uniformity)
The closeReason the engine force-closes with
Market price at the moment of rejection (VWAP)
Exchange name that refused the order
Timeframe name (empty string in live mode)
Maximum drawdown experienced during the life of this position so far
Human-readable rejection reason (the OrderRejectedError message from the broker adapter)
Original entry price before any DCA averaging
Original stop loss price before any trailing adjustments
Original take profit price before any trailing adjustments
Peak profit achieved during the life of this position so far
Position activation timestamp in milliseconds
PNL snapshot of the position at the moment of this event
Trade direction: "long" (buy) or "short" (sell)
Effective entry price (DCA-averaged when entries exist)
Effective stop loss price (trailing-aware)
Effective take profit price (trailing-aware)
Signal creation timestamp in milliseconds
Complete public signal row at the moment of this event
Unique signal identifier (UUID v4) — equals the adapter's clientOrderId
Strategy name that generated this signal
Trading pair symbol (e.g., "BTCUSDT")
Timestamp from execution context at the moment the gate rejected
Total number of DCA entries (_entry.length); 1 = no averaging
Total number of partial closes executed (_partial.length)
Which order was rejected:
Terminal rejection of a close: the exit order was definitively refused — the engine force-closes its state with the original closeReason. Always type "active".