{% extends "base.html" %} {% block title %}交易记录{% endblock %} {% block heading %}交易记录{% endblock %} {% block breadcrumb %}开平仓记录{% endblock %} {% block content %} {% set view = request.query_params.get('view', '') %} {% set product_tab = request.query_params.get('tab', '全部') %} {% set product_codes = product_contracts.keys()|list %} {% set grouped_open = {} %} {% for t in open_trades %} {% set _ = grouped_open.setdefault(t.product_code, []).append(t) %} {% endfor %}
📋 持仓 📊 已平仓
{% if view != 'closed' %}
{# ── 新建开仓 ── #}
新建开仓
{# ── 持仓列表 ── #}
持仓中 · {{ open_trades|length }} 笔
全部 {% for pc in product_codes %} {% set count = grouped_open.get(pc, [])|length %} {{ pc }}{% if count %} · {{ count }}{% endif %} {% endfor %}
{% if open_trades %} {% for pc in product_codes %} {% if product_tab == '全部' or product_tab == pc %} {% set trades = grouped_open.get(pc, []) %} {% if trades %}
{% if product_tab == '全部' %}
{{ pc }} · {{ trades|length }} 笔
{% endif %} {% for t in trades %} {% endfor %}
合约方向开仓日期开仓价手续费操作
{{ t.contract_code.replace(t.product_code, '', 1) }} {% if t.direction == 'short' %} {% else %} {% endif %} {{ t.open_date }} {{ weekdays[t.open_date.weekday()] }} {{ t.open_price }} {{ t.open_fee or 0 }}
{% endif %} {% endif %} {% endfor %} {% if product_tab != '全部' and grouped_open.get(product_tab, []) %}
{% endif %} {% else %}
暂无持仓
{% endif %} {# ── 平仓弹窗 ── #} {# ── 全平弹窗 ── #}
{% else %}
{# ═══════════════ 已平仓 ═══════════════ #} {% set closed_tab = request.query_params.get('tab', '全部') %} {% set grouped_closed = {} %} {% for t in closed_trades %} {% set _ = grouped_closed.setdefault(t.product_code, []).append(t) %} {% endfor %} {% if closed_trades %}
已平仓 · {{ closed_trades|length }} 笔
全部 {% for pc in product_codes %} {% set count = grouped_closed.get(pc, [])|length %} {{ pc }}{% if count %} · {{ count }}{% endif %} {% endfor %}
{% for pc in product_codes %} {% if closed_tab == '全部' or closed_tab == pc %} {% set trades = grouped_closed.get(pc, []) %} {% if trades %}
{% if closed_tab == '全部' %}
{{ pc }} · {{ trades|length }} 笔
{% endif %} {% for t in trades %} {% endfor %}
合约方向开仓平仓持仓开仓价平仓价平仓盈亏开仓费平仓费收益操作
{{ t.contract_code.replace(t.product_code, '', 1) }} {% if t.direction == 'short' %} {% else %} {% endif %} {{ t.open_date }} {{ weekdays[t.open_date.weekday()] }} {{ t.close_date }} {{ weekdays[t.close_date.weekday()] }} {{ (t.close_date - t.open_date).days }}天 {{ t.open_price }} {{ t.close_price }} {% if t.direction == 'short' %} {% set gross_pnl = (t.open_price - t.close_price) * t.point_value %} {% else %} {% set gross_pnl = (t.close_price - t.open_price) * t.point_value %} {% endif %} {% if gross_pnl > 0 %}+{% endif %}{{ '%.2f'|format(gross_pnl) }} {{ t.open_fee or 0 }} {{ t.close_fee or 0 }} {% set p = t.pnl %} {% if p is not none %} {% if p > 0 %}+{% endif %}{{ p }} {% endif %}
{% endif %} {% endif %} {% endfor %} {% set summary_trades = closed_trades if closed_tab == '全部' else grouped_closed.get(closed_tab, []) %} {% set ns = namespace(gross=0, open_fee=0, close_fee=0) %} {% for t in summary_trades %} {% if t.direction == 'short' %} {% set ns.gross = ns.gross + (t.open_price - t.close_price) * t.point_value %} {% else %} {% set ns.gross = ns.gross + (t.close_price - t.open_price) * t.point_value %} {% endif %} {% set ns.open_fee = ns.open_fee + (t.open_fee or 0) %} {% set ns.close_fee = ns.close_fee + (t.close_fee or 0) %} {% endfor %} {% set net = ns.gross - ns.open_fee - ns.close_fee %}
平仓盈亏 {% if ns.gross > 0 %}+{% endif %}{{ '%.2f'|format(ns.gross) }} | 开仓手续费 {{ '%.2f'|format(ns.open_fee) }} | 平仓手续费 {{ '%.2f'|format(ns.close_fee) }} | 收益 {% if net > 0 %}+{% endif %}{{ '%.2f'|format(net) }}
{% else %}
暂无已平仓记录
{% endif %}
{% endif %} {% if view != 'closed' %} {% endif %} {% endblock %}