Add win rate and profit-loss ratio to archive stats.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-21 09:13:37 +08:00
parent c05afbbedf
commit c0f3606ecc
5 changed files with 55 additions and 4 deletions
@@ -42,6 +42,22 @@ def _fmt_pnl(v: Any) -> str:
return f"{sign}{n:.2f}U"
def _fmt_pct(v: Any) -> str:
try:
n = float(v)
except (TypeError, ValueError):
return ""
return f"{n:.1f}%"
def _fmt_rr(v: Any) -> str:
try:
n = float(v)
except (TypeError, ValueError):
return ""
return f"{n:.2f}:1"
def format_archive_trades_for_ai(payload: dict[str, Any]) -> str:
trades = payload.get("trades") or []
stats = payload.get("stats") or {}
@@ -50,6 +66,7 @@ def format_archive_trades_for_ai(payload: dict[str, Any]) -> str:
f"统计:开仓 {int(stats.get('open_count') or 0)} 笔,"
f"盈利 {int(stats.get('win_count') or 0)} / 亏损 {int(stats.get('loss_count') or 0)}"
f"平均盈利 {_fmt_pnl(stats.get('avg_win'))},平均亏损 {_fmt_pnl(stats.get('avg_loss'))}"
f"胜率 {_fmt_pct(stats.get('win_rate'))},盈亏比 {_fmt_rr(stats.get('profit_loss_ratio'))}"
f"最大盈利 {_fmt_pnl(stats.get('max_win'))},最大亏损 {_fmt_pnl(stats.get('max_loss'))}"
f"犯病 {int(stats.get('sick_count') or 0)} 笔,"
f"盈亏合计 {_fmt_pnl(stats.get('pnl_total'))}"