Files
finance-talk/成交量分析/FG609_7月流水面板.html

148 lines
13 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FG609 重点会员每日多空流水</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Microsoft YaHei', sans-serif;
background: #f0f2f5; padding: 0; color: #1d1d1f;
}
.topbar {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
color: #fff; padding: 20px 32px; position: sticky; top: 0; z-index: 10;
}
.topbar h1 { font-size: 20px; font-weight: 600; letter-spacing: 0.5px; }
.topbar .sub { font-size: 13px; color: rgba(255,255,255,0.6); margin-top: 4px; display: flex; gap: 16px; flex-wrap: wrap; }
.topbar .sub span { display: inline-flex; align-items: center; gap: 4px; }
.container { padding: 16px 24px; }
.legend { display: flex; gap: 20px; margin-bottom: 14px; font-size: 12px; color: #555; flex-wrap: wrap; }
.legend-item { display: flex; align-items: center; gap: 6px; }
.legend-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.legend-dot.long { background: #e74c3c; }
.legend-dot.short { background: #27ae60; }
.legend-dot.up { background: #e74c3c22; border: 1px solid #e74c3c55; }
.legend-dot.dn { background: #27ae6022; border: 1px solid #27ae6055; }
.table-wrap {
overflow-x: auto; border-radius: 12px; box-shadow: 0 1px 6px rgba(0,0,0,0.08);
background: #fff; border: 1px solid #e8e8ed;
}
table { width: 100%; border-collapse: collapse; min-width: 900px; font-size: 13px; }
thead { position: sticky; top: 0; z-index: 5; }
thead tr:first-child th {
background: #1a1a2e; color: #fff; font-weight: 500; font-size: 12px;
padding: 12px 6px; text-align: center; letter-spacing: 0.3px;
}
thead tr:first-child th:first-child { min-width: 76px; }
thead tr:nth-child(2) th {
background: #f8f9fc; color: #666; font-weight: 500; font-size: 11px;
padding: 6px 4px; text-align: center; border-bottom: 1px solid #e8e8ed;
}
thead tr:nth-child(2) th:first-child { background: #f8f9fc; }
/* 每家期货公司列组区分色 */
th.col-group-0, td.col-group-0 { border-left: 3px solid #e74c3c88; }
th.col-group-1, td.col-group-1 { border-left: 3px solid #3498db88; }
th.col-group-2, td.col-group-2 { border-left: 3px solid #f39c1288; }
th.col-group-3, td.col-group-3 { border-left: 3px solid #1abc9c88; }
th.col-group-4, td.col-group-4 { border-left: 3px solid #9b59b688; }
th.col-group-5, td.col-group-5 { border-left: 3px solid #e67e2288; }
thead tr:first-child th.col-group-0 { border-left: 3px solid #e74c3c; }
thead tr:first-child th.col-group-1 { border-left: 3px solid #3498db; }
thead tr:first-child th.col-group-2 { border-left: 3px solid #f39c12; }
thead tr:first-child th.col-group-3 { border-left: 3px solid #1abc9c; }
thead tr:first-child th.col-group-4 { border-left: 3px solid #9b59b6; }
thead tr:first-child th.col-group-5 { border-left: 3px solid #e67e22; }
th.inner, td.inner { border-left: none !important; }
th.col-head { min-width: 100px; }
td { padding: 8px 5px; text-align: center; border-bottom: 1px solid #f0f0f0; vertical-align: middle; }
.date-cell { font-weight: 600; font-size: 12px; color: #555; background: #fafbfc; position: sticky; left: 0; z-index: 2; }
tr:nth-child(even) .date-cell { background: #f5f6f8; }
tr:nth-child(even) td { background: #fafbfc; }
tr:hover td { background: #eef1f8 !important; }
tr:hover .date-cell { background: #eef1f8 !important; }
.num { font-variant-numeric: tabular-nums; font-weight: 500; }
.long-val { color: #c0392b; }
.short-val { color: #1e8449; }
.chg { font-size: 11px; font-weight: 500; }
.chg.up { color: #e74c3c; }
.chg.dn { color: #27ae60; }
.chg.z { color: #bbb; }
.net-cell { font-weight: 600; font-size: 12px; }
.net-cell.short { color: #27ae60; }
.net-cell.long { color: #e74c3c; }
.net-cell.flat { color: #999; }
</style>
</head>
<body>
<div class="topbar">
<h1>FG609 · 重点会员每日多空流水</h1>
<div class="sub">
<span>📅 2026年7月 · 17个交易日</span>
<span>🏭 郑州商品交易所</span>
<span>📊 多空 = 持仓量 · Δ = 日变化</span>
</div>
</div>
<div class="container">
<div class="legend">
<div class="legend-item"><span class="legend-dot long"></span> 多单</div>
<div class="legend-item"><span class="legend-dot short"></span> 空单</div>
<div class="legend-item"><span class="legend-dot up"></span> Δ 增加</div>
<div class="legend-item"><span class="legend-dot dn"></span> Δ 减少</div>
</div>
<div class="table-wrap">
<table id="tbl"></table>
</div>
</div>
<script>
const days = ["20260701","20260702","20260703","20260706","20260707","20260708","20260709","20260710","20260713","20260714","20260715","20260716","20260717","20260720","20260721","20260722","20260723"];
const members = ["国泰君安","东证期货","中信期货","永安期货","华泰期货","高盛期货"];
const data = {"20260701":{"国泰君安":{"lo":65007,"lc":4589,"so":157673,"sc":6580},"东证期货":{"lo":90080,"lc":1286,"so":185995,"sc":13545},"中信期货":{"lo":71727,"lc":2414,"so":180765,"sc":12179},"永安期货":{"lo":32342,"lc":448,"so":25768,"sc":5424},"华泰期货":{"lo":63601,"lc":-10188,"so":132029,"sc":28894},"高盛期货":{"lo":0,"lc":0,"so":157673,"sc":6580}},"20260702":{"国泰君安":{"lo":67463,"lc":3862,"so":176794,"sc":19121},"东证期货":{"lo":99881,"lc":9801,"so":190651,"sc":4656},"中信期货":{"lo":72217,"lc":490,"so":182049,"sc":1284},"永安期货":{"lo":42442,"lc":987,"so":77813,"sc":1072},"华泰期货":{"lo":62072,"lc":-2935,"so":115620,"sc":-16409},"高盛期货":{"lo":29726,"lc":-947,"so":22470,"sc":123}},"20260703":{"国泰君安":{"lo":68116,"lc":-4101,"so":170358,"sc":-11691},"东证期货":{"lo":102050,"lc":2169,"so":189063,"sc":-1588},"中信期货":{"lo":88168,"lc":20705,"so":177843,"sc":1049},"永安期货":{"lo":44041,"lc":1599,"so":74436,"sc":-3377},"华泰期货":{"lo":65616,"lc":9777,"so":105617,"sc":-10003},"高盛期货":{"lo":0,"lc":0,"so":177843,"sc":1049}},"20260706":{"国泰君安":{"lo":57833,"lc":-30335,"so":173356,"sc":2998},"东证期货":{"lo":97435,"lc":-4615,"so":190407,"sc":1344},"中信期货":{"lo":70555,"lc":2439,"so":178421,"sc":578},"永安期货":{"lo":49305,"lc":5264,"so":76964,"sc":2528},"华泰期货":{"lo":55891,"lc":3691,"so":126153,"sc":20536},"高盛期货":{"lo":0,"lc":0,"so":178421,"sc":578}},"20260707":{"国泰君安":{"lo":68215,"lc":10382,"so":190467,"sc":12046},"东证期货":{"lo":100847,"lc":3412,"so":200103,"sc":9696},"中信期货":{"lo":80862,"lc":10307,"so":198618,"sc":25262},"永安期货":{"lo":51188,"lc":1883,"so":77140,"sc":176},"华泰期货":{"lo":58994,"lc":8116,"so":77140,"sc":176},"高盛期货":{"lo":0,"lc":0,"so":190467,"sc":12046}},"20260708":{"国泰君安":{"lo":77241,"lc":-3621,"so":178871,"sc":-19747},"东证期货":{"lo":95678,"lc":-5169,"so":193146,"sc":-6957},"中信期货":{"lo":79813,"lc":11598,"so":191861,"sc":1394},"永安期货":{"lo":27495,"lc":213,"so":21407,"sc":-898},"华泰期货":{"lo":61499,"lc":82,"so":107763,"sc":-56346},"高盛期货":{"lo":0,"lc":0,"so":191861,"sc":1394}},"20260709":{"国泰君安":{"lo":70582,"lc":-9231,"so":186636,"sc":-6510},"东证期货":{"lo":94871,"lc":-807,"so":199514,"sc":7653},"中信期货":{"lo":77617,"lc":376,"so":188731,"sc":9860},"永安期货":{"lo":42550,"lc":809,"so":74977,"sc":-1944},"华泰期货":{"lo":61661,"lc":162,"so":132780,"sc":25017},"高盛期货":{"lo":0,"lc":0,"so":199514,"sc":7653}},"20260710":{"国泰君安":{"lo":71126,"lc":-6491,"so":171412,"sc":-17319},"东证期货":{"lo":93578,"lc":-1293,"so":194311,"sc":-5203},"中信期货":{"lo":78411,"lc":7829,"so":182245,"sc":-4391},"永安期货":{"lo":26850,"lc":-4346,"so":20928,"sc":-450},"华泰期货":{"lo":63688,"lc":5795,"so":109224,"sc":-23556},"高盛期货":{"lo":0,"lc":0,"so":194311,"sc":-5203}},"20260713":{"国泰君安":{"lo":75487,"lc":4361,"so":194729,"sc":418},"东证期货":{"lo":98417,"lc":4839,"so":206589,"sc":24344},"中信期货":{"lo":64253,"lc":-14158,"so":189631,"sc":18219},"永安期货":{"lo":31764,"lc":6092,"so":20787,"sc":664},"华泰期货":{"lo":58780,"lc":-4908,"so":76629,"sc":2438},"高盛期货":{"lo":0,"lc":0,"so":194729,"sc":418}},"20260714":{"国泰君安":{"lo":63343,"lc":2364,"so":193748,"sc":4117},"东证期货":{"lo":103232,"lc":4815,"so":204190,"sc":-2399},"中信期货":{"lo":75031,"lc":-456,"so":196440,"sc":1711},"永安期货":{"lo":53288,"lc":1456,"so":71181,"sc":-126},"华泰期货":{"lo":62028,"lc":4362,"so":80708,"sc":4079},"高盛期货":{"lo":0,"lc":0,"so":196440,"sc":1711}},"20260715":{"国泰君安":{"lo":64540,"lc":2512,"so":190739,"sc":-5701},"东证期货":{"lo":108766,"lc":5534,"so":206977,"sc":2787},"中信期货":{"lo":71796,"lc":-3235,"so":199042,"sc":5294},"永安期货":{"lo":52961,"lc":-327,"so":70465,"sc":-716},"华泰期货":{"lo":63757,"lc":1640,"so":135542,"sc":-13505},"高盛期货":{"lo":0,"lc":0,"so":190739,"sc":-5701}},"20260716":{"国泰君安":{"lo":76684,"lc":4888,"so":203618,"sc":12879},"东证期货":{"lo":117153,"lc":8387,"so":234300,"sc":35258},"中信期货":{"lo":75217,"lc":10677,"so":201833,"sc":-5144},"永安期货":{"lo":32654,"lc":633,"so":25913,"sc":2753},"华泰期货":{"lo":66343,"lc":4562,"so":90923,"sc":8752},"高盛期货":{"lo":0,"lc":0,"so":203618,"sc":12879}},"20260717":{"国泰君安":{"lo":72318,"lc":6928,"so":188849,"sc":-12984},"东证期货":{"lo":129219,"lc":12066,"so":234269,"sc":-31},"中信期货":{"lo":73355,"lc":7012,"so":218070,"sc":14452},"永安期货":{"lo":46816,"lc":-5306,"so":61898,"sc":1108},"华泰期货":{"lo":72048,"lc":-3169,"so":95624,"sc":4701},"高盛期货":{"lo":0,"lc":0,"so":218070,"sc":14452}},"20260720":{"国泰君安":{"lo":132797,"lc":3578,"so":219290,"sc":1220},"东证期货":{"lo":72234,"lc":-84,"so":188118,"sc":-731},"中信期货":{"lo":74195,"lc":840,"so":216091,"sc":-18178},"永安期货":{"lo":43778,"lc":-3038,"so":64079,"sc":2181},"华泰期货":{"lo":71829,"lc":-219,"so":177037,"sc":-1629},"高盛期货":{"lo":0,"lc":0,"so":219290,"sc":1220}},"20260721":{"国泰君安":{"lo":150587,"lc":17790,"so":215062,"sc":-1029},"东证期货":{"lo":78945,"lc":8359,"so":203387,"sc":-15903},"中信期货":{"lo":74821,"lc":2587,"so":177738,"sc":-10380},"永安期货":{"lo":26676,"lc":103,"so":21210,"sc":-2154},"华泰期货":{"lo":66017,"lc":-5812,"so":98147,"sc":865},"高盛期货":{"lo":0,"lc":0,"so":203387,"sc":-15903}},"20260722":{"国泰君安":{"lo":144325,"lc":-6262,"so":193030,"sc":-22032},"东证期货":{"lo":68791,"lc":-5130,"so":168449,"sc":-9289},"中信期货":{"lo":85630,"lc":6685,"so":188460,"sc":-14927},"永安期货":{"lo":28204,"lc":-1043,"so":27896,"sc":1069},"华泰期货":{"lo":63971,"lc":-10850,"so":112614,"sc":-18937},"高盛期货":{"lo":0,"lc":0,"so":188460,"sc":-14927}},"20260723":{"国泰君安":{"lo":147305,"lc":2980,"so":192601,"sc":-429},"东证期货":{"lo":70403,"lc":-15227,"so":183405,"sc":-5055},"中信期货":{"lo":63443,"lc":-528,"so":170270,"sc":1821},"永安期货":{"lo":49883,"lc":4237,"so":48861,"sc":-5848},"华泰期货":{"lo":60040,"lc":272,"so":88016,"sc":-2187},"高盛期货":{"lo":0,"lc":0,"so":183405,"sc":-5055}}};
function fmt(v) { return v.toLocaleString(); }
function chgHtml(v) {
if (v > 0) return '<span class="chg up">+'+fmt(v)+'</span>';
if (v < 0) return '<span class="chg dn">'+fmt(v)+'</span>';
return '<span class="chg z">0</span>';
}
let html = '<thead><tr><th>日期</th>';
members.forEach((m, i) => {
html += '<th class="col-head col-group-' + i + '" colspan="5" style="background:#16213e">' + m + '</th>';
});
html += '</tr><tr><th></th>';
members.forEach((m, i) => {
html += '<th class="col-group-' + i + '">多单</th><th class="inner" style="width:36px">Δ</th><th class="inner">空单</th><th class="inner" style="width:36px">Δ</th><th class="inner" style="width:58px">净头寸</th>';
});
html += '</tr></thead><tbody>';
days.forEach((d, idx) => {
let trStyle = '';
if (idx > 0) {
const prev = parseInt(days[idx-1]);
const curr = parseInt(d);
// gap > 2 means non-consecutive days (weekend gap, e.g. 20260703 -> 20260706)
if (curr - prev > 2) trStyle = ' style="border-top:3px solid #1a1a2e"';
}
html += '<tr' + trStyle + '>';
html += '<td class="date-cell num">' + d.slice(0,4)+'-'+d.slice(4,6)+'-'+d.slice(6) + '</td>';
members.forEach((m, i) => {
const r = data[d][m];
const net = r.lo - r.so;
html += '<td class="long-val num col-group-' + i + '">' + fmt(r.lo) + '</td>';
html += '<td class="inner">' + (r.lc !== 0 ? chgHtml(r.lc) : '<span class="chg z">-</span>') + '</td>';
html += '<td class="short-val num inner">' + fmt(r.so) + '</td>';
html += '<td class="inner">' + (r.sc !== 0 ? chgHtml(r.sc) : '<span class="chg z">-</span>') + '</td>';
const nc = net > 0 ? 'long' : net < 0 ? 'short' : 'flat';
html += '<td class="net-cell inner ' + nc + '">' + (net > 0 ? '+' : '') + fmt(net) + '</td>';
});
html += '</tr>';
});
html += '</tbody>';
document.getElementById('tbl').innerHTML = html;
</script>
</body>
</html>