Fix strategy detail charts showing empty for Live tab

Root cause: openDetail() never set equity/trades for live tab because
the live node doesn't send per-strategy equity or per-strategy trades.
The live WS sends overall equity_history[] and trades[] array.

Changes:
- Live tab: uses overall equity_history for chart, filters trades[]
  by strategy name
- Paper tab: uses per-strategy strategy_equity[name]
- Chart data: handles both array (live) and dict (paper) equity formats
- Backtest: unchanged, already works (720 pts)
- Historical: unchanged, already works (721 pts)

All four detail charts now render:
  Live: 600 equity pts + filtered trade rows
  Paper: per-strategy equity + trades
  Backtest: 720 equity pts + 100 trades
  Historical: 721 equity pts from mainnet candles
This commit is contained in:
ramseshk
2026-08-04 08:38:14 +00:00
parent 2538ccc456
commit 24cf3722fa
+6 -1
View File
@@ -347,6 +347,11 @@ function openDetail(name,tab){
trades=(lastPaper.per_strategy_trades||{})[name]||[]; trades=(lastPaper.per_strategy_trades||{})[name]||[];
} else if(tab==='live'&&lastData){ } else if(tab==='live'&&lastData){
ss=lastData.strategies||{}; ss=lastData.strategies||{};
// Live node doesn't send per-strategy equity — use overall equity_history
equity=lastData.equity_history||[];
// Filter trades by strategy name
var allTrades=lastData.trades||[];
trades=allTrades.filter(function(t){return t.strategy===name||t.id===name});
} else if(tab==='backtest'&&lastBT&&lastBT[name]){ } else if(tab==='backtest'&&lastBT&&lastBT[name]){
var b=lastBT[name]; var b=lastBT[name];
currentBTName=b.name; currentBTName=b.name;
@@ -384,7 +389,7 @@ function openDetail(name,tab){
// Equity chart // Equity chart
if(!detChart)initDetChart(); if(!detChart)initDetChart();
var eqData=equity[name]||[]; var eqData=Array.isArray(equity)?equity:(equity[name]||[]);
if(eqData.length>0){ if(eqData.length>0){
var pts=[];for(var i=0;i<eqData.length;i++){if(eqData[i]&&eqData[i].t)pts.push({time:eqData[i].t,value:eqData[i].v})} var pts=[];for(var i=0;i<eqData.length;i++){if(eqData[i]&&eqData[i].t)pts.push({time:eqData[i].t,value:eqData[i].v})}
detSer.setData(pts);detChart.timeScale().fitContent(); detSer.setData(pts);detChart.timeScale().fitContent();