{% 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 %}
{# ── 新建开仓 ── #}
新建开仓
{# ── 持仓列表 ── #}
持仓中 · {{ open_trades|length }} 笔
{% 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 %}
{{ 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 }}
平仓
编辑
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
{% 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 %}
{% 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 %}
{{ 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 %}
编辑
{% endfor %}
{% 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 %}