# 比特骆驼自动化对冲系统 — 更新说明 > 每次发版 / 合并重要改动后,在本文档顶部追加一条(日期新→旧)。 > 关联审计结论写在同条「审计」小节。 --- ## 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`、脱敏用例更新) ---