Add detailed PnL and duration stats to dashboard
This commit is contained in:
@@ -206,6 +206,17 @@ eventHandlers.stats = (stats) => {
|
||||
els.statPos.textContent = stats.open_positions || 0;
|
||||
els.statCoins.textContent = stats.coins || 0;
|
||||
|
||||
// Detailed PnL stats
|
||||
if (stats.detail) {
|
||||
const d = stats.detail;
|
||||
$('stat-total-pnl').textContent = (d.total_pnl != null) ? d.total_pnl.toFixed(2) + '%' : '—';
|
||||
$('stat-avg-pnl').textContent = (d.avg_pnl != null) ? d.avg_pnl.toFixed(2) + '%' : '—';
|
||||
$('stat-win-rate').textContent = (d.win_rate != null) ? d.win_rate.toFixed(1) + '%' : '—';
|
||||
$('stat-max-profit').textContent = (d.max_profit != null) ? '+' + d.max_profit.toFixed(2) + '%' : '—';
|
||||
$('stat-max-loss').textContent = (d.max_loss != null) ? d.max_loss.toFixed(2) + '%' : '—';
|
||||
$('stat-avg-dur').textContent = d.avg_dur || '—';
|
||||
}
|
||||
|
||||
// Connection status dots
|
||||
if (stats.connections) {
|
||||
const dots = Object.entries(stats.connections).map(([ex, status]) => {
|
||||
|
||||
@@ -31,6 +31,15 @@
|
||||
<div class="stat"><label>币种</label><span id="stat-coins" class="pct-blue">0</span></div>
|
||||
<div class="stat" id="conn-stats"><label>连接</label><span id="conn-detail"></span></div>
|
||||
</div>
|
||||
<!-- Detailed PnL stats -->
|
||||
<div class="stats-row detail-stats" style="margin-top:4px;font-size:12px;opacity:0.85">
|
||||
<div class="stat"><label>总PnL</label><span id="stat-total-pnl">—</span></div>
|
||||
<div class="stat"><label>平均PnL</label><span id="stat-avg-pnl">—</span></div>
|
||||
<div class="stat"><label>胜率</label><span id="stat-win-rate">—</span></div>
|
||||
<div class="stat"><label>最多盈利</label><span id="stat-max-profit">—</span></div>
|
||||
<div class="stat"><label>最多亏损</label><span id="stat-max-loss">—</span></div>
|
||||
<div class="stat"><label>平均持仓</label><span id="stat-avg-dur">—</span></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Price Table -->
|
||||
|
||||
Reference in New Issue
Block a user