Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ddd9e71820 | |||
| 55c7bdf18d | |||
| c7534bd3df | |||
| 111d70209a |
+37
-21
@@ -30,6 +30,8 @@
|
|||||||
|
|
||||||
## 二、重点会员逐日成交量
|
## 二、重点会员逐日成交量
|
||||||
|
|
||||||
|
高盛期货罕见进入成交量排名(仅7/02有量2.6万手),但持空单排名稳定前5,另见净头寸表。
|
||||||
|
|
||||||
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 |
|
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 |
|
||||||
|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|
|
||||||
| 07/01 | 233,783 | 299,440 | 259,117 | 45,015 | 147,842 | --- |
|
| 07/01 | 233,783 | 299,440 | 259,117 | 45,015 | 147,842 | --- |
|
||||||
@@ -52,25 +54,25 @@
|
|||||||
|
|
||||||
## 三、重点会员逐日净头寸(多 - 空)
|
## 三、重点会员逐日净头寸(多 - 空)
|
||||||
|
|
||||||
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 |
|
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 | **高盛期货** |
|
||||||
|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|---|
|
||||||
| 07/01 | -92,666 | -95,915 | -109,038 | +6,574 | -68,428 | +60,825 |
|
| 07/01 | -92,666 | -95,915 | -109,038 | +6,574 | -68,428 | +60,825 | **-157,673** |
|
||||||
| 07/02 | -109,331 | -90,770 | -109,832 | -35,371 | -53,548 | +6,179 |
|
| 07/02 | -109,331 | -90,770 | -109,832 | -35,371 | -53,548 | +6,179 | +7,256 |
|
||||||
| 07/03 | -102,242 | -87,013 | -89,675 | -30,395 | -40,001 | +6,503 |
|
| 07/03 | -102,242 | -87,013 | -89,675 | -30,395 | -40,001 | +6,503 | **-177,843** |
|
||||||
| 07/06 | -115,523 | -92,972 | -107,866 | -27,659 | -70,262 | +7,302 |
|
| 07/06 | -115,523 | -92,972 | -107,866 | -27,659 | -70,262 | +7,302 | **-178,421** |
|
||||||
| 07/07 | -122,252 | -99,256 | -117,756 | -25,952 | -18,146 | +7,059 |
|
| 07/07 | -122,252 | -99,256 | -117,756 | -25,952 | -18,146 | +7,059 | **-190,467** |
|
||||||
| 07/08 | -101,630 | -97,468 | -112,048 | +6,088 | -46,264 | +5,480 |
|
| 07/08 | -101,630 | -97,468 | -112,048 | +6,088 | -46,264 | +5,480 | **-191,861** |
|
||||||
| 07/09 | -116,054 | -104,643 | -111,114 | -32,427 | -71,119 | +9,083 |
|
| 07/09 | -116,054 | -104,643 | -111,114 | -32,427 | -71,119 | +9,083 | **-199,514** |
|
||||||
| 07/10 | -100,286 | -100,733 | -103,834 | +5,922 | -45,536 | +8,017 |
|
| 07/10 | -100,286 | -100,733 | -103,834 | +5,922 | -45,536 | +8,017 | **-194,311** |
|
||||||
| 07/13 | -119,242 | -108,172 | -125,378 | +10,977 | -17,849 | +10,657 |
|
| 07/13 | -119,242 | -108,172 | -125,378 | +10,977 | -17,849 | +10,657 | **-194,729** |
|
||||||
| 07/14 | -130,405 | -100,958 | -121,409 | -17,893 | -18,680 | +10,158 |
|
| 07/14 | -130,405 | -100,958 | -121,409 | -17,893 | -18,680 | +10,158 | **-196,440** |
|
||||||
| 07/15 | -126,199 | -98,211 | -127,246 | -17,504 | -71,785 | +8,840 |
|
| 07/15 | -126,199 | -98,211 | -127,246 | -17,504 | -71,785 | +8,840 | **-190,739** |
|
||||||
| **07/16** | **-126,934** | **-117,147** | **-126,616** | **+6,741** | -24,580 | +7,371 |
|
| **07/16** | **-126,934** | **-117,147** | **-126,616** | **+6,741** | -24,580 | +7,371 | **-203,618** |
|
||||||
| **07/17** | -116,531 | -105,050 | **-144,715** | -15,082 | -23,576 | +8,735 |
|
| **07/17** | -116,531 | -105,050 | **-144,715** | -15,082 | -23,576 | +8,735 | **-218,070** |
|
||||||
| 07/20 | -86,493 | **-115,884** | **-141,896** | -20,301 | **-105,208** | +6,407 |
|
| 07/20 | -86,493 | **-115,884** | **-141,896** | -20,301 | **-105,208** | +6,407 | **-219,290** |
|
||||||
| 07/21 | **-64,475** | **-124,442** | -102,917 | +5,466 | -32,130 | +3,932 |
|
| 07/21 | **-64,475** | **-124,442** | -102,917 | +5,466 | -32,130 | +3,932 | **-203,387** |
|
||||||
| 07/22 | **-48,705** | -99,658 | -102,830 | +308 | -48,643 | +3,158 |
|
| 07/22 | **-48,705** | -99,658 | -102,830 | +308 | -48,643 | +3,158 | **-188,460** |
|
||||||
| 07/23 | **-45,296** | **-113,002** | -106,827 | +1,022 | -27,976 | +2,858 |
|
| **07/23** | **-45,296** | **-113,002** | -106,827 | +1,022 | -27,976 | +2,858 | **-183,405** |
|
||||||
|
|
||||||
## 四、关键发现
|
## 四、关键发现
|
||||||
|
|
||||||
@@ -101,6 +103,20 @@
|
|||||||
- 方正中期是上榜中**唯一持续净多**的会员(+3k~+10k)
|
- 方正中期是上榜中**唯一持续净多**的会员(+3k~+10k)
|
||||||
- 整个品种全月净空在-33万~-44万之间
|
- 整个品种全月净空在-33万~-44万之间
|
||||||
|
|
||||||
### 4. 外资参与
|
### 4. 外资参与:高盛期货 — 沉默的巨量空头
|
||||||
|
|
||||||
- **7/23 高盛期货**空单183,405手排名空头第二,但此前的日子未在前20中出现过
|
高盛期货的持仓行为与中资会员截然不同:
|
||||||
|
|
||||||
|
- **不做量**:全月仅7/02一次进入成交量前20(2.6万手),其余日子成交量排名全在前20之外
|
||||||
|
- **但持空单全月排名前5**:净空头寸从7月初 -15.8万持续加至最高 -21.9万(7/20)
|
||||||
|
- **7/02短暂翻多**:当天净头寸 +7,256(唯一一次净多),但次日迅速回补至 -17.8万
|
||||||
|
|
||||||
|
| 日期 | 净空头寸 | 说明 |
|
||||||
|
|---|---|---|
|
||||||
|
| 07/01 | -157,673 | 月初即有大规模的底仓 |
|
||||||
|
| 07/07→07/09 | -190k→-200k | 持续加仓 |
|
||||||
|
| **07/16→07/17** | -203k→**-218k** | **暴跌中继续加空** |
|
||||||
|
| 07/20 | **-219,290** | **全月最空**(价格最低点889附近) |
|
||||||
|
| 07/21→07/23 | -203k→-183k | 小幅减仓,仍维持18万+空头 |
|
||||||
|
|
||||||
|
**高盛空仓与价格走势高度同步**:价格从960跌至890过程中,高盛空单从-19万增到-22万。7/20后价格反弹,高盛才开始减空。说明这是**基于基本面判断的套保/策略空头,而非短线投机**,2-3周建仓周期,不参与日内成交量排名。
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>FG609 前20会员持仓排名</title>
|
||||||
|
<style>
|
||||||
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f5f6fa; padding: 24px; color: #1a1a2e; }
|
||||||
|
.header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; }
|
||||||
|
.header h1 { font-size: 20px; font-weight: 600; }
|
||||||
|
.header span { font-size: 13px; color: #666; }
|
||||||
|
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
|
||||||
|
.card { background: #fff; border-radius: 10px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,0.08); }
|
||||||
|
.card .top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
|
||||||
|
.card .rank { font-size: 12px; color: #888; font-weight: 600; }
|
||||||
|
.card .name { font-size: 14px; font-weight: 600; }
|
||||||
|
.card .vol { font-size: 22px; font-weight: 700; }
|
||||||
|
.card .vol small { font-size: 13px; font-weight: 400; }
|
||||||
|
.chg-up { color: #e74c3c; }
|
||||||
|
.chg-down { color: #27ae60; }
|
||||||
|
.chg-0 { color: #999; }
|
||||||
|
.row2 { display: flex; gap: 12px; margin-top: 10px; padding-top: 10px; border-top: 1px solid #eee; }
|
||||||
|
.row2 > div { flex: 1; }
|
||||||
|
.row2 label { font-size: 11px; color: #888; display: block; }
|
||||||
|
.row2 .num { font-size: 15px; font-weight: 600; }
|
||||||
|
.net { font-size: 13px; font-weight: 600; margin-top: 6px; padding-top: 6px; border-top: 1px dashed #eee; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="header">
|
||||||
|
<h1>FG609 前20会员持仓排名</h1>
|
||||||
|
<span>2026-07-23 · 郑州商品交易所</span>
|
||||||
|
</div>
|
||||||
|
<div class="grid" id="grid"></div>
|
||||||
|
<script>
|
||||||
|
const data = [
|
||||||
|
{"rank":1,"name":"国泰君安(代客)","vol":318971,"vol_chg":-62376,"long_oi":147305,"long_chg":2980,"short_oi":192601,"short_chg":-429,"net":-45296},
|
||||||
|
{"rank":2,"name":"东证期货(代客)","vol":300477,"vol_chg":6057,"long_oi":70403,"long_chg":-15227,"short_oi":183405,"short_chg":-5055,"net":-113002},
|
||||||
|
{"rank":3,"name":"中信期货(代客)","vol":269227,"vol_chg":-31123,"long_oi":63443,"long_chg":-528,"short_oi":170270,"short_chg":1821,"net":-106827},
|
||||||
|
{"rank":4,"name":"五矿期货(代客)","vol":136245,"vol_chg":43666,"long_oi":63046,"long_chg":-5745,"short_oi":141610,"short_chg":28996,"net":-78564},
|
||||||
|
{"rank":5,"name":"华泰期货(代客)","vol":120984,"vol_chg":-2292,"long_oi":60040,"long_chg":272,"short_oi":88016,"short_chg":-2187,"net":-27976},
|
||||||
|
{"rank":6,"name":"冠通期货(代客)","vol":98116,"vol_chg":47780,"long_oi":56357,"long_chg":-663,"short_oi":71413,"short_chg":-9151,"net":-15056},
|
||||||
|
{"rank":7,"name":"银河期货(代客)","vol":86560,"vol_chg":-14234,"long_oi":50631,"long_chg":-3588,"short_oi":56787,"short_chg":-5343,"net":-6156},
|
||||||
|
{"rank":8,"name":"广发期货(代客)","vol":86232,"vol_chg":-19280,"long_oi":50128,"long_chg":615,"short_oi":48861,"short_chg":-5848,"net":1267},
|
||||||
|
{"rank":9,"name":"华闻期货(代客)","vol":83156,"vol_chg":-23036,"long_oi":49883,"long_chg":4237,"short_oi":39419,"short_chg":245,"net":10464},
|
||||||
|
{"rank":10,"name":"中泰期货(代客)","vol":81458,"vol_chg":2858,"long_oi":44652,"long_chg":1020,"short_oi":39076,"short_chg":877,"net":5576},
|
||||||
|
{"rank":11,"name":"中信建投(代客)","vol":63270,"vol_chg":4221,"long_oi":43748,"long_chg":2819,"short_oi":38532,"short_chg":-1972,"net":5216},
|
||||||
|
{"rank":12,"name":"光大期货(代客)","vol":62166,"vol_chg":196,"long_oi":42149,"long_chg":1972,"short_oi":38427,"short_chg":488,"net":3722},
|
||||||
|
{"rank":13,"name":"国信期货(代客)","vol":60570,"vol_chg":-5459,"long_oi":32668,"long_chg":1356,"short_oi":35369,"short_chg":-1415,"net":-2701},
|
||||||
|
{"rank":14,"name":"招商期货(代客)","vol":54286,"vol_chg":9923,"long_oi":32363,"long_chg":-1863,"short_oi":30159,"short_chg":-5047,"net":2204},
|
||||||
|
{"rank":15,"name":"海通期货(代客)","vol":47715,"vol_chg":17,"long_oi":31829,"long_chg":-6109,"short_oi":29086,"short_chg":-5276,"net":2743},
|
||||||
|
{"rank":16,"name":"南华期货(代客)","vol":46644,"vol_chg":13351,"long_oi":30128,"long_chg":1924,"short_oi":28816,"short_chg":662,"net":1312},
|
||||||
|
{"rank":17,"name":"瑞达期货(代客)","vol":43583,"vol_chg":8153,"long_oi":29777,"long_chg":-5192,"short_oi":25507,"short_chg":3068,"net":4270},
|
||||||
|
{"rank":18,"name":"安粮期货(代客)","vol":37862,"vol_chg":9527,"long_oi":27348,"long_chg":82,"short_oi":24953,"short_chg":-2943,"net":2395},
|
||||||
|
{"rank":19,"name":"方正中期(代客)","vol":36205,"vol_chg":-5587,"long_oi":26834,"long_chg":1832,"short_oi":23976,"short_chg":-2526,"net":2858},
|
||||||
|
{"rank":20,"name":"徽商期货(代客)","vol":35088,"vol_chg":-1103,"long_oi":25159,"long_chg":-5,"short_oi":18530,"short_chg":211,"net":6629}
|
||||||
|
];
|
||||||
|
|
||||||
|
function cls(v) {
|
||||||
|
if (v > 0) return 'chg-up';
|
||||||
|
if (v < 0) return 'chg-down';
|
||||||
|
return 'chg-0';
|
||||||
|
}
|
||||||
|
|
||||||
|
function fmt(v) { return v.toLocaleString(); }
|
||||||
|
|
||||||
|
function chgStr(v) {
|
||||||
|
const s = v > 0 ? '+' : '';
|
||||||
|
return s + fmt(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
const grid = document.getElementById('grid');
|
||||||
|
data.forEach(d => {
|
||||||
|
const card = document.createElement('div');
|
||||||
|
card.className = 'card';
|
||||||
|
card.innerHTML = `
|
||||||
|
<div class="top">
|
||||||
|
<span class="rank">#${d.rank}</span>
|
||||||
|
<span class="name">${d.name}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="vol">${fmt(d.vol)} <small class="${cls(d.vol_chg)}">(${chgStr(d.vol_chg)})</small></div>
|
||||||
|
</div>
|
||||||
|
<div class="row2">
|
||||||
|
<div>
|
||||||
|
<label>多单</label>
|
||||||
|
<div class="num">${fmt(d.long_oi)}</div>
|
||||||
|
<div class="${cls(d.long_chg)}" style="font-size:12px">${chgStr(d.long_chg)}</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>空单</label>
|
||||||
|
<div class="num">${fmt(d.short_oi)}</div>
|
||||||
|
<div class="${cls(d.short_chg)}" style="font-size:12px">${chgStr(d.short_chg)}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="net ${cls(d.net)}">净头寸 ${chgStr(d.net)}</div>
|
||||||
|
`;
|
||||||
|
grid.appendChild(card);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
+1
-1
@@ -73,7 +73,7 @@ for ds in sorted(all_data.keys()):
|
|||||||
|
|
||||||
# ====== 重点会员逐日变化 ======
|
# ====== 重点会员逐日变化 ======
|
||||||
key_members = ["国泰君安(代客)", "东证期货(代客)", "中信期货(代客)",
|
key_members = ["国泰君安(代客)", "东证期货(代客)", "中信期货(代客)",
|
||||||
"永安期货(代客)", "华泰期货(代客)", "方正中期(代客)"]
|
"永安期货(代客)", "华泰期货(代客)", "方正中期(代客)", "高盛期货(代客)"]
|
||||||
print("\n" + "="*100)
|
print("\n" + "="*100)
|
||||||
print("【重点会员逐日成交量】")
|
print("【重点会员逐日成交量】")
|
||||||
print("="*100)
|
print("="*100)
|
||||||
|
|||||||
@@ -0,0 +1,234 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>振幅锁仓策略 — 玻璃 FG2609 & FG2611 & FG2701</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #fff; --fg: #1e293b; --sub: #64748b;
|
||||||
|
--th-bg: #f1f5f9; --th-fg: #334155; --th-border: #cbd5e1;
|
||||||
|
--td-border: #e2e8f0; --td-even: #f8fafc; --td-first: #334155;
|
||||||
|
--na: #94a3b8;
|
||||||
|
}
|
||||||
|
[data-theme="dark"] {
|
||||||
|
--bg: #0f172a; --fg: #e2e8f0; --sub: #94a3b8;
|
||||||
|
--th-bg: #1e293b; --th-fg: #cbd5e1; --th-border: #334155;
|
||||||
|
--td-border: #1e293b; --td-even: #1a2332; --td-first: #e2e8f0;
|
||||||
|
--na: #64748b;
|
||||||
|
}
|
||||||
|
body { font-family: -apple-system, 'Segoe UI', system-ui, sans-serif; padding: 24px; max-width: 1100px; margin: 0 auto; color: var(--fg); background: var(--bg); }
|
||||||
|
h1 { font-size: 1.4rem; margin-bottom: 8px; }
|
||||||
|
.sub { color: var(--sub); font-size: 0.85rem; margin-bottom: 8px; }
|
||||||
|
.formula { color: var(--sub); font-size: 0.8rem; margin-bottom: 24px; padding: 6px 12px; background: var(--th-bg); border-radius: 4px; display: inline-block; }
|
||||||
|
table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
|
||||||
|
th { background: var(--th-bg); color: var(--th-fg); font-weight: 600; padding: 8px 10px; border: 1px solid var(--th-border); text-align: center; white-space: nowrap; }
|
||||||
|
td { padding: 6px 10px; border: 1px solid var(--td-border); text-align: center; }
|
||||||
|
tr:nth-child(even) td { background: var(--td-even); }
|
||||||
|
td:first-child { font-weight: 500; color: var(--td-first); }
|
||||||
|
tr.active td { background: #dbeafe !important; }
|
||||||
|
[data-theme="dark"] tr.active td { background: #1e3a5f !important; }
|
||||||
|
td:nth-child(2) { font-size: 0.78rem; color: var(--sub); }
|
||||||
|
.na { color: var(--na); }
|
||||||
|
|
||||||
|
.toggle-btn { position: fixed; top: 16px; right: 24px; background: var(--th-bg); border: 1px solid var(--th-border); color: var(--th-fg); padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 0.82rem; z-index: 10; }
|
||||||
|
.toggle-btn:hover { opacity: 0.8; }
|
||||||
|
|
||||||
|
.section { margin-bottom: 8px; }
|
||||||
|
.section h2 { font-size: 1.1rem; cursor: pointer; user-select: none; display: flex; align-items: center; gap: 8px; margin: 28px 0 10px; padding: 4px 0; }
|
||||||
|
.section h2 .arrow { display: inline-block; transition: transform .2s; font-size: 0.8rem; }
|
||||||
|
.section.collapsed h2 .arrow { transform: rotate(-90deg); }
|
||||||
|
.section.collapsed table { display: none; }
|
||||||
|
|
||||||
|
.drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 99; display: none; }
|
||||||
|
.drawer-overlay.show { display: block; }
|
||||||
|
.drawer { position: fixed; top: 0; right: 0; width: 340px; height: 100%; background: var(--bg); border-left: 1px solid var(--th-border); z-index: 100; padding: 24px; transform: translateX(100%); transition: transform .25s ease; overflow-y: auto; box-shadow: -4px 0 20px rgba(0,0,0,.15); }
|
||||||
|
.drawer.show { transform: translateX(0); }
|
||||||
|
.drawer h3 { font-size: 1rem; margin-bottom: 4px; }
|
||||||
|
.drawer .date-label { color: var(--sub); font-size: 0.82rem; margin-bottom: 16px; }
|
||||||
|
.drawer .calc-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; margin-bottom: 14px; }
|
||||||
|
.drawer .calc-table td { padding: 4px 8px; border: 1px solid var(--td-border); text-align: center; }
|
||||||
|
.drawer .calc-table tr:first-child td { background: var(--th-bg); font-weight: 600; color: var(--th-fg); }
|
||||||
|
.drawer .result { font-size: 0.85rem; line-height: 1.8; color: var(--fg); }
|
||||||
|
.drawer .result b { font-size: 1.1rem; }
|
||||||
|
.drawer .close-btn { position: absolute; top: 16px; right: 20px; background: none; border: none; font-size: 1.4rem; cursor: pointer; color: var(--sub); line-height: 1; }
|
||||||
|
.drawer .close-btn:hover { color: var(--fg); }
|
||||||
|
.amp-cell { cursor: pointer; text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 3px; }
|
||||||
|
.amp-cell:hover { color: #3b82f6; }
|
||||||
|
.nav-link { color: var(--sub); font-size: 0.82rem; margin-bottom: 4px; }
|
||||||
|
.nav-link a { color: #3b82f6; text-decoration: none; }
|
||||||
|
.nav-link a:hover { text-decoration: underline; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<button class="toggle-btn" id="themeToggle">🌙 暗夜</button>
|
||||||
|
|
||||||
|
<h1>振幅锁仓策略 — 玻璃</h1>
|
||||||
|
<p class="nav-link"><a href="index.html">← 返回总览</a> | <a href="index-SA.html">查看纯碱</a></p>
|
||||||
|
<p class="sub">FG2609 | FG2611 | FG2701 | 2026年7月</p>
|
||||||
|
<p class="formula">振幅算法:近 5 日均振幅 = 过去 5 个交易日 (最高 − 最低) 的均值,结果四舍五入取整</p>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-fg2609">
|
||||||
|
<h2 onclick="toggleSection('sec-fg2609')"><span class="arrow">▼</span> FG2609 玻璃</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>972</td><td>961</td><td>972</td><td>956</td><td>16</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>960</td><td>966</td><td>972</td><td>957</td><td>15</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>965</td><td>973</td><td>979</td><td>962</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>977</td><td>967</td><td>982</td><td>964</td><td>18</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>966</td><td>952</td><td>966</td><td>951</td><td>15</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>954</td><td>962</td><td>966</td><td>951</td><td>15</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>963</td><td>957</td><td>964</td><td>949</td><td>15</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>956</td><td>965</td><td>974</td><td>952</td><td>22</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>965</td><td>952</td><td>967</td><td>950</td><td>17</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>954</td><td>951</td><td>956</td><td>944</td><td>12</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>950</td><td>949</td><td>958</td><td>944</td><td>14</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>949</td><td>929</td><td>952</td><td>927</td><td>25</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>931</td><td>900</td><td>931</td><td>899</td><td>32</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>902</td><td>890</td><td>908</td><td>889</td><td>19</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>891</td><td>904</td><td>910</td><td>891</td><td>19</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>908</td><td>913</td><td>918</td><td>900</td><td>18</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>914</td><td>899</td><td>917</td><td>892</td><td>25</td><td class="amp-cell">23</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">23</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-fg2611">
|
||||||
|
<h2 onclick="toggleSection('sec-fg2611')"><span class="arrow">▼</span> FG2611 玻璃</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>1011</td><td>1001</td><td>1011</td><td>994</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>1001</td><td>1002</td><td>1008</td><td>994</td><td>14</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>1002</td><td>1010</td><td>1017</td><td>999</td><td>18</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>1013</td><td>1003</td><td>1019</td><td>1002</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>1003</td><td>984</td><td>1003</td><td>983</td><td>20</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>984</td><td>993</td><td>996</td><td>981</td><td>15</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>994</td><td>987</td><td>994</td><td>981</td><td>13</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>986</td><td>996</td><td>1004</td><td>983</td><td>21</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>996</td><td>980</td><td>1001</td><td>980</td><td>21</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>982</td><td>983</td><td>986</td><td>974</td><td>12</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>982</td><td>979</td><td>988</td><td>975</td><td>13</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>979</td><td>960</td><td>982</td><td>957</td><td>25</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>962</td><td>932</td><td>962</td><td>931</td><td>31</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>934</td><td>926</td><td>939</td><td>924</td><td>15</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>929</td><td>934</td><td>941</td><td>926</td><td>15</td><td class="amp-cell">19</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>936</td><td>939</td><td>945</td><td>929</td><td>16</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>938</td><td>931</td><td>941</td><td>925</td><td>16</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">19</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-fg2701">
|
||||||
|
<h2 onclick="toggleSection('sec-fg2701')"><span class="arrow">▼</span> FG2701 玻璃</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>1059</td><td>1054</td><td>1062</td><td>1050</td><td>12</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>1051</td><td>1055</td><td>1061</td><td>1050</td><td>11</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>1053</td><td>1062</td><td>1070</td><td>1053</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>1065</td><td>1058</td><td>1071</td><td>1056</td><td>15</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>1056</td><td>1042</td><td>1058</td><td>1041</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>1043</td><td>1048</td><td>1051</td><td>1036</td><td>15</td><td class="amp-cell">14</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>1048</td><td>1043</td><td>1049</td><td>1037</td><td>12</td><td class="amp-cell">15</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>1041</td><td>1048</td><td>1056</td><td>1039</td><td>17</td><td class="amp-cell">15</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>1049</td><td>1035</td><td>1050</td><td>1034</td><td>16</td><td class="amp-cell">15</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>1035</td><td>1035</td><td>1041</td><td>1031</td><td>10</td><td class="amp-cell">15</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>1035</td><td>1030</td><td>1038</td><td>1028</td><td>10</td><td class="amp-cell">14</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>1031</td><td>1016</td><td>1033</td><td>1014</td><td>19</td><td class="amp-cell">13</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>1017</td><td>989</td><td>1017</td><td>988</td><td>29</td><td class="amp-cell">14</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>989</td><td>985</td><td>996</td><td>983</td><td>13</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>987</td><td>987</td><td>992</td><td>981</td><td>11</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>991</td><td>987</td><td>993</td><td>977</td><td>16</td><td class="amp-cell">16</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>989</td><td>979</td><td>990</td><td>974</td><td>16</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">17</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="drawer-overlay" id="overlay" onclick="closeDrawer()"></div>
|
||||||
|
<div class="drawer" id="drawer">
|
||||||
|
<button class="close-btn" onclick="closeDrawer()">×</button>
|
||||||
|
<h3 id="drawer-title"></h3>
|
||||||
|
<p class="date-label" id="drawer-date"></p>
|
||||||
|
<table class="calc-table" id="drawer-table"></table>
|
||||||
|
<div class="result" id="drawer-result"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var themeBtn = document.getElementById('themeToggle');
|
||||||
|
function setTheme(dark) {
|
||||||
|
if (dark) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
themeBtn.textContent = '☀️ 日间';
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute('data-theme');
|
||||||
|
themeBtn.textContent = '🌙 暗夜';
|
||||||
|
}
|
||||||
|
try { localStorage.setItem('ft-theme', dark ? 'dark' : 'light'); } catch(e) {}
|
||||||
|
}
|
||||||
|
function toggleTheme() {
|
||||||
|
setTheme(document.documentElement.getAttribute('data-theme') !== 'dark');
|
||||||
|
}
|
||||||
|
(function() {
|
||||||
|
try {
|
||||||
|
var s = localStorage.getItem('ft-theme');
|
||||||
|
if (s === 'dark' || (!s && matchMedia('(prefers-color-scheme: dark)').matches)) setTheme(true);
|
||||||
|
} catch(e) {}
|
||||||
|
})();
|
||||||
|
|
||||||
|
function toggleSection(id) {
|
||||||
|
document.getElementById(id).classList.toggle('collapsed');
|
||||||
|
}
|
||||||
|
|
||||||
|
var activeRow = null;
|
||||||
|
function closeDrawer() {
|
||||||
|
document.getElementById('overlay').classList.remove('show');
|
||||||
|
document.getElementById('drawer').classList.remove('show');
|
||||||
|
if (activeRow) { activeRow.classList.remove('active'); activeRow = null; }
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.amp-cell').forEach(function(cell) {
|
||||||
|
cell.addEventListener('click', function() {
|
||||||
|
var row = cell.parentElement;
|
||||||
|
var tbl = row.closest('table');
|
||||||
|
var rows = tbl.querySelectorAll('tr');
|
||||||
|
var h2 = tbl.closest('.section').querySelector('h2');
|
||||||
|
var product = h2.childNodes[h2.childNodes.length - 1].textContent.trim();
|
||||||
|
|
||||||
|
var ranges = [];
|
||||||
|
for (var i = 1; i < rows.length; i++) {
|
||||||
|
var cells = rows[i].querySelectorAll('td');
|
||||||
|
ranges.push({
|
||||||
|
date: cells[0].textContent.trim(),
|
||||||
|
wk: cells[1].textContent.trim(),
|
||||||
|
diff: parseInt(cells[6].textContent) || 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = Array.prototype.indexOf.call(rows, row) - 1;
|
||||||
|
var start = idx - 5;
|
||||||
|
if (start < 0) return;
|
||||||
|
|
||||||
|
var ampVal = cell.textContent.trim();
|
||||||
|
document.getElementById('drawer-title').textContent = product;
|
||||||
|
document.getElementById('drawer-date').textContent = '目标日期: ' + ranges[idx].date + ' ' + ranges[idx].wk + ' 振幅 ' + ampVal;
|
||||||
|
|
||||||
|
var html = '<tr><td>日期</td><td>最高−最低</td></tr>';
|
||||||
|
var sum = 0;
|
||||||
|
for (var j = start; j < idx; j++) {
|
||||||
|
html += '<tr><td>' + ranges[j].date + ' ' + ranges[j].wk + '</td><td>' + ranges[j].diff + '</td></tr>';
|
||||||
|
sum += ranges[j].diff;
|
||||||
|
}
|
||||||
|
document.getElementById('drawer-table').innerHTML = html;
|
||||||
|
document.getElementById('drawer-result').innerHTML = '合计 <b>' + sum + '</b> ÷ 5 = <b>' + (sum / 5).toFixed(1) + '</b><br>四舍五入 → <b>' + Math.round(sum / 5) + '</b>';
|
||||||
|
|
||||||
|
document.getElementById('overlay').classList.add('show');
|
||||||
|
document.getElementById('drawer').classList.add('show');
|
||||||
|
|
||||||
|
if (activeRow) activeRow.classList.remove('active');
|
||||||
|
row.classList.add('active');
|
||||||
|
activeRow = row;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,234 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>振幅锁仓策略 — 纯碱 SA2609 & SA2611 & SA2701</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #fff; --fg: #1e293b; --sub: #64748b;
|
||||||
|
--th-bg: #f1f5f9; --th-fg: #334155; --th-border: #cbd5e1;
|
||||||
|
--td-border: #e2e8f0; --td-even: #f8fafc; --td-first: #334155;
|
||||||
|
--na: #94a3b8;
|
||||||
|
}
|
||||||
|
[data-theme="dark"] {
|
||||||
|
--bg: #0f172a; --fg: #e2e8f0; --sub: #94a3b8;
|
||||||
|
--th-bg: #1e293b; --th-fg: #cbd5e1; --th-border: #334155;
|
||||||
|
--td-border: #1e293b; --td-even: #1a2332; --td-first: #e2e8f0;
|
||||||
|
--na: #64748b;
|
||||||
|
}
|
||||||
|
body { font-family: -apple-system, 'Segoe UI', system-ui, sans-serif; padding: 24px; max-width: 1100px; margin: 0 auto; color: var(--fg); background: var(--bg); }
|
||||||
|
h1 { font-size: 1.4rem; margin-bottom: 8px; }
|
||||||
|
.sub { color: var(--sub); font-size: 0.85rem; margin-bottom: 8px; }
|
||||||
|
.formula { color: var(--sub); font-size: 0.8rem; margin-bottom: 24px; padding: 6px 12px; background: var(--th-bg); border-radius: 4px; display: inline-block; }
|
||||||
|
table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
|
||||||
|
th { background: var(--th-bg); color: var(--th-fg); font-weight: 600; padding: 8px 10px; border: 1px solid var(--th-border); text-align: center; white-space: nowrap; }
|
||||||
|
td { padding: 6px 10px; border: 1px solid var(--td-border); text-align: center; }
|
||||||
|
tr:nth-child(even) td { background: var(--td-even); }
|
||||||
|
td:first-child { font-weight: 500; color: var(--td-first); }
|
||||||
|
tr.active td { background: #dbeafe !important; }
|
||||||
|
[data-theme="dark"] tr.active td { background: #1e3a5f !important; }
|
||||||
|
td:nth-child(2) { font-size: 0.78rem; color: var(--sub); }
|
||||||
|
.na { color: var(--na); }
|
||||||
|
|
||||||
|
.toggle-btn { position: fixed; top: 16px; right: 24px; background: var(--th-bg); border: 1px solid var(--th-border); color: var(--th-fg); padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 0.82rem; z-index: 10; }
|
||||||
|
.toggle-btn:hover { opacity: 0.8; }
|
||||||
|
|
||||||
|
.section { margin-bottom: 8px; }
|
||||||
|
.section h2 { font-size: 1.1rem; cursor: pointer; user-select: none; display: flex; align-items: center; gap: 8px; margin: 28px 0 10px; padding: 4px 0; }
|
||||||
|
.section h2 .arrow { display: inline-block; transition: transform .2s; font-size: 0.8rem; }
|
||||||
|
.section.collapsed h2 .arrow { transform: rotate(-90deg); }
|
||||||
|
.section.collapsed table { display: none; }
|
||||||
|
|
||||||
|
.drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 99; display: none; }
|
||||||
|
.drawer-overlay.show { display: block; }
|
||||||
|
.drawer { position: fixed; top: 0; right: 0; width: 340px; height: 100%; background: var(--bg); border-left: 1px solid var(--th-border); z-index: 100; padding: 24px; transform: translateX(100%); transition: transform .25s ease; overflow-y: auto; box-shadow: -4px 0 20px rgba(0,0,0,.15); }
|
||||||
|
.drawer.show { transform: translateX(0); }
|
||||||
|
.drawer h3 { font-size: 1rem; margin-bottom: 4px; }
|
||||||
|
.drawer .date-label { color: var(--sub); font-size: 0.82rem; margin-bottom: 16px; }
|
||||||
|
.drawer .calc-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; margin-bottom: 14px; }
|
||||||
|
.drawer .calc-table td { padding: 4px 8px; border: 1px solid var(--td-border); text-align: center; }
|
||||||
|
.drawer .calc-table tr:first-child td { background: var(--th-bg); font-weight: 600; color: var(--th-fg); }
|
||||||
|
.drawer .result { font-size: 0.85rem; line-height: 1.8; color: var(--fg); }
|
||||||
|
.drawer .result b { font-size: 1.1rem; }
|
||||||
|
.drawer .close-btn { position: absolute; top: 16px; right: 20px; background: none; border: none; font-size: 1.4rem; cursor: pointer; color: var(--sub); line-height: 1; }
|
||||||
|
.drawer .close-btn:hover { color: var(--fg); }
|
||||||
|
.amp-cell { cursor: pointer; text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 3px; }
|
||||||
|
.amp-cell:hover { color: #3b82f6; }
|
||||||
|
.nav-link { color: var(--sub); font-size: 0.82rem; margin-bottom: 4px; }
|
||||||
|
.nav-link a { color: #3b82f6; text-decoration: none; }
|
||||||
|
.nav-link a:hover { text-decoration: underline; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<button class="toggle-btn" id="themeToggle">🌙 暗夜</button>
|
||||||
|
|
||||||
|
<h1>振幅锁仓策略 — 纯碱</h1>
|
||||||
|
<p class="nav-link"><a href="index.html">← 返回总览</a> | <a href="index-FG.html">查看玻璃</a></p>
|
||||||
|
<p class="sub">SA2609 | SA2611 | SA2701 | 2026年7月</p>
|
||||||
|
<p class="formula">振幅算法:近 5 日均振幅 = 过去 5 个交易日 (最高 − 最低) 的均值,结果四舍五入取整</p>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-sa2609">
|
||||||
|
<h2 onclick="toggleSection('sec-sa2609')"><span class="arrow">▼</span> SA2609 纯碱</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>1086</td><td>1089</td><td>1097</td><td>1084</td><td>13</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>1088</td><td>1103</td><td>1110</td><td>1087</td><td>23</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>1102</td><td>1103</td><td>1113</td><td>1098</td><td>15</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>1105</td><td>1101</td><td>1117</td><td>1098</td><td>19</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>1100</td><td>1070</td><td>1102</td><td>1070</td><td>32</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>1072</td><td>1080</td><td>1084</td><td>1070</td><td>14</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>1078</td><td>1078</td><td>1082</td><td>1065</td><td>17</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>1079</td><td>1084</td><td>1093</td><td>1073</td><td>20</td><td class="amp-cell">19</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>1083</td><td>1063</td><td>1089</td><td>1061</td><td>28</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>1065</td><td>1064</td><td>1070</td><td>1057</td><td>13</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>1064</td><td>1051</td><td>1066</td><td>1049</td><td>17</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>1052</td><td>1034</td><td>1055</td><td>1030</td><td>25</td><td class="amp-cell">19</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>1035</td><td>1007</td><td>1035</td><td>1006</td><td>29</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>1009</td><td>1006</td><td>1022</td><td>1004</td><td>18</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>1005</td><td>1009</td><td>1015</td><td>1000</td><td>15</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>1009</td><td>1013</td><td>1020</td><td>988</td><td>32</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>1014</td><td>1007</td><td>1018</td><td>996</td><td>22</td><td class="amp-cell">24</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">23</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-sa2611">
|
||||||
|
<h2 onclick="toggleSection('sec-sa2611')"><span class="arrow">▼</span> SA2611 纯碱</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>1117</td><td>1118</td><td>1128</td><td>1112</td><td>16</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>1119</td><td>1134</td><td>1139</td><td>1117</td><td>22</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>1133</td><td>1132</td><td>1142</td><td>1127</td><td>15</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>1130</td><td>1128</td><td>1145</td><td>1126</td><td>19</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>1128</td><td>1094</td><td>1128</td><td>1092</td><td>36</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>1093</td><td>1105</td><td>1110</td><td>1093</td><td>17</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>1102</td><td>1103</td><td>1107</td><td>1090</td><td>17</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>1101</td><td>1113</td><td>1120</td><td>1100</td><td>20</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>1112</td><td>1089</td><td>1118</td><td>1086</td><td>32</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>1092</td><td>1092</td><td>1094</td><td>1085</td><td>9</td><td class="amp-cell">24</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>1091</td><td>1077</td><td>1095</td><td>1076</td><td>19</td><td class="amp-cell">19</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>1080</td><td>1057</td><td>1081</td><td>1053</td><td>28</td><td class="amp-cell">19</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>1060</td><td>1036</td><td>1060</td><td>1035</td><td>25</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>1038</td><td>1041</td><td>1055</td><td>1037</td><td>18</td><td class="amp-cell">23</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>1039</td><td>1042</td><td>1049</td><td>1034</td><td>15</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>1041</td><td>1041</td><td>1048</td><td>1017</td><td>31</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>1042</td><td>1037</td><td>1046</td><td>1026</td><td>20</td><td class="amp-cell">23</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">22</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section collapsed" id="sec-sa2701">
|
||||||
|
<h2 onclick="toggleSection('sec-sa2701')"><span class="arrow">▼</span> SA2701 纯碱</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
||||||
|
<tr><td>2026/7/1</td><td>周三</td><td>1157</td><td>1157</td><td>1164</td><td>1152</td><td>12</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/2</td><td>周四</td><td>1156</td><td>1171</td><td>1176</td><td>1155</td><td>21</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/3</td><td>周五</td><td>1169</td><td>1172</td><td>1180</td><td>1166</td><td>14</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/6</td><td>周一</td><td>1171</td><td>1166</td><td>1182</td><td>1165</td><td>17</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/7</td><td>周二</td><td>1164</td><td>1139</td><td>1167</td><td>1139</td><td>28</td><td class="na">-</td></tr>
|
||||||
|
<tr><td>2026/7/8</td><td>周三</td><td>1142</td><td>1148</td><td>1151</td><td>1139</td><td>12</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/9</td><td>周四</td><td>1148</td><td>1144</td><td>1149</td><td>1133</td><td>16</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/10</td><td>周五</td><td>1146</td><td>1152</td><td>1161</td><td>1142</td><td>19</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/13</td><td>周一</td><td>1149</td><td>1132</td><td>1158</td><td>1130</td><td>28</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/14</td><td>周二</td><td>1135</td><td>1135</td><td>1137</td><td>1128</td><td>9</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/15</td><td>周三</td><td>1136</td><td>1122</td><td>1138</td><td>1120</td><td>18</td><td class="amp-cell">17</td></tr>
|
||||||
|
<tr><td>2026/7/16</td><td>周四</td><td>1123</td><td>1098</td><td>1125</td><td>1096</td><td>29</td><td class="amp-cell">18</td></tr>
|
||||||
|
<tr><td>2026/7/17</td><td>周五</td><td>1100</td><td>1078</td><td>1100</td><td>1077</td><td>23</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/20</td><td>周一</td><td>1079</td><td>1084</td><td>1098</td><td>1078</td><td>20</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/21</td><td>周二</td><td>1084</td><td>1083</td><td>1090</td><td>1077</td><td>13</td><td class="amp-cell">20</td></tr>
|
||||||
|
<tr><td>2026/7/22</td><td>周三</td><td>1083</td><td>1080</td><td>1087</td><td>1060</td><td>27</td><td class="amp-cell">21</td></tr>
|
||||||
|
<tr><td>2026/7/23</td><td>周四</td><td>1079</td><td>1077</td><td>1085</td><td>1068</td><td>17</td><td class="amp-cell">22</td></tr>
|
||||||
|
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">20</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="drawer-overlay" id="overlay" onclick="closeDrawer()"></div>
|
||||||
|
<div class="drawer" id="drawer">
|
||||||
|
<button class="close-btn" onclick="closeDrawer()">×</button>
|
||||||
|
<h3 id="drawer-title"></h3>
|
||||||
|
<p class="date-label" id="drawer-date"></p>
|
||||||
|
<table class="calc-table" id="drawer-table"></table>
|
||||||
|
<div class="result" id="drawer-result"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var themeBtn = document.getElementById('themeToggle');
|
||||||
|
function setTheme(dark) {
|
||||||
|
if (dark) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
themeBtn.textContent = '☀️ 日间';
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute('data-theme');
|
||||||
|
themeBtn.textContent = '🌙 暗夜';
|
||||||
|
}
|
||||||
|
try { localStorage.setItem('ft-theme', dark ? 'dark' : 'light'); } catch(e) {}
|
||||||
|
}
|
||||||
|
function toggleTheme() {
|
||||||
|
setTheme(document.documentElement.getAttribute('data-theme') !== 'dark');
|
||||||
|
}
|
||||||
|
(function() {
|
||||||
|
try {
|
||||||
|
var s = localStorage.getItem('ft-theme');
|
||||||
|
if (s === 'dark' || (!s && matchMedia('(prefers-color-scheme: dark)').matches)) setTheme(true);
|
||||||
|
} catch(e) {}
|
||||||
|
})();
|
||||||
|
|
||||||
|
function toggleSection(id) {
|
||||||
|
document.getElementById(id).classList.toggle('collapsed');
|
||||||
|
}
|
||||||
|
|
||||||
|
var activeRow = null;
|
||||||
|
function closeDrawer() {
|
||||||
|
document.getElementById('overlay').classList.remove('show');
|
||||||
|
document.getElementById('drawer').classList.remove('show');
|
||||||
|
if (activeRow) { activeRow.classList.remove('active'); activeRow = null; }
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.amp-cell').forEach(function(cell) {
|
||||||
|
cell.addEventListener('click', function() {
|
||||||
|
var row = cell.parentElement;
|
||||||
|
var tbl = row.closest('table');
|
||||||
|
var rows = tbl.querySelectorAll('tr');
|
||||||
|
var h2 = tbl.closest('.section').querySelector('h2');
|
||||||
|
var product = h2.childNodes[h2.childNodes.length - 1].textContent.trim();
|
||||||
|
|
||||||
|
var ranges = [];
|
||||||
|
for (var i = 1; i < rows.length; i++) {
|
||||||
|
var cells = rows[i].querySelectorAll('td');
|
||||||
|
ranges.push({
|
||||||
|
date: cells[0].textContent.trim(),
|
||||||
|
wk: cells[1].textContent.trim(),
|
||||||
|
diff: parseInt(cells[6].textContent) || 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = Array.prototype.indexOf.call(rows, row) - 1;
|
||||||
|
var start = idx - 5;
|
||||||
|
if (start < 0) return;
|
||||||
|
|
||||||
|
var ampVal = cell.textContent.trim();
|
||||||
|
document.getElementById('drawer-title').textContent = product;
|
||||||
|
document.getElementById('drawer-date').textContent = '目标日期: ' + ranges[idx].date + ' ' + ranges[idx].wk + ' 振幅 ' + ampVal;
|
||||||
|
|
||||||
|
var html = '<tr><td>日期</td><td>最高−最低</td></tr>';
|
||||||
|
var sum = 0;
|
||||||
|
for (var j = start; j < idx; j++) {
|
||||||
|
html += '<tr><td>' + ranges[j].date + ' ' + ranges[j].wk + '</td><td>' + ranges[j].diff + '</td></tr>';
|
||||||
|
sum += ranges[j].diff;
|
||||||
|
}
|
||||||
|
document.getElementById('drawer-table').innerHTML = html;
|
||||||
|
document.getElementById('drawer-result').innerHTML = '合计 <b>' + sum + '</b> ÷ 5 = <b>' + (sum / 5).toFixed(1) + '</b><br>四舍五入 → <b>' + Math.round(sum / 5) + '</b>';
|
||||||
|
|
||||||
|
document.getElementById('overlay').classList.add('show');
|
||||||
|
document.getElementById('drawer').classList.add('show');
|
||||||
|
|
||||||
|
if (activeRow) activeRow.classList.remove('active');
|
||||||
|
row.classList.add('active');
|
||||||
|
activeRow = row;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
+34
-216
@@ -3,58 +3,38 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>振幅锁仓策略 — SA2611 & FG2611 & SA2701 & FG2701</title>
|
<title>振幅锁仓策略</title>
|
||||||
<style>
|
<style>
|
||||||
:root {
|
:root {
|
||||||
--bg: #fff; --fg: #1e293b; --sub: #64748b;
|
--bg: #fff; --fg: #1e293b; --sub: #64748b;
|
||||||
--th-bg: #f1f5f9; --th-fg: #334155; --th-border: #cbd5e1;
|
|
||||||
--td-border: #e2e8f0; --td-even: #f8fafc; --td-first: #334155;
|
|
||||||
--na: #94a3b8;
|
|
||||||
}
|
}
|
||||||
[data-theme="dark"] {
|
[data-theme="dark"] {
|
||||||
--bg: #0f172a; --fg: #e2e8f0; --sub: #94a3b8;
|
--bg: #0f172a; --fg: #e2e8f0; --sub: #94a3b8;
|
||||||
--th-bg: #1e293b; --th-fg: #cbd5e1; --th-border: #334155;
|
|
||||||
--td-border: #1e293b; --td-even: #1a2332; --td-first: #e2e8f0;
|
|
||||||
--na: #64748b;
|
|
||||||
}
|
}
|
||||||
body { font-family: -apple-system, 'Segoe UI', system-ui, sans-serif; padding: 24px; max-width: 1100px; margin: 0 auto; color: var(--fg); background: var(--bg); }
|
body {
|
||||||
h1 { font-size: 1.4rem; margin-bottom: 8px; }
|
font-family: -apple-system, 'Segoe UI', system-ui, sans-serif; padding: 48px 24px;
|
||||||
.sub { color: var(--sub); font-size: 0.85rem; margin-bottom: 8px; }
|
max-width: 600px; margin: 0 auto; color: var(--fg); background: var(--bg);
|
||||||
.formula { color: var(--sub); font-size: 0.8rem; margin-bottom: 24px; padding: 6px 12px; background: var(--th-bg); border-radius: 4px; display: inline-block; }
|
text-align: center;
|
||||||
table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
|
}
|
||||||
th { background: var(--th-bg); color: var(--th-fg); font-weight: 600; padding: 8px 10px; border: 1px solid var(--th-border); text-align: center; white-space: nowrap; }
|
h1 { font-size: 1.6rem; margin-bottom: 8px; }
|
||||||
td { padding: 6px 10px; border: 1px solid var(--td-border); text-align: center; }
|
.sub { color: var(--sub); font-size: 0.85rem; margin-bottom: 40px; }
|
||||||
tr:nth-child(even) td { background: var(--td-even); }
|
.card {
|
||||||
td:first-child { font-weight: 500; color: var(--td-first); }
|
display: block; padding: 24px; margin: 16px 0; border-radius: 12px;
|
||||||
tr.active td { background: #dbeafe !important; }
|
text-decoration: none; font-size: 1.1rem; font-weight: 600;
|
||||||
[data-theme="dark"] tr.active td { background: #1e3a5f !important; }
|
transition: transform .15s, box-shadow .15s;
|
||||||
td:nth-child(2) { font-size: 0.78rem; color: var(--sub); }
|
border: 1px solid var(--sub);
|
||||||
.na { color: var(--na); }
|
}
|
||||||
|
.card:hover { transform: translateY(-2px); }
|
||||||
.toggle-btn { position: fixed; top: 16px; right: 24px; background: var(--th-bg); border: 1px solid var(--th-border); color: var(--th-fg); padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 0.82rem; z-index: 10; }
|
.card.sa { color: #2563eb; border-color: #bfdbfe; background: #eff6ff; }
|
||||||
.toggle-btn:hover { opacity: 0.8; }
|
.card.fg { color: #059669; border-color: #a7f3d0; background: #ecfdf5; }
|
||||||
|
[data-theme="dark"] .card.sa { color: #93c5fd; border-color: #1e3a5f; background: #0f1a2e; }
|
||||||
.section { margin-bottom: 8px; }
|
[data-theme="dark"] .card.fg { color: #6ee7b7; border-color: #064e3b; background: #0a1f17; }
|
||||||
.section h2 { font-size: 1.1rem; cursor: pointer; user-select: none; display: flex; align-items: center; gap: 8px; margin: 28px 0 10px; padding: 4px 0; }
|
.card .desc { font-size: 0.8rem; font-weight: 400; color: var(--sub); margin-top: 4px; }
|
||||||
.section h2 .arrow { display: inline-block; transition: transform .2s; font-size: 0.8rem; }
|
.toggle-btn {
|
||||||
.section.collapsed h2 .arrow { transform: rotate(-90deg); }
|
position: fixed; top: 16px; right: 24px; background: var(--bg);
|
||||||
.section.collapsed table { display: none; }
|
border: 1px solid var(--sub); color: var(--fg);
|
||||||
|
padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 0.82rem; z-index: 10;
|
||||||
.drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 99; display: none; }
|
}
|
||||||
.drawer-overlay.show { display: block; }
|
|
||||||
.drawer { position: fixed; top: 0; right: 0; width: 340px; height: 100%; background: var(--bg); border-left: 1px solid var(--th-border); z-index: 100; padding: 24px; transform: translateX(100%); transition: transform .25s ease; overflow-y: auto; box-shadow: -4px 0 20px rgba(0,0,0,.15); }
|
|
||||||
.drawer.show { transform: translateX(0); }
|
|
||||||
.drawer h3 { font-size: 1rem; margin-bottom: 4px; }
|
|
||||||
.drawer .date-label { color: var(--sub); font-size: 0.82rem; margin-bottom: 16px; }
|
|
||||||
.drawer .calc-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; margin-bottom: 14px; }
|
|
||||||
.drawer .calc-table td { padding: 4px 8px; border: 1px solid var(--td-border); text-align: center; }
|
|
||||||
.drawer .calc-table tr:first-child td { background: var(--th-bg); font-weight: 600; color: var(--th-fg); }
|
|
||||||
.drawer .result { font-size: 0.85rem; line-height: 1.8; color: var(--fg); }
|
|
||||||
.drawer .result b { font-size: 1.1rem; }
|
|
||||||
.drawer .close-btn { position: absolute; top: 16px; right: 20px; background: none; border: none; font-size: 1.4rem; cursor: pointer; color: var(--sub); line-height: 1; }
|
|
||||||
.drawer .close-btn:hover { color: var(--fg); }
|
|
||||||
.amp-cell { cursor: pointer; text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 3px; }
|
|
||||||
.amp-cell:hover { color: #3b82f6; }
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -62,120 +42,19 @@
|
|||||||
<button class="toggle-btn" id="themeToggle">🌙 暗夜</button>
|
<button class="toggle-btn" id="themeToggle">🌙 暗夜</button>
|
||||||
|
|
||||||
<h1>振幅锁仓策略</h1>
|
<h1>振幅锁仓策略</h1>
|
||||||
<p class="sub">SA2611 (纯碱) | FG2611 (玻璃) | SA2701 (纯碱) | FG2701 (玻璃) | 2026年7月</p>
|
<p class="sub">2026年7月 · 郑商所</p>
|
||||||
<p class="formula">振幅算法:近 5 日均振幅 = 过去 5 个交易日 (最高 − 最低) 的均值,结果四舍五入取整</p>
|
|
||||||
|
|
||||||
<div class="section collapsed" id="sec-sa">
|
<a class="card sa" href="index-SA.html">
|
||||||
<h2 onclick="toggleSection('sec-sa')"><span class="arrow">▼</span> SA2611 纯碱</h2>
|
纯碱 SA
|
||||||
<table>
|
<div class="desc">SA2609 · SA2611 · SA2701</div>
|
||||||
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
</a>
|
||||||
<tr><td>2026/7/1</td><td>周三</td><td>1117</td><td>1118</td><td>1128</td><td>1112</td><td>16</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/2</td><td>周四</td><td>1119</td><td>1134</td><td>1139</td><td>1117</td><td>22</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/3</td><td>周五</td><td>1133</td><td>1132</td><td>1142</td><td>1127</td><td>15</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/6</td><td>周一</td><td>1130</td><td>1128</td><td>1145</td><td>1126</td><td>19</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/7</td><td>周二</td><td>1128</td><td>1094</td><td>1128</td><td>1092</td><td>36</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/8</td><td>周三</td><td>1093</td><td>1105</td><td>1110</td><td>1093</td><td>17</td><td class="amp-cell">22</td></tr>
|
|
||||||
<tr><td>2026/7/9</td><td>周四</td><td>1102</td><td>1103</td><td>1107</td><td>1090</td><td>17</td><td class="amp-cell">22</td></tr>
|
|
||||||
<tr><td>2026/7/10</td><td>周五</td><td>1101</td><td>1113</td><td>1120</td><td>1100</td><td>20</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/13</td><td>周一</td><td>1112</td><td>1089</td><td>1118</td><td>1086</td><td>32</td><td class="amp-cell">22</td></tr>
|
|
||||||
<tr><td>2026/7/14</td><td>周二</td><td>1092</td><td>1092</td><td>1094</td><td>1085</td><td>9</td><td class="amp-cell">24</td></tr>
|
|
||||||
<tr><td>2026/7/15</td><td>周三</td><td>1091</td><td>1077</td><td>1095</td><td>1076</td><td>19</td><td class="amp-cell">19</td></tr>
|
|
||||||
<tr><td>2026/7/16</td><td>周四</td><td>1080</td><td>1057</td><td>1081</td><td>1053</td><td>28</td><td class="amp-cell">19</td></tr>
|
|
||||||
<tr><td>2026/7/17</td><td>周五</td><td>1060</td><td>1036</td><td>1060</td><td>1035</td><td>25</td><td class="amp-cell">22</td></tr>
|
|
||||||
<tr><td>2026/7/20</td><td>周一</td><td>1038</td><td>1041</td><td>1055</td><td>1037</td><td>18</td><td class="amp-cell">23</td></tr>
|
|
||||||
<tr><td>2026/7/21</td><td>周二</td><td>1039</td><td>1042</td><td>1049</td><td>1034</td><td>15</td><td class="amp-cell">20</td></tr>
|
|
||||||
<tr><td>2026/7/22</td><td>周三</td><td>1041</td><td>1041</td><td>1048</td><td>1017</td><td>31</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/23</td><td>周四</td><td>1042</td><td>1037</td><td>1046</td><td>1026</td><td>20</td><td class="amp-cell">23</td></tr>
|
|
||||||
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">22</td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section collapsed" id="sec-fg">
|
<a class="card fg" href="index-FG.html">
|
||||||
<h2 onclick="toggleSection('sec-fg')"><span class="arrow">▼</span> FG2611 玻璃</h2>
|
玻璃 FG
|
||||||
<table>
|
<div class="desc">FG2609 · FG2611 · FG2701</div>
|
||||||
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
</a>
|
||||||
<tr><td>2026/7/1</td><td>周三</td><td>1011</td><td>1001</td><td>1011</td><td>994</td><td>17</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/2</td><td>周四</td><td>1001</td><td>1002</td><td>1008</td><td>994</td><td>14</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/3</td><td>周五</td><td>1002</td><td>1010</td><td>1017</td><td>999</td><td>18</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/6</td><td>周一</td><td>1013</td><td>1003</td><td>1019</td><td>1002</td><td>17</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/7</td><td>周二</td><td>1003</td><td>984</td><td>1003</td><td>983</td><td>20</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/8</td><td>周三</td><td>984</td><td>993</td><td>996</td><td>981</td><td>15</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/9</td><td>周四</td><td>994</td><td>987</td><td>994</td><td>981</td><td>13</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/10</td><td>周五</td><td>986</td><td>996</td><td>1004</td><td>983</td><td>21</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/13</td><td>周一</td><td>996</td><td>980</td><td>1001</td><td>980</td><td>21</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/14</td><td>周二</td><td>982</td><td>983</td><td>986</td><td>974</td><td>12</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/15</td><td>周三</td><td>982</td><td>979</td><td>988</td><td>975</td><td>13</td><td class="amp-cell">16</td></tr>
|
|
||||||
<tr><td>2026/7/16</td><td>周四</td><td>979</td><td>960</td><td>982</td><td>957</td><td>25</td><td class="amp-cell">16</td></tr>
|
|
||||||
<tr><td>2026/7/17</td><td>周五</td><td>962</td><td>932</td><td>962</td><td>931</td><td>31</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/20</td><td>周一</td><td>934</td><td>926</td><td>939</td><td>924</td><td>15</td><td class="amp-cell">20</td></tr>
|
|
||||||
<tr><td>2026/7/21</td><td>周二</td><td>929</td><td>934</td><td>941</td><td>926</td><td>15</td><td class="amp-cell">19</td></tr>
|
|
||||||
<tr><td>2026/7/22</td><td>周三</td><td>936</td><td>939</td><td>945</td><td>929</td><td>16</td><td class="amp-cell">20</td></tr>
|
|
||||||
<tr><td>2026/7/23</td><td>周四</td><td>938</td><td>931</td><td>941</td><td>925</td><td>16</td><td class="amp-cell">20</td></tr>
|
|
||||||
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">19</td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="section collapsed" id="sec-sa2701">
|
|
||||||
<h2 onclick="toggleSection('sec-sa2701')"><span class="arrow">▼</span> SA2701 纯碱</h2>
|
|
||||||
<table>
|
|
||||||
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
|
||||||
<tr><td>2026/7/1</td><td>周三</td><td>1157</td><td>1157</td><td>1164</td><td>1152</td><td>12</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/2</td><td>周四</td><td>1156</td><td>1171</td><td>1176</td><td>1155</td><td>21</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/3</td><td>周五</td><td>1169</td><td>1172</td><td>1180</td><td>1166</td><td>14</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/6</td><td>周一</td><td>1171</td><td>1166</td><td>1182</td><td>1165</td><td>17</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/7</td><td>周二</td><td>1164</td><td>1139</td><td>1167</td><td>1139</td><td>28</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/8</td><td>周三</td><td>1142</td><td>1148</td><td>1151</td><td>1139</td><td>12</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/9</td><td>周四</td><td>1148</td><td>1144</td><td>1149</td><td>1133</td><td>16</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/10</td><td>周五</td><td>1146</td><td>1152</td><td>1161</td><td>1142</td><td>19</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/13</td><td>周一</td><td>1149</td><td>1132</td><td>1158</td><td>1130</td><td>28</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/14</td><td>周二</td><td>1135</td><td>1135</td><td>1137</td><td>1128</td><td>9</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/15</td><td>周三</td><td>1136</td><td>1122</td><td>1138</td><td>1120</td><td>18</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/16</td><td>周四</td><td>1123</td><td>1098</td><td>1125</td><td>1096</td><td>29</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/17</td><td>周五</td><td>1100</td><td>1078</td><td>1100</td><td>1077</td><td>23</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/20</td><td>周一</td><td>1079</td><td>1084</td><td>1098</td><td>1078</td><td>20</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/21</td><td>周二</td><td>1084</td><td>1083</td><td>1090</td><td>1077</td><td>13</td><td class="amp-cell">20</td></tr>
|
|
||||||
<tr><td>2026/7/22</td><td>周三</td><td>1083</td><td>1080</td><td>1087</td><td>1060</td><td>27</td><td class="amp-cell">21</td></tr>
|
|
||||||
<tr><td>2026/7/23</td><td>周四</td><td>1079</td><td>1077</td><td>1085</td><td>1068</td><td>17</td><td class="amp-cell">22</td></tr>
|
|
||||||
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">20</td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section collapsed" id="sec-fg2701">
|
|
||||||
<h2 onclick="toggleSection('sec-fg2701')"><span class="arrow">▼</span> FG2701 玻璃</h2>
|
|
||||||
<table>
|
|
||||||
<tr><th>日期</th><th>星期</th><th>开盘</th><th>收盘</th><th>最高</th><th>最低</th><th>最高最低差价</th><th>振幅</th></tr>
|
|
||||||
<tr><td>2026/7/1</td><td>周三</td><td>1059</td><td>1054</td><td>1062</td><td>1050</td><td>12</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/2</td><td>周四</td><td>1051</td><td>1055</td><td>1061</td><td>1050</td><td>11</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/3</td><td>周五</td><td>1053</td><td>1062</td><td>1070</td><td>1053</td><td>17</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/6</td><td>周一</td><td>1065</td><td>1058</td><td>1071</td><td>1056</td><td>15</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/7</td><td>周二</td><td>1056</td><td>1042</td><td>1058</td><td>1041</td><td>17</td><td class="na">-</td></tr>
|
|
||||||
<tr><td>2026/7/8</td><td>周三</td><td>1043</td><td>1048</td><td>1051</td><td>1036</td><td>15</td><td class="amp-cell">14</td></tr>
|
|
||||||
<tr><td>2026/7/9</td><td>周四</td><td>1048</td><td>1043</td><td>1049</td><td>1037</td><td>12</td><td class="amp-cell">15</td></tr>
|
|
||||||
<tr><td>2026/7/10</td><td>周五</td><td>1041</td><td>1048</td><td>1056</td><td>1039</td><td>17</td><td class="amp-cell">15</td></tr>
|
|
||||||
<tr><td>2026/7/13</td><td>周一</td><td>1049</td><td>1035</td><td>1050</td><td>1034</td><td>16</td><td class="amp-cell">15</td></tr>
|
|
||||||
<tr><td>2026/7/14</td><td>周二</td><td>1035</td><td>1035</td><td>1041</td><td>1031</td><td>10</td><td class="amp-cell">15</td></tr>
|
|
||||||
<tr><td>2026/7/15</td><td>周三</td><td>1035</td><td>1030</td><td>1038</td><td>1028</td><td>10</td><td class="amp-cell">14</td></tr>
|
|
||||||
<tr><td>2026/7/16</td><td>周四</td><td>1031</td><td>1016</td><td>1033</td><td>1014</td><td>19</td><td class="amp-cell">13</td></tr>
|
|
||||||
<tr><td>2026/7/17</td><td>周五</td><td>1017</td><td>989</td><td>1017</td><td>988</td><td>29</td><td class="amp-cell">14</td></tr>
|
|
||||||
<tr><td>2026/7/20</td><td>周一</td><td>989</td><td>985</td><td>996</td><td>983</td><td>13</td><td class="amp-cell">17</td></tr>
|
|
||||||
<tr><td>2026/7/21</td><td>周二</td><td>987</td><td>987</td><td>992</td><td>981</td><td>11</td><td class="amp-cell">16</td></tr>
|
|
||||||
<tr><td>2026/7/22</td><td>周三</td><td>991</td><td>987</td><td>993</td><td>977</td><td>16</td><td class="amp-cell">16</td></tr>
|
|
||||||
<tr><td>2026/7/23</td><td>周四</td><td>989</td><td>979</td><td>990</td><td>974</td><td>16</td><td class="amp-cell">18</td></tr>
|
|
||||||
<tr><td>2026/7/24</td><td>周五</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td>0</td><td class="amp-cell">17</td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="drawer-overlay" id="overlay" onclick="closeDrawer()"></div>
|
|
||||||
<div class="drawer" id="drawer">
|
|
||||||
<button class="close-btn" onclick="closeDrawer()">×</button>
|
|
||||||
<h3 id="drawer-title"></h3>
|
|
||||||
<p class="date-label" id="drawer-date"></p>
|
|
||||||
<table class="calc-table" id="drawer-table"></table>
|
|
||||||
<div class="result" id="drawer-result"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// ── 暗夜模式 ──
|
|
||||||
var themeBtn = document.getElementById('themeToggle');
|
var themeBtn = document.getElementById('themeToggle');
|
||||||
function setTheme(dark) {
|
function setTheme(dark) {
|
||||||
if (dark) {
|
if (dark) {
|
||||||
@@ -196,67 +75,6 @@ function toggleTheme() {
|
|||||||
if (s === 'dark' || (!s && matchMedia('(prefers-color-scheme: dark)').matches)) setTheme(true);
|
if (s === 'dark' || (!s && matchMedia('(prefers-color-scheme: dark)').matches)) setTheme(true);
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// ── 表格折叠 ──
|
|
||||||
function toggleSection(id) {
|
|
||||||
document.getElementById(id).classList.toggle('collapsed');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── 抽屉 ──
|
|
||||||
var activeRow = null;
|
|
||||||
function closeDrawer() {
|
|
||||||
document.getElementById('overlay').classList.remove('show');
|
|
||||||
document.getElementById('drawer').classList.remove('show');
|
|
||||||
if (activeRow) { activeRow.classList.remove('active'); activeRow = null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── 振幅点击 → 抽屉 ──
|
|
||||||
document.querySelectorAll('.amp-cell').forEach(function(cell) {
|
|
||||||
cell.addEventListener('click', function() {
|
|
||||||
var row = cell.parentElement;
|
|
||||||
var tbl = row.closest('table');
|
|
||||||
var rows = tbl.querySelectorAll('tr');
|
|
||||||
var h2 = tbl.closest('.section').querySelector('h2');
|
|
||||||
var product = h2.childNodes[h2.childNodes.length - 1].textContent.trim();
|
|
||||||
|
|
||||||
// 收集所有行的差价
|
|
||||||
var ranges = [];
|
|
||||||
for (var i = 1; i < rows.length; i++) {
|
|
||||||
var cells = rows[i].querySelectorAll('td');
|
|
||||||
ranges.push({
|
|
||||||
date: cells[0].textContent.trim(),
|
|
||||||
wk: cells[1].textContent.trim(),
|
|
||||||
diff: parseInt(cells[6].textContent) || 0
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 找到当前行索引
|
|
||||||
var idx = Array.prototype.indexOf.call(rows, row) - 1;
|
|
||||||
var start = idx - 5;
|
|
||||||
if (start < 0) return;
|
|
||||||
|
|
||||||
var ampVal = cell.textContent.trim();
|
|
||||||
document.getElementById('drawer-title').textContent = product;
|
|
||||||
document.getElementById('drawer-date').textContent = '目标日期: ' + ranges[idx].date + ' ' + ranges[idx].wk + ' 振幅 ' + ampVal;
|
|
||||||
|
|
||||||
var html = '<tr><td>日期</td><td>最高−最低</td></tr>';
|
|
||||||
var sum = 0;
|
|
||||||
for (var j = start; j < idx; j++) {
|
|
||||||
html += '<tr><td>' + ranges[j].date + ' ' + ranges[j].wk + '</td><td>' + ranges[j].diff + '</td></tr>';
|
|
||||||
sum += ranges[j].diff;
|
|
||||||
}
|
|
||||||
document.getElementById('drawer-table').innerHTML = html;
|
|
||||||
document.getElementById('drawer-result').innerHTML = '合计 <b>' + sum + '</b> ÷ 5 = <b>' + (sum / 5).toFixed(1) + '</b><br>四舍五入 → <b>' + Math.round(sum / 5) + '</b>';
|
|
||||||
|
|
||||||
document.getElementById('overlay').classList.add('show');
|
|
||||||
document.getElementById('drawer').classList.add('show');
|
|
||||||
|
|
||||||
// 行高亮
|
|
||||||
if (activeRow) activeRow.classList.remove('active');
|
|
||||||
row.classList.add('active');
|
|
||||||
activeRow = row;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user