Strategy

Account Info

Function Status Description
strategy.account_currency ✅ Account currency
strategy.equity ✅ Account equity
strategy.grossloss ✅ Gross loss
strategy.grossloss_percent ✅ Gross loss percentage
strategy.grossprofit ✅ Gross profit
strategy.grossprofit_percent ✅ Gross profit percentage
strategy.initial_capital ✅ Initial capital
strategy.margin_liquidation_price ✅ Margin liquidation price
strategy.netprofit ✅ Net profit
strategy.netprofit_percent ✅ Net profit percentage

Trade Statistics

Function Status Description
strategy.avg_losing_trade ✅ Average losing trade
strategy.avg_losing_trade_percent ✅ Average losing trade percent
strategy.avg_trade ✅ Average trade
strategy.avg_trade_percent ✅ Average trade percent
strategy.avg_winning_trade ✅ Average winning trade
strategy.avg_winning_trade_percent ✅ Average winning trade percent
strategy.closedtrades ✅ Number of closed trades
strategy.eventrades ✅ Number of even trades
strategy.losstrades ✅ Number of losing trades
strategy.opentrades ✅ Number of open trades
strategy.wintrades ✅ Number of winning trades

Closed Trades

Function Status Description
strategy.closedtrades.first_index ✅ First closed trade index
strategy.closedtrades.commission() ✅ Get commission
strategy.closedtrades.entry_bar_index() ✅ Get entry bar index
strategy.closedtrades.entry_comment() ✅ Get entry comment
strategy.closedtrades.entry_id() ✅ Get entry ID
strategy.closedtrades.entry_price() ✅ Get entry price
strategy.closedtrades.entry_time() ✅ Get entry time
strategy.closedtrades.exit_bar_index() ✅ Get exit bar index
strategy.closedtrades.exit_comment() ✅ Get exit comment
strategy.closedtrades.exit_id() ✅ Get exit ID
strategy.closedtrades.exit_price() ✅ Get exit price
strategy.closedtrades.exit_time() ✅ Get exit time
strategy.closedtrades.max_drawdown() ✅ Get max drawdown
strategy.closedtrades.max_drawdown_percent() ✅ Get max drawdown percent
strategy.closedtrades.max_runup() ✅ Get max runup
strategy.closedtrades.max_runup_percent() ✅ Get max runup percent
strategy.closedtrades.profit() ✅ Get profit
strategy.closedtrades.profit_percent() ✅ Get profit percent
strategy.closedtrades.size() ✅ Get size

Drawdown & Runup

Function Status Description
strategy.max_contracts_held_all ✅ Max contracts held (all)
strategy.max_contracts_held_long ✅ Max contracts held (long)
strategy.max_contracts_held_short ✅ Max contracts held (short)
strategy.max_drawdown ✅ Maximum drawdown
strategy.max_drawdown_percent ✅ Maximum drawdown percent
strategy.max_runup ✅ Maximum runup
strategy.max_runup_percent ✅ Maximum runup percent

Position Info

Function Status Description
strategy.openprofit ✅ Open profit
strategy.openprofit_percent ✅ Open profit percent
strategy.position_avg_price ✅ Position average price
strategy.position_entry_name ✅ Position entry name
strategy.position_size ✅ Position size

Open Trades

Function Status Description
strategy.opentrades.capital_held ✅ Capital held
strategy.opentrades.commission() ✅ Get commission
strategy.opentrades.entry_bar_index() ✅ Get entry bar index
strategy.opentrades.entry_comment() ✅ Get entry comment
strategy.opentrades.entry_id() ✅ Get entry ID
strategy.opentrades.entry_price() ✅ Get entry price
strategy.opentrades.entry_time() ✅ Get entry time
strategy.opentrades.max_drawdown() ✅ Get max drawdown
strategy.opentrades.max_drawdown_percent() ✅ Get max drawdown percent
strategy.opentrades.max_runup() ✅ Get max runup
strategy.opentrades.max_runup_percent() ✅ Get max runup percent
strategy.opentrades.profit() ✅ Get profit
strategy.opentrades.profit_percent() ✅ Get profit percent
strategy.opentrades.size() ✅ Get size

Constants

Function Status Description
strategy.cash ✅ Cash constant
strategy.fixed ✅ Fixed constant
strategy.long ✅ Long constant
strategy.percent_of_equity ✅ Percent of equity constant
strategy.short ✅ Short constant

Commission

Function Status Description
strategy.commission.cash_per_contract ✅ Cash per contract
strategy.commission.cash_per_order ✅ Cash per order
strategy.commission.percent ✅ Commission percent

Direction

Function Status Description
strategy.direction.all ✅ All directions
strategy.direction.long ✅ Long direction
strategy.direction.short ✅ Short direction

OCA

Function Status Description
strategy.oca.cancel ✅ OCA cancel
strategy.oca.none ✅ OCA none
strategy.oca.reduce ✅ OCA reduce

Order Management

Function Status Description
strategy.cancel() ✅ Cancel order
strategy.cancel_all() ✅ Cancel all orders

Position Management

Function Status Description
strategy.close() ✅ Close position
strategy.close_all() ✅ Close all positions
strategy.entry() ✅ Enter position
strategy.exit() ✅ Exit position
strategy.order() ✅ Place order

Conversion

Function Status Description
strategy.convert_to_account() ✅ Convert to account
strategy.convert_to_symbol() ✅ Convert to symbol
strategy.default_entry_qty() ✅ Default entry quantity

Risk Management

Function Status Description
strategy.risk.allow_entry_in() ✅ Allow entry in
strategy.risk.max_cons_loss_days() ✅ Max consecutive loss days
strategy.risk.max_drawdown() ✅ Max drawdown
strategy.risk.max_intraday_filled_orders() ✅ Max intraday filled orders
strategy.risk.max_intraday_loss() ✅ Max intraday loss
strategy.risk.max_position_size() ✅ Max position size

Notes

The entire strategy.* namespace is implemented and matches TV’s surface 1:1. Of the 31 TV oracle scripts in Automations/PineTS/pinescripts/strategy/, 12 currently match TradingView to comparator-epsilon (precision 3, eps 0.001001). The remaining 18 produce valid output that diverges from TV in specific numeric fields — these are precision/semantics differences that need iterative refinement:

  • strategy.margin_liquidation_price — PineTS uses a simple “equity hits zero” approximation; TV’s broker liquidation formula differs in detail. Affects account_props.pine.
  • strategy.convert_to_account / convert_to_symbol — identity passthrough for same-currency cases. TV may return na when symbol/account currencies differ even nominally (e.g. BTCUSDC’s USDC vs USD). Affects conversion.pine.
  • OCA enforcement (cancel/reduce semantics) — order objects carry oca_name / oca_type fields, but the engine does not yet auto-cancel or reduce siblings on fill. Deferred. Affects oca_groups.pine.
  • Commission rounding — per-leg charges may differ from TV by sub-cent rounding in edge cases. Affects commission_slippage.pine and commission_types.pine in the second-decimal place.
  • Per-trade max_drawdown / max_runup — PineTS tracks intra-bar high/low excursions, but TV’s accounting includes the entry price’s pre-fill open and exit-bar close in subtly different ways for trades that open and close in adjacent bars. Affects closedtrades_full.pine, opentrades_full.pine.

oca_groups.pine is the explicit Phase 7 deferral. All others are iteration items for follow-up work.