平仓汇总按原始价差计算毛利和净利,红涨绿跌配色

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
fish
2026-07-28 15:30:04 +08:00
parent 7ac9de3663
commit 0d01faf464
2 changed files with 110 additions and 45 deletions
+20 -21
View File
@@ -37,26 +37,25 @@
<div class="value">{{ total_count }}</div>
</div>
<div class="stat-card">
<div class="label">总盈亏</div>
<div class="value" style="{% if total_pnl > 0 %}color:var(--success-fg);{% elif total_pnl < 0 %}color:var(--danger-fg);{% endif %}">
{% if total_pnl > 0 %}+{% endif %}{{ "%.0f"|format(total_pnl) }}
<div class="label">毛利</div>
<div class="value" style="{% if gross_pnl > 0 %}color:var(--danger-fg);{% elif gross_pnl < 0 %}color:var(--success-fg);{% endif %}">
{% if gross_pnl > 0 %}+{% endif %}{{ "%.2f"|format(gross_pnl) }}
</div>
</div>
<div class="stat-card">
<div class="label">总手续费</div>
<div class="value">{{ "%.0f"|format(total_fee) }}</div>
<div class="value">{{ "%.2f"|format(total_fee) }}</div>
</div>
<div class="stat-card">
<div class="label">总胜率</div>
<div class="value" style="{% if total_win_rate >= 50 %}color:var(--success-fg);{% else %}color:var(--danger-fg);{% endif %}">
<div class="value" style="{% if total_win_rate >= 40 %}color:var(--danger-fg);{% else %}color:var(--success-fg);{% endif %}">
{{ total_win_rate }}%
</div>
</div>
<div class="stat-card">
<div class="label">盈亏</div>
<div class="value" style="{% if total_pnl - total_fee > 0 %}color:var(--success-fg);{% elif total_pnl - total_fee < 0 %}color:var(--danger-fg);{% endif %}">
{% set net = total_pnl - total_fee %}
{% if net > 0 %}+{% endif %}{{ "%.0f"|format(net) }}
<div class="label">利润</div>
<div class="value" style="{% if net_pnl > 0 %}color:var(--danger-fg);{% elif net_pnl < 0 %}color:var(--success-fg);{% endif %}">
{% if net_pnl > 0 %}+{% endif %}{{ "%.2f"|format(net_pnl) }}
</div>
</div>
</div>
@@ -72,9 +71,9 @@
<div class="tab-panel{% if view != 'options' and view != 'dual' %} active{% endif %}">
<div class="sub-stat">
<span>笔数 <b>{{ future_stats.count }}</b></span>
<span>盈亏 <b style="{% if future_stats.pnl > 0 %}color:var(--success-fg);{% elif future_stats.pnl < 0 %}color:var(--danger-fg);{% endif %}">{% if future_stats.pnl > 0 %}+{% endif %}{{ "%.0f"|format(future_stats.pnl) }}</b></span>
<span>手续费 <b>{{ "%.0f"|format(future_stats.total_fee) }}</b></span>
<span>胜率 <b style="{% if future_stats.win_rate >= 50 %}color:var(--success-fg);{% else %}color:var(--danger-fg);{% endif %}">{{ future_stats.win_rate }}%</b></span>
<span>毛利 <b style="{% if future_stats.gross > 0 %}color:var(--danger-fg);{% elif future_stats.gross < 0 %}color:var(--success-fg);{% endif %}">{% if future_stats.gross > 0 %}+{% endif %}{{ "%.2f"|format(future_stats.gross) }}</b></span>
<span>手续费 <b>{{ "%.2f"|format(future_stats.total_fee) }}</b></span>
<span>净利 <b style="{% if future_stats.net > 0 %}color:var(--danger-fg);{% elif future_stats.net < 0 %}color:var(--success-fg);{% endif %}">{% if future_stats.net > 0 %}+{% endif %}{{ "%.2f"|format(future_stats.net) }}</b></span>
</div>
{% if future_trades %}
@@ -100,7 +99,7 @@
<td>
{% set p = t.pnl %}
{% if p is not none %}
<span style="font-weight:700;{% if p > 0 %}color:var(--success-fg);{% elif p < 0 %}color:var(--danger-fg);{% endif %}">
<span style="font-weight:700;{% if p > 0 %}color:var(--danger-fg);{% elif p < 0 %}color:var(--success-fg);{% endif %}">
{% if p > 0 %}+{% endif %}{{ p }}
</span>
{% endif %}
@@ -118,9 +117,9 @@
<div class="tab-panel{% if view == 'options' %} active{% endif %}">
<div class="sub-stat">
<span>笔数 <b>{{ option_stats.count }}</b></span>
<span>盈亏 <b style="{% if option_stats.pnl > 0 %}color:var(--success-fg);{% elif option_stats.pnl < 0 %}color:var(--danger-fg);{% endif %}">{% if option_stats.pnl > 0 %}+{% endif %}{{ "%.0f"|format(option_stats.pnl) }}</b></span>
<span>手续费 <b>{{ "%.0f"|format(option_stats.total_fee) }}</b></span>
<span>胜率 <b style="{% if option_stats.win_rate >= 50 %}color:var(--success-fg);{% else %}color:var(--danger-fg);{% endif %}">{{ option_stats.win_rate }}%</b></span>
<span>毛利 <b style="{% if option_stats.gross > 0 %}color:var(--danger-fg);{% elif option_stats.gross < 0 %}color:var(--success-fg);{% endif %}">{% if option_stats.gross > 0 %}+{% endif %}{{ "%.2f"|format(option_stats.gross) }}</b></span>
<span>手续费 <b>{{ "%.2f"|format(option_stats.total_fee) }}</b></span>
<span>净利 <b style="{% if option_stats.net > 0 %}color:var(--danger-fg);{% elif option_stats.net < 0 %}color:var(--success-fg);{% endif %}">{% if option_stats.net > 0 %}+{% endif %}{{ "%.2f"|format(option_stats.net) }}</b></span>
</div>
{% if option_trades %}
@@ -154,7 +153,7 @@
<td>
{% set p = t.pnl %}
{% if p is not none %}
<span style="font-weight:700;{% if p > 0 %}color:var(--success-fg);{% elif p < 0 %}color:var(--danger-fg);{% endif %}">
<span style="font-weight:700;{% if p > 0 %}color:var(--danger-fg);{% elif p < 0 %}color:var(--success-fg);{% endif %}">
{% if p > 0 %}+{% endif %}{{ p }}
</span>
{% endif %}
@@ -172,9 +171,9 @@
<div class="tab-panel{% if view == 'dual' %} active{% endif %}">
<div class="sub-stat">
<span>笔数 <b>{{ dual_stats.count }}</b></span>
<span>盈亏 <b style="{% if dual_stats.pnl > 0 %}color:var(--success-fg);{% elif dual_stats.pnl < 0 %}color:var(--danger-fg);{% endif %}">{% if dual_stats.pnl > 0 %}+{% endif %}{{ "%.0f"|format(dual_stats.pnl) }}</b></span>
<span>手续费 <b>{{ "%.0f"|format(dual_stats.total_fee) }}</b></span>
<span>胜率 <b style="{% if dual_stats.win_rate >= 50 %}color:var(--success-fg);{% else %}color:var(--danger-fg);{% endif %}">{{ dual_stats.win_rate }}%</b></span>
<span>毛利 <b style="{% if dual_stats.gross > 0 %}color:var(--danger-fg);{% elif dual_stats.gross < 0 %}color:var(--success-fg);{% endif %}">{% if dual_stats.gross > 0 %}+{% endif %}{{ "%.2f"|format(dual_stats.gross) }}</b></span>
<span>手续费 <b>{{ "%.2f"|format(dual_stats.total_fee) }}</b></span>
<span>净利 <b style="{% if dual_stats.net > 0 %}color:var(--danger-fg);{% elif dual_stats.net < 0 %}color:var(--success-fg);{% endif %}">{% if dual_stats.net > 0 %}+{% endif %}{{ "%.2f"|format(dual_stats.net) }}</b></span>
</div>
{% if dual_trades %}
@@ -195,7 +194,7 @@
<td>
{% set p = t.pnl %}
{% if p is not none %}
<span style="font-weight:700;{% if p > 0 %}color:var(--success-fg);{% elif p < 0 %}color:var(--danger-fg);{% endif %}">
<span style="font-weight:700;{% if p > 0 %}color:var(--danger-fg);{% elif p < 0 %}color:var(--success-fg);{% endif %}">
{% if p > 0 %}+{% endif %}{{ p }}
</span>
{% endif %}