Optional_entryDCA (Dollar Cost Averaging) entry history. First element is always the original priceOpen at signal creation. Each subsequent element is a new averaging entry added by averageBuy(). Effective entry price = simple arithmetic mean of all price values. Original priceOpen is preserved unchanged for identity/audit purposes.
Cost of this entry in USD (e.g. 100 for $100 position)
Price at which this entry was executed
Unix timestamp in milliseconds when this entry was executed
Worst price seen in loss direction during the life of this position. Initialized at position open with priceOpen/pendingAt (pnl = 0). Updated on every tick/candle when price moves toward SL (currentDistance < 0).
Internal runtime marker for scheduled signals
Optional_partialHistory of partial closes for PNL calculation. Each entry contains type (profit/loss), percent closed, and price. Used to calculate weighted PNL: Σ(percent_i × pnl_i) for each partial + (remaining% × final_pnl)
Computed values (derived from this array):
Running cost basis (sum of entry costs) at the moment this partial was executed, BEFORE applying the percent reduction. Stored as a snapshot so helpers don't need to replay the full entry history. Effective entry price at this partial = costBasisAtClose / Σ(entry.cost/entry.price for entries[0..entryCountAtClose])
Price at which this partial was executed
Number of _entry elements at the moment this partial close was executed. Used to slice _entry to only entries that existed at this partial.
Percentage of position closed (0-100)
Unix timestamp in milliseconds when this partial close was executed
Type of partial close: profit (moving toward TP) or loss (moving toward SL)
Best price seen in profit direction during the life of this position. Initialized at position open with priceOpen/pendingAt. Updated on every tick/candle when price moves toward TP (currentDistance > 0).
Optional_trailingTrailing stop-loss price that overrides priceStopLoss when set. Updated by trailing() method based on position type and percentage distance.
Optional_trailingTrailing take-profit price that overrides priceTakeProfit when set. Created and managed by trailingTake() method for dynamic TP adjustment. Allows moving TP further from or closer to current price based on strategy. Updated by trailingTake() method based on position type and percentage distance.
OptionalcancelCancellation ID (only for user-initiated cancellations)
OptionalcancelNote from user payload (only for user-initiated cancellations)
Cost of this entry in USD (e.g. 100 for $100 position)
Unique exchange identifier for execution
Unique frame identifier for execution (empty string for live mode)
Unique signal identifier (UUID v4 auto-generated)
Expected duration in minutes before time_expired (required in row, defaults applied in ClientStrategy)
OptionalnoteHuman-readable description of signal reason
Pending timestamp in milliseconds (when position became pending/active at priceOpen)
Trade direction: "long" (buy) or "short" (sell)
Entry price for the position
Stop loss exit price (must be < priceOpen for long, > priceOpen for short)
Take profit target price (must be > priceOpen for long, < priceOpen for short)
Signal creation timestamp in milliseconds (when signal was first created/scheduled)
Unique strategy identifier for execution
Trading pair symbol (e.g., "BTCUSDT")
Unix timestamp in milliseconds when this signal was created/scheduled in backtest context or when getSignal was called in live context (before validation)
Scheduled signal row with cancellation ID. Extends IScheduledSignalRow to include optional cancelId for user-initiated cancellations.