Files
eth_hedge_sim/docs/更新说明.md
T
dekun 457838ef64 Extend semi-auto with ITM/ATM/OTM, offset, and 1:4 sizing.
Moneyness and perp:option units are plan-only; OTM enforces leverage >=180.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 11:42:57 +08:00

644 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 比特骆驼自动化对冲系统 — 更新说明
> 每次发版 / 合并重要改动后,在本文档顶部追加一条(日期新→旧)。
> 关联审计结论写在同条「审计」小节。
---
## 2026-08-08 — 半自动行权类型与 1:4 配比
### 变更
1. 半自动本单增加行权类型:实值 / 平值 / 虚值;虚值最大偏离可配。
2. 永续:期权名义配比可配,默认 1:4(以损作单位×k / 手动直写)。
3. 虚值杠杆门强制 ≥180,默认 200。
---
## 2026-08-08 — 永期半自动(人工授权单笔)
### 变更
1. 系统设置「节奏」增加半自动开关;期期强制关闭半自动。
2. 首页「半自动 · 本单」:看法方向、波动点数、净利基数、选约门槛;授权/取消。
3. 引擎:未授权 `wait_human`;授权后选约并开仓;出场为到点且净利>0 或净利≥基数×k;平完清授权停机。
4. 中控模式列/详情透出半自动状态与目标。
5. 文档:`docs/半自动说明.md`;审计见 `docs/审计说明-2026-08-08-半自动.md`
### 审计
两轮:Bugbot + Security Review(见审计说明)。
---
## 2026-08-07 — 期期对冲互斥模式
### 变更
1. 系统设置增加对冲模式:永期 / 期期二选一;期期参数(振幅、回看、到期、杠杆、盈亏比)。
2. 期期:K 线高低点匹配虚值 Call+Put;以损预算 1:1 定仓(一位小数+预留);达标只平盈利腿,亏损腿 residual 20%/到期。
3. SIM Matcher + OKX/币安 LiveExecutor 均实现开平;资金门期期不要求永续。
4. 文档:`docs/期期对冲说明.md`、策略说明 §9.1;审计见 `docs/审计说明-2026-08-07-期期对冲.md`
### 审计
两轮:Bugbot + Security Review(见审计说明)。
---
## 2026-07-30 — 中控文档与设置增强
### 变更
1. 完善 `docs/中控Fleet说明.md`;README / 代码结构 / 开发方案增加中控入口与目录说明。
2. 中控设置改为 Tab(登录账户 / 添加策略机 / 策略机列表);改密后隐藏默认账号提示;局域网免登录开关。
3. 监控卡片运行中绿色、详情弹层持仓、更新二次确认、浮盈颜色加粗等(见中控说明 §5)。
---
## 2026-07-30 — 中控 Fleet Control(同仓 / Token 运维)
### 变更
1. 策略机新增 `/api/fleet/*`status/start/pause/update/issue-login)与设置页 Token 保存;免密登录 `/fleet-login` + `/api/auth/fleet-exchange`
2. 同仓新增 `control/` 中控:监控卡片、系统设置、启停/更新/免密登录代理;Token 中控加密存储。
3. 策略机远程更新走 Fleet Token 调本机 `deploy/lib/update.sh`;中控本机一键部署 `scripts/deploy_control.py` + `control/deploy/update.sh`
4. 说明见 `docs/中控Fleet说明.md`
---
## 2026-07-30 — 策略 SoT 加固:资金门 fail-closed / 统一开仓管道
### 变更
1. 资金门 fail-closed`None`/异常拒绝开仓);选约后用选中腿 ask。
2. 等待选约只预览兑 USDC、不落库定仓;落库仅在选约成功后。
3. 自动/手动开仓共用 `open_pipeline.size_and_gate`;兑汇冷却不可 force 绕过。
4. 持仓禁止改出场/名义/以损参数;热切 LIVE 强制 pause + 非默认 AUTH_SECRET。
5. 划转刷新余额缓存;HTTP 备份下载剥离 `.env`
6. 基线:无交易所人工开平、运行中无人工手动平仓。
### 审计
`docs/审计说明-2026-07-30-策略SoT与资金门.md`(三轮)。
---
## 2026-07-30 — 自动兑 USDC:不等待选约,USDC 不够即兑
### 变更
1. 策略空仓循环在选约**之前**先刷新以损定仓名义并检测交易账户 USDC;不够则市价兑换(不再因「无合格期权」跳过)。
2. 兑换失败/不足时错误提示会带上需/有 USDC;成功兑换有 45s 冷却防砸单。
---
## 2026-07-30 — 手动兑换改走交易账户
### 变更
1. `/api/funds/convert`SIM)改为 `account=trading`;LIVE 本就现货交易账户,兑换后清余额缓存。
2. 设置页文案改为「交易账户」兑换。
---
## 2026-07-30 — 持仓锁定出场目标 / 暂停以损定仓重算
### 变更
1. 开仓成交后将出场目标写入 `groups`/`positions.exit_target_usdt`,盯盘优先用锁定值。
2. 持仓期间计划页不再用盘口实时以损定仓覆盖名义 / k / 目标;平仓后再自动计算。
3. `apply_risk_sizing_to_ledger` 在有活跃仓时拒绝改写。
---
## 2026-07-30 — OKX 交易账户自动兑 USDC(开仓前)
### 变更
1.**OKX**(SIM + LIVE):开仓前若交易账户 USDC **不够**当前期权开仓所需,则在交易账户内市价 `USDT→USDC`
2. 目标持仓 = 期权所需 × **2**;已够开仓则不兑换;预留永续保证金,避免兑光 USDT。
3. 不走资金账户、不做 funding↔trading 划转;币安不生效。
### 审计
- 钩子:以损定仓写名义之后、资金门之前(自动 + 手动开一组)。
- SIM `convert(account=trading)`LIVE 沿用现货 `USDC-USDT` cash 市价单。
---
## 2026-07-29 — 以损定仓:预览两位小数 / 比例与出场可配 / 计划页标识
### 变更
1. 预览「预算」「估亏」统一保留两位小数。
2. 以损定仓可设永续/期权比例与出场基数(k=1);改出场后按比例联动名义。
3. 对冲计划选约条件显示「以损定仓」及比例。
---
## 2026-07-29 — 以损定仓(智能调仓)
### 变更
1. 设置页仓位模式二选一:**手动** / **以损定仓**;互斥手填名义与出场。
2. 以损定仓:亏损幅度(交易账户总资金或单独本金)或亏损值;每次开仓前按 ATM 卖一+指数粗估手续费反推 `k`(一位小数向下),写出永续 `1k` / 期权 `2k` / 出场 `15k`
3. 估算最大亏损 = 权利金(`ask×2k`) + 手续费(`指数×fee_rate×3×k`),保证 ≤ 预算。
### 审计
见同日推送前两轮自审(公式边界、开仓钩子、设置互斥、回归测试)。
---
## 2026-07-29 — 部署:半截 .venv 必须重建(缺 activate
### 变更
1. 判定 venv 可用改为同时检查 `bin/activate` + `bin/python3`(仅有目录或仅有 python 仍会删掉重建)。
---
## 2026-07-29 — 部署:自动安装 python3-venvensurepip
### 变更
1. Python 就绪判定改为检测 `ensurepip`(避免仅有 python3 却误报 OK)。
2. 一键部署自动安装 `python3-venv` / `python3.X-venv`pull 后二次检测;损坏的 `.venv` 自动重建。
---
## 2026-07-29 — 部署:等待 apt 锁(unattended-upgrades
### 变更
1. 一键部署装 Node/系统包前等待 `dpkg`/`apt` 锁释放,避免新机撞上自动升级报错退出。
---
## 2026-07-29 — 文档:云服务器配置选择说明
### 变更
1. [`docs/开发方案.md`](./开发方案.md) 增加 **§6.0 云服务器配置选择说明**(最低/推荐/余量规格、地域网络、选型速查)。
2. [`docs/商业化与授权方案.md`](./商业化与授权方案.md)、[`README.md`](../README.md) 同步交付速查与链接。
---
## 2026-07-29 — 第四轮:查仓失败≠空仓;回滚/账本幂等
### 变更
1. 平仓查仓 `None``0` 分离:查失败禁止空仓 finalize(防幽灵平仓)。
2. 永续开仓异常且查仓失败时禁止回滚期权(保留 opening)。
3. `half_open` / promote 权利金入账幂等(按 group 已有 `open_option` 跳过)。
4. `opening` 未 stamp 时仍扫任意期权残留;OKX 开仓改用 `perp_open_contracts_okx`opening 恢复成功后同 tick 继续 manage。
### 审计
详见 [`docs/审计说明-2026-07-29-开平仓与实盘安全.md`](./审计说明-2026-07-29-开平仓与实盘安全.md)。
---
## 2026-07-29 — 第三轮:opening 恢复 / 期权对账 / 平仓兜底
### 变更
1. 开仓意图 `stamp_opening_intent`:崩溃后仍带 `option_inst_id` 可恢复。
2. `recover_opening`:空仓清槽 / 仅期权→half_open+repair / 双边→提升 open;启动与 tick / 紧急全平触发。
3. 开仓前对账增加期权仓(含 flat 时任意期权残留)。
4. 平仓:期权已空跳过再卖;有 close fill 不二次入账;pending 且永续已空不下单。
5. 永续开仓异常先查仓再决定是否回滚期权;币安错误带 `orderId=`;币安保证金模式落库并 `set_margin_type`
### 审计
详见 [`docs/审计说明-2026-07-29-开平仓与实盘安全.md`](./审计说明-2026-07-29-开平仓与实盘安全.md)。
---
## 2026-07-29 — 第二轮审计:abandon residual / 部分成交 / residual 账本
### 变更
1. OKX 弃期权:双腿已卖掉期权并落 `option_closed_perp_pending` 时,续平永续,不再误记 residual(防期权双计)。
2. OKX 等成交超时仅接受 `filled`,不再把部分成交当全成。
3. LIVE residual 到期结算 `allow_negative`,避免本地拒记卡 pending。
4. 币安开期权保留 opening 仅匹配 `orderId=`;紧急全平对 stuck `opening` 明确告警。
### 审计
详见 [`docs/审计说明-2026-07-29-开平仓与实盘安全.md`](./审计说明-2026-07-29-开平仓与实盘安全.md)。
---
## 2026-07-29 — 开平仓/实盘安全审计修复
### 变更
1. **Critical**:到期双平不再二次入账期权(`skip_option_cash``pending_perp_only`)。
2. **Critical**:弃期权平永续后本地账本强制 `allow_negative`,避免交易所已平、本地卡仓。
3. 开仓写入 `groups.perp_margin_mode`;平仓用开仓时模式;持仓中禁止改保证金模式。
4. 手动开/平仓走策略引擎锁,避免与自动 tick 竞态。
5. OKX 等成交加长并超时有成交则回填;含 `ordId` 的未确认失败保留 `opening`
6. 修复 positions-history 盈亏查询未带时间过滤;LIVE 拒绝默认 `AUTH_SECRET`;币安可开不再误调 OKX 资金。
### 审计
详见 [`docs/审计说明-2026-07-29-开平仓与实盘安全.md`](./审计说明-2026-07-29-开平仓与实盘安全.md)。
---
## 2026-07-29 — 实盘资金读交易所;永续全仓/逐仓
### 变更
1. 选择 LIVE 时立即隐藏「模拟资金」(跟表单模式,不必等保存后的 runtime)。
2. LIVE 资金条总资金/资金账户/交易账户读 OKX;总资金按 USDT 等值(USDC×汇率);划转/兑换后立即刷新顶栏。
3. 策略仓位增加「永续保证金模式」:全仓(默认)/ 逐仓;仅永续;OKX 期权仍固定 cash。
---
## 2026-07-29 — 顶栏名称/导航去背景
### 变更
1. 标题区与顶部导航去掉底色/描边块,改为透明文字导航;选中项仅用强调色。
---
## 2026-07-29 — 期权标题去掉指数(指数只在永续行情)
### 变更
1. 期权 ATM / 持仓期权标题不再附带指数;指数仍在「永续行情」卡片显示。
---
## 2026-07-29 — 永续市价;期权标题带指数;ETH 大写
### 变更
1. 选约条件数量单位改为 `ETH`
2. 永续行情增加「市价」(标记价,缺则买卖一中间价)。
3. 期权标题在 `@ 行权价` 后显示当前指数。
---
## 2026-07-29 — 策略卡:浮盈合并;选约显示仓位数量
### 变更
1. 策略卡「永续浮盈 / 期权浮盈」合并为一行「永续/期权浮盈」。
2. 选约条件增加 `永续Neth/期权Meth`(读 `perp_qty_eth` / `option_qty_eth`)。
---
## 2026-07-29 — 桌面端:备份规则说明、交易记录表格翻页
### 变更
1. 备份恢复:说明文字收入「规则说明」;服务器备份列表一行一项,桌面最多显示约 5 行(可滚动)。
2. 运行模式:企业微信说明收入「规则说明」。
3. 交易记录(仅电脑端):表格列(序号/组名/方向/持仓状态/开平时间/时长/盈亏/平仓方式)+ 每页 10 行翻页;手机端列表不变。
4. 手机端继续隐藏顶部资金条。
---
## 2026-07-24 — 策略设置:固定方向开关
### 变更
1. 选约增加 **固定方向**(默认关):开则固定永续多→买 Put,或永续空→买 Call。
2. 固定方向开启时,期权只选 **实值或平值**(Call:K≤标的;Put:K≥标的),不买虚值;ATM 偏差限制不适用。
3. 关闭时仍按现有 ATM / 卖一比价规则开仓。
---
## 2026-07-29 — 企微不标模拟盘;已完成组数按已平仓统计
### 变更
1. 企业微信:SIM 不再显示「模拟盘」;LIVE 显示「实盘·OKX/币安」。
2. 「已完成 N 组」改为按 `groups.status=closed` 计数,与实际平仓组一致(修正漂移显示 6 实为 5)。
---
## 2026-07-29 — 规则说明展示策略数值;导航加大;不可开才通知
### 变更
1. 能开不通知;不能开才企业微信提醒一次(恢复后再次不足才再推)。
2. 导航字号加大;规则说明正文字号缩小。
3. 规则说明按当前策略设置展示开仓/平仓/节奏参数。
---
## 2026-07-29 — 可开判定只看交易账户;不足只通知一次;去重标题
### 变更
1. 权益/杠杆可开判定仅看**交易账户** USDT/USDC(不再回退资金账户)。
2. 资金不足企业微信:**不足期间只推一次**,恢复后再次不足才再推;计划页轮询不再触发推送。
3. 去掉计划页「自动对冲计划」标题(与导航重复)。
---
## 2026-07-29 — 资金条:USDT/USDC 两行 + 居中对齐
### 变更
1. 资金账户 / 交易账户改为 USDT、USDC 上下两行显示。
2. 资金条各列文字居中;字号对齐 crypto_monitor 统计条(标签约 0.72rem,数值约 0.95rem)。
---
## 2026-07-29 — 资金口径对齐 OKX:仅资金↔交易
### 变更
1. 去掉「期权资金 / 期权交易」账户;顶栏只显示资金账户、交易账户(各含 USDT+USDC)。
2. 划转仅支持资金账户 ↔ 交易账户;兑换在资金账户内 USDT↔USDC。
3. 资金页说明收入折叠「规则说明」;划转控件单行排列;设置卡片与资金条同宽。
---
## 2026-07-29 — 权益杠杆可开判定 + 资金不足微信推送
### 变更
1. 计划页「权益 / 杠杆」改为 **永续Nx 可开 / 期权可开**(绿)或 **不可开**(红);按保证金与权利金估算对比可用资金。
2. 资金不足时企业微信推送(10 分钟去重);策略开仓前拦截并进入 `wait_funds`
3. 「规则说明」移到启动策略按钮上方;顶栏资金数字加大显示。
---
## 2026-07-29 — 顶栏对齐 crypto_monitor:标题在上、资金卡同宽
### 变更
1. 「比特骆驼自动化对冲系统」移到导航上方(参照 OKX 实例页:标题 → top-nav → 资金卡)。
2. 页面统一 `max-width: min(1440px, 94vw)`,资金卡片与下方内容同宽对齐。
3. 资金条改为圆角边框卡片样式(`.funds-bar-inner`)。
---
## 2026-07-29 — 资金条与内容区同宽;规则说明折叠
### 变更
1. 资金横条内容区与下方页面同宽(带鱼屏不再拉满全屏)。
2. 原计划页说明文案收入资金条下方「规则说明」折叠。
---
## 2026-07-29 — 资金条 + USDT/USDC 兑换划转(SIM/LIVE
### 变更
1. 顶栏增加资金统计条(交易所/交易日/胜率/总资金/资金·交易·期权账户/实时盈亏),**不标注模拟盘**。
2. SIM:多账户钱包(USDT 资金/交易 + USDC 期权资金/交易);设置页可兑换、划转。
3. LIVE(OKX):拉交易所余额;现货市价兑换 USDC-USDT;资金↔交易划转(对齐 crypto_monitor)。
4. USDC 计入总资金按 1:1。
---
## 2026-07-29 — 统计拆分手续费;LIVE 不展示/不计滑点
### 变更
1. 统计页:`永续手续费` / `期权手续费` / `手续费合计`SIM 另列 `滑点合计`
2. 交易明细同步拆分手续费;SIM 显示滑点,LIVE 不显示。
3. LIVE 成交滑点字段强制为 0,不把模拟滑点计入实盘盈亏。
---
## 2026-07-29 — 到期结算展示:指数 / 行权价 / 内在价值
### 变更
1. 到期平仓期权价本就是 **内在价值**`max(指数−K,0)` / Put 对称),不是盘口;详情页补 **结算指数、行权价、内在价值**
2. 成交行标注「期权到期结算」;组表落库 `settle_index_px`
3. 说明:永续到期时仍按市价平(与策略文档一致)。
---
## 2026-07-29 — 持仓卡显示开仓时间 / 持仓时长
### 变更
1. 监控页永续、期权持仓卡增加 **开仓时间**(上海时区)与 **持仓时长**(每秒刷新)。
2. 接口 `position.open_at_ms` 取自当前组成交组开仓时刻。
---
## 2026-07-27 — 残留期权一行一条
### 变更
1. 监控页「残留期权(待到期)」由用 `·` 拼成一行,改为**每条期权单独一行**(手机端卡片式)。
---
## 2026-07-27 — 交易记录详情改为弹窗
### 变更
1. 点击成交组弹出对话框查看开平仓时间、持仓周期、成交明细与盈亏。
2. 支持点遮罩 / 关闭按钮 / Esc 关闭;手机端底部抽屉式布局。
---
## 2026-07-27 — 修复交易记录 500(记录未丢)
### 变更
1. `/api/trades/groups``sqlite3.Row``.get` 抛错导致「Internal Server Error / 暂无成交组」假象。
2. 持仓周期计算改为兼容 Row;库内成交组仍在。
---
## 2026-07-27 — 交易记录:开仓/平仓时间与持仓周期
### 变更
1. 交易记录列表与明细展示:**开仓时间、平仓时间、持仓周期**(上海时区)。
2. **持仓周期按目标平仓计时**:净盈利达标(含默认 15U)出场为准。
3. **只平永续 / 期权残留**:平仓时间与周期以**永续平仓**时刻为准,不含期权拖到到期。
4. 只平永续时写入 `close_at_ms`;残留期权到期结算不再覆盖该策略平仓时间。
---
## 2026-07-27 — 安卓竖屏:全屏后系统锁定
### 变更
1. 说明:安卓 **Chrome 普通标签页** 不允许网页直接锁方向,必须先全屏再 `orientation.lock`(你以前能锁的,多半是 App/WebView/已装桌面,或点过全屏)。
2. 安卓首次点击 / 「点击锁定竖屏」:进入全屏并系统锁竖屏。
3. 已「添加到主屏幕」的应用走 manifest `orientation: portrait`,一般无需全屏。
4. 补充 X5/UC 竖屏 meta;锁失败时仍强制竖屏布局。
---
## 2026-07-27 — 手机端真·竖屏(禁横屏布局)
### 变更
1. 去掉「请竖屏使用」遮罩:那只是提示,不是锁定。
2. **能锁系统方向时**(常见:安卓安装到主屏幕的 PWA)调用 `orientation.lock`
3. **锁不住时**(多数浏览器页 / iOS):设备横放也不进入横屏 UI,界面仍按竖屏坐标系渲染。
4. Manifest`orientation` 改为 `portrait-primary`
---
## 2026-07-27 — 手机端竖屏锁定
### 变更
1. **PWA**`manifest.webmanifest``orientation` 改为 `portrait`(安装到主屏幕后系统侧竖屏)。
2. **浏览器**:手机横屏时全屏提示「请竖屏使用」;支持时尝试 `screen.orientation.lock`
---
## 2026-07-27 — 手机端期权卡 / 交易记录排版
### 变更
1. **期权持仓卡**:合约名与到期倒计时改为上下排,避免长 `inst_id` 被挤成竖排字。
2. **交易记录**:列表项上下堆叠(组号/状态一行,净盈亏/平仓原因一行),明细成交行窄屏同样竖排。
---
## 2026-07-27 — 手机端监控布局
### 变更
1. **底部导航**:窄屏隐藏顶栏菜单,改用底栏「监控 / 记录 / 统计 / 设置」(含安全区)。
2. **监控首页卡**:一屏看状态(启动/暂停/已停)、盘口、阶段、净盈利 vs 目标、到期倒计时、最近错误。
3. **操作区**:启动 / 暂停 / 紧急全平触摸友好;紧急全平通栏;桌面布局不变。
---
## 2026-07-26 — 企业微信通知 + 暂停盯目标
### 变更
1. **企业微信**:独立模块 `backend/app/notify/wecom.py`;系统设置「运行模式」可配 Webhook / 开关 / 测试推送。
2. **推送事件**:开仓、平仓、策略启动、暂停、故障(同类 5 分钟去重)。Markdown + 标识 `OPEN/CLOSE/START/PAUSE/FAULT`
3. **标题盘口**:模拟盘 →「模拟盘」;实盘 →「实盘·OKX」或「实盘·币安」。
4. **暂停策略**:仍执行目标平仓 + 到期平仓,**不新开仓**(策略说明已同步)。
---
## 2026-07-26 — 一键部署环境检测 / 卸载删目录
### 变更
1. **一键部署 / 更新**:检测 Python3+venv、Node/npm、PM2**已有则跳过**,缺失才 apt/npm 安装。
2. **一键卸载**:备份 `.env` 与数据库后,**直接删除** `/opt/eth_hedge_sim`(并清理历史 `.removed` / `.old` 残留);不卸载系统级 Python/Node/PM2。
---
## 2026-07-26 — 自动备份 / 下载 / 上传恢复
### 变更
1. **自动备份**:默认开启,间隔 24h,保留 14 份;落盘目录优先 `/root/eth_hedge_backups`(可用 `BACKUP_DIR` 覆盖)。内容含 `hedge.db` + `.env`
2. **系统设置 → 备份恢复**:立即备份、服务器列表下载、上传 zip 恢复(确认串 `RESTORE`)。
3. **新服务器迁移**:新机部署后上传旧机备份即可覆盖库与环境变量;恢复后进程退出由 PM2 拉起。有持仓时禁止恢复。
### 测试
- `pytest`:含 `test_backup` 等全量
---
## 2026-07-26 — LIVE 达标含估平仓费;手动/紧急全平进休息
### 变更
1. **LIVE 达标口径**:盯盘净利继续扣预估平仓手续费(与策略说明 / SIM 一致);实盘索引改为「含估平仓费」。
2. **组间休息**:手动全平成功后调用 `enter_rest_after_close()`;紧急全平成功路径同样进入休息(与自动全平共用)。
### 测试
- `pytest` 全量
---
## 2026-07-26 — LIVE 对账 / 手动开仓 UI / Token 自动换发
### 变更
1. **开仓幂等与对账**`opening` 占槽;LIVE 开仓前核对交易所永续(双侧);启动写 mismatch 日志。
2. **平仓张数**:OKX/币安平永续优先读交易所持仓,失败才回退本地账本。
3. **杠杆**LIVE 开永续前 `set_leverage`(失败仅告警)。
4. **自动运行禁手动开仓**`running=1``/api/sim/open-group` 返回 409;计划页按钮禁用。
5. **手动开仓显示**:策略设置「节奏」→「显示手动开仓」,**默认不显示**;关闭时 API 亦拒绝手动开/手动全平。紧急全平始终可用且为**红色**。
6. **启动态**:策略运行中主按钮文案为「启动中」,绿色样式。
7. **Token 自动换发**HMAC Bearer(非 Flask)。新增 `POST /api/auth/refresh`;前端登录后定时/切回前台/临近过期静默换发。默认口令未改。
### 审计(本包改后)
| 项 | 状态 |
|----|------|
| 交易所↔本地对账 / 开仓幂等 | **已修** |
| 平仓张数读交易所 | **已修** |
| set_leverage | **已修**(失败告警) |
| 自动运行仍可手动开仓 | **已修**API + UI |
| 手动开/全平默认露出 | **已修**(默认隐藏 + 设置开关) |
| 紧急全平样式 / 启动中文案 | **已修** |
| Token 长期不轮换 | **已修**refresh + 前端自动换发) |
| 对账只查单侧漏 short | **已修**flat 时 long+short |
| 放弃期权残留 / 模式切换仅本地 | **未做**(非本包;紧急全平/人工核对) |
### 测试
- `pytest`52 passed
---
## 2026-07-26 — 审计修复包(安全 / 下单 / 平仓)
### 变更
1. **LIVE 永续合约号**:开平仓统一用 `load_runtime_settings()` / 组内 `perp_inst_id`,修复 UI 切币安后仍用 env `ETH-USDT-SWAP` 的问题。
2. **到期平仓**:期权先走交易所真实平仓(失败且仓位已空才本地结算),并在永续失败前写入 `option_closed_perp_pending`
3. **成交完整性**:OKX/币安仅接受完全成交;账本数量按交易所 `accFillSz`/`executedQty` 回写。
4. **`ctVal`**:查不到合约面值时直接失败,禁止静默默认 `0.01`
5. **放弃期权路径**:优先交易所卖期权;仅深虚且卖不出时才残留归档。
6. **LIVE 重启**:启动时若为 LIVE,自动暂停策略,须人工再点启动。
7. **安全**:登录限流;切 LIVE 须服务端校验确认串 `LIVE`;生产关闭 `/docs`;改密后抬升 token 版本作废旧票;`.env` 写入后尽量 `chmod 600`CORS 改为同源优先。
8. **出场**:LIVE 净利加入保守平仓手续费缓冲,减少「刚达标但扣费后不够」的提前出场。
### 审计(本包改后复审)
| 项 | 状态 |
|----|------|
| 永续符号 env/DB 不一致 | **已修**`symbols.resolve_perp_inst_id` + 开平仓全路径) |
| 到期只本地结算期权 | **已修**(先交易所卖;失败才本地结算) |
| 到期永续失败无 pending | **已修**(统一 `_mark_option_closed_perp_pending` |
| partially_filled 当完成 | **已修**OKX 仅 `filled`;币安仅 `FILLED` |
| 放弃路径不卖期权 | **已缓解**(先 `close_group` 双腿;失败且深虚才残留) |
| 开仓崩溃双开 | **部分**LIVE 启动强制 `running=0`;仍缺交易所对账 |
| ctVal 静默默认 | **已修**(查不到直接报错) |
| LIVE 出场不计平仓费 | **已修**(保守 `est_close_fees` |
| 登录无限流 / LIVE 可 API 绕过确认 | **已修**(限流 + `confirm_live_phrase=LIVE` |
| `/docs` 公开 / CORS `*` / mask 泄露后缀 | **已修** |
| 改密后旧 token | **已修**`AUTH_TOKEN_VERSION` |
| 默认口令 / 公网 TLS | **未改默认口令**(部署须改 `.env`);TLS 仍靠反代 |
| 杠杆 set_leverage | **未做** |
| 平仓张数读交易所持仓 | **未做** |
### 残留风险(下次优先)
1. 启动时交易所↔本地仓位对账与开仓幂等键
2. 平仓前查询交易所实际持仓张数
3. 开仓前 `set_leverage`
4. 可选:拒绝默认 `AUTH_*` 启动(硬开关)
### 测试
- `pytest`46 passed(含 `test_symbols`、脱敏用例更新)
---