{{ tt('strategy.tieredGridUnified.desc', null, 'View running status, positions and PnL, and orders. Use tabs to switch Workbench / Positions / Orders.') }}
| {{ tt('strategy.tieredGridUnified.wb.thId', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thName', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thSymbol', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thRange', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thBudget', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thLevels', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thStatus', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thOrdersCycles', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thWinRate', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thRuntime', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thTodayFills', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thFails', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thActivity', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thPrice', null, '') }} | {{ tt('strategy.tieredGridUnified.wb.thOps', null, '') }} |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.id != null ? r.id : '—' }} | {{ r.name || '—' }}{{ tt('strategy.tieredGridUnified.wb.dryTag', null, '') }} | {{ r.symbol || '—' }} | {{ wbFmtRange(r) }} | {{ fmtPrice(r.plannedTotalUsdt) }} / {{ r.maxQuoteBudget != null ? fmtPrice(r.maxQuoteBudget) : tt('strategy.tieredGridUnified.wb.noBudgetCap', null, '') }} {{ tt('strategy.tieredGridUnified.wb.budgetExceeded', null, '') }} | {{ r.gridCount != null ? r.gridCount : '—' }} · {{ wbSpacingLabel(r.spacingMode) }} | {{ wbStatusText(r.status) }} | {{ wbOrdersCycles(r) }} | {{ wbWinRateRow(r) }} | {{ wbRunDurationRow(r) }} | {{ tt('strategy.tieredGridUnified.wb.buyAbbr', null, '') }}{{ Number(r.todayBuyCount) || 0 }} · {{ tt('strategy.tieredGridUnified.wb.sellAbbr', null, '') }}{{ Number(r.todaySellCount) || 0 }} | {{ Number(r.todayFailedCount) || 0 }} | {{ wbFormatLastAt(r.lastOrderAt) }} | {{ wbPriceCell(r) }} |
{{ workbenchRows.length === 0 ? tt('strategy.tieredGridUnified.wb.emptyNoneDesc', null, '') : tt('strategy.tieredGridUnified.wb.emptyFilteredDesc', null, '') }}
{{ tt('strategy.tieredGridUnified.positionsTab.emptyPortfolioDesc', null, '') }}
{{ tt('strategy.tieredGridUnified.positionsView.noteStrong', null, '') }}{{ tt('strategy.tieredGridUnified.positionsView.noteBody', null, '') }}
{{ tt('strategy.tieredGridUnified.positionsView.posIntroBefore', null, '') }}{{ tt('strategy.tieredGridUnified.positionsView.posIntroStrong', null, '') }}{{ tt('strategy.tieredGridUnified.positionsView.posIntroMid', null, '') }}{{ tt('strategy.tieredGridUnified.positionsView.posIntroWorkbench', null, '') }}{{ tt('strategy.tieredGridUnified.positionsView.posIntroAfter', null, '') }}
| {{ tt('strategy.tieredGridUnified.positionsView.posThStrategy', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThMode', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThStatus', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThLevel', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThQty', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThAvg', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThPrice', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThMkt', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThUnreal', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.posThOps', null, '') }} |
|---|---|---|---|---|---|---|---|---|---|
| {{ row.name ? row.symbol + ' · ' + row.name : row.symbol }} | {{ row.dryRun === true ? tt('strategy.tieredGridUnified.positionsView.badgeSim', null, '') : tt('strategy.tieredGridUnified.positionsView.badgeLive', null, '') }} | {{ tieredStatusText(openRowStatusStub(row)) }} | {{ row.gridLevel != null ? row.gridLevel : '—' }} | {{ fmtQuantity(row.heldQuantity) }} | {{ fmtPrice(row.avgCostUsdt) }} | {{ fmtPrice(row.currentPrice) }} | {{ fmtPrice(row.positionValueUsdt) }} | {{ fmtPnl(row.unrealizedPnlUsdt) }} |
|
| {{ tt('strategy.tieredGridUnified.positionsView.ordThStrategy', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThSymbol', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThLevel', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThSide', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThPrice', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThPlannedQty', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThFilledQty', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThAmt', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThStatus', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThRemark', null, '') }} | {{ tt('strategy.tieredGridUnified.positionsView.ordThTime', null, '') }} |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ configLabel(o.configId) }} | {{ o.symbol || '—' }} | {{ o.gridLevel != null ? o.gridLevel : '—' }} | {{ String(o.side).toUpperCase() === 'BUY' ? tt('common.trade.side.BUY', null, '') : tt('common.trade.side.SELL', null, '') }} | {{ fmtPrice(o.filledPrice != null ? o.filledPrice : o.referencePrice) }} | {{ fmtPlannedQty(o.quantity) }} | {{ o.filledQuantity != null ? fmtPlannedQty(o.filledQuantity) : '—' }} | {{ o.amountUsdt != null ? fmtPrice(o.amountUsdt) : '—' }} | {{ fmtStatus(o.status) }} | {{ fmtErrMsg(o.remark) }} | {{ fmtTableTime(o.createdAt) }} |