@if (tradeService.loading()) {
@for (_ of [1,2,3,4]; track $index) { }
} @else { @let trade = tradeService.selectedTrade(); @if (trade) {
@for (tag of trade.tags; track tag) { } @if (trade.current_status) { }
Realized P&L
{{ tradeService.formatCurrency(trade.total_realized_pnl) }}
Unrealized P&L
{{ tradeService.formatCurrency(trade.total_unrealized_pnl) }}
Total Fees
{{ tradeService.formatCurrency(trade.total_fees) }}
Legs
{{ trade.legs.length }}
Run Context
@if (lifecycleSteps().length > 0) {
Lifecycle
    @for (step of lifecycleSteps(); track step.status; let last = $last; let i = $index) {
  1. @if (!last) { @if (step.jumpedNext) { } @else { } } @if (step.skipped) { } @else { }
    {{ step.status }}
    @if (step.timestamp) { {{ step.timestamp | date:'MMM d HH:mm:ss' }} }
  2. }
}
Trade Info
Paper {{ trade.is_paper ? 'Yes' : 'No' }}
Entry {{ trade.entry_at | date:'medium' }}
@if (trade.exit_at) {
Exit {{ trade.exit_at | date:'medium' }}
} @if (trade.close_reason) {
Close Reason {{ formatCloseReason(trade.close_reason) }}
}
@if (trade.conditions.length > 0) {
Strategy Conditions
@for (cond of trade.conditions; track cond.id) {
@if (cond.is_met) { {{ cond.met_at | date:'short' }} } @else { Pending }
{{ cond.attribute_name }} {{ cond.operator }} {{ cond.threshold_value }}
}
}
Orders Source
@if (activeTab() === 'Orders') { @if (allOrders().length > 0) {

Orders

} } @if (activeTab() === 'Source') {
@if (sourceFeedRunsLoading()) { } @else if (sourceFeedRuns().length === 0) {
No feed-run provenance recorded.
} @else {
    @for (fr of sourceFeedRuns(); track fr.feed_run_id) {
  • {{ fr.feed_display_name }} @if (fr.is_trigger) { }
    {{ fr.snapshot_timestamp | date:'HH:mm:ss' }}
  • }
}
@if (trade.data_series.length > 0) {
    @for (ds of trade.data_series; track ds.id) {
  • {{ ds.label || ds.attribute_name }} {{ ds.data_source }}
  • }
}
}
} }