Files

32 KiB
Raw Permalink Blame History

比特骆驼自动化对冲系统 — 更新说明

每次发版 / 合并重要改动后,在本文档顶部追加一条(日期新→旧)。
关联审计结论写在同条「审计」小节。


2026-08-11 — 顶栏资金/胜率与期期到期账对齐

变更

  1. 到期内在价值覆盖写回 fills / realized_pnl / settle_index,并补本地账本差额。
  2. 顶栏胜率按修复后净盈亏统计(不再因库内错误 realized 显示 0%)。
  3. LIVE 币安接入 fetch_balances 资金摘要;期期到期账单近零时按内在价值入账。

审计

详情已显示 +115.62,但顶栏胜率 0%、资金仍按旧账/OKX 余额 → 展示盈亏未落库,且币安成交对不上 OKX 资金条。


2026-08-11 — 期期到期盈亏:错误近零成交按内在价值覆盖

变更

到期 close 成交与内在价值偏差过大(如 Put 账单 0.2 vs 内在 42.2)时,详情按内在价值重算腿盈亏;不再只覆盖 fill=0。

审计

G-20260810-01:结算指数 1877.8、Put 内在 42.2 正确,但成交仍用 0.2 → Put 显示 −88。


2026-08-11 — 期期到期结算指数:公开行情回退 + 零成交覆盖

变更

  1. 币安期期到期若库内无 settle_index_px、成交也为 0:用到期时刻 ETHUSDT 1m 收盘近似结算指数(约 1877)。
  2. 详情用内在价值覆盖展示零价到期成交,并重算 Call/Put 盈亏。
  3. scripts/repair_oo_settle_index.py 可写回库(需 DEPLOY_PASS)。

审计

G-20260810-01 更新后仍显示「结算指数 —」:旧记录未落库 settle,且两腿 close=0,仅禁止误推后变成空。


2026-08-11 — 期期到期结算指数修正

变更

  1. 期期 close_oo_fullSIM/OKX/BN)到期写入真实 settle_index_px(快照指数)。
  2. 交易详情反推结算价:虚值 Call fill=0 不再误显示为行权价;优先实值 Put 腿反推。

审计

今天下午约 1875 到期,详情曾把结算指数显示成行权价(如 1920):因未落库 settle,且用 Call 内在价值 0 反推成 strike+0


2026-08-11 — 期期交易记录展示与盈亏汇总

变更

  1. summarize_fills_pnl 计入 option2(Put)盈亏与手续费,期期净盈亏不再漏腿。
  2. 交易记录列表/详情:期期显示「期期·看涨+看跌」、Call/Put 合约与权利金、双腿结算与 Call/Put 盈亏;成交文案不再出现 option2平仓sell
  3. 到期结算信息补充 Put 行权价/内在价值。

审计

截图 G-20260807-01:详情按永期模板只显 Call,初始权利金漏 Put,成交腿标签乱码,净盈亏汇总缺 Put。


2026-08-08 — 策略格式三页文档

变更

新增 docs/策略格式-三页.md:自动化永期 / 期期 / 半自动,统一「入场·出场·风控」三页结构。


2026-08-08 — 交割账单 SoT + 期期开仓账本

变更

  1. 到期/残仓空仓:OKX bills 行权子类型、币安 exerciseRecord 镜像结算价与现金。
  2. 期期 LIVE 开仓:本地账本扣 Call/Put 权利金+手续费(与永期一致)。
  3. 平仓对账:期权 close 为 0 价时用交割净现金覆盖期权腿。

2026-08-08 — 实盘 SoT 续修(closing / 期期 / 资金门)

变更

  1. closing 进开仓拦截;引擎 manage/紧急处理 closingOKX 期期盈利腿收尾顺序对齐 BN。
  2. 紧急/全平检测期期 → close_oo_full;盈利腿按交易所张数+真实均价,验空再落库。
  3. 到期 fill 禁止 intrinsicrecover 识别 oo_put: 防孤儿 Putrepair/abandon 交易所 size。
  4. 币安余额接入资金门;半自动出场前要求期权买一。

审计

docs/审计修改方案-2026-08-08-交易所SoT续.md


2026-08-08 — 实盘以交易所为 SoT(到期只平永续)

变更

  1. 到期:不再卖期权、不再本地 option_expiry_settle 发明现金;交易所自动结算期权,本地只平永续。
  2. 平永续数量:以交易所仓位为准;已确认空仓绝不回退 DB;查仓失败 fail-closed。
  3. 残仓/期期:LIVE 禁止本地内在价值发明结算;到期残仓等交易所空仓再镜像;期期到期不卖腿。
  4. recover promote:期权张数以交易所为准回写。

审计

对齐「实盘一律以交易所数据为准」:去掉到期本地结算与 DB 空仓仍下单等 P0 偏离。


2026-08-08 — 半自动出场锚定行权价 + 左右布局

变更

  1. 顺向出场目标改为 行权价 ± 波动点(非现价±N);出场规则展示「期权目标 / 永续净利锁定」。
  2. 半自动单页两卡片改为左右并排(窄屏仍上下)。

2026-08-08 — 半自动波动点顺向预估盈利

变更

  1. 「波动点」下方按标的顺向 N 点 + 行权价内在价值变化粗估组合盈利(期权腿/永续腿分列)。
  2. 与「净利基数×k」逆向兑现目标分开显示,不再把基数目标误标为顺向净利。

2026-08-08 — 半自动以损定仓预览开仓量

变更

  1. 半自动开启且以损定仓时:按盘口卖一推期权量,再按本单永续:期权配比 ×k 得永续量。
  2. 首页「半自动 · 本单」下方实时显示预估开仓数量(卖一/K/k/预算)。
  3. 预览与开仓共用半自动单位与净利基数,权利金口径强制实际卖一。

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-closedNone/异常拒绝开仓);选约后用选中腿 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/convertSIM)改为 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-venvpull 后二次检测;损坏的 .venv 自动重建。

2026-07-29 — 部署:等待 apt 锁(unattended-upgrades

变更

  1. 一键部署装 Node/系统包前等待 dpkg/apt 锁释放,避免新机撞上自动升级报错退出。

2026-07-29 — 文档:云服务器配置选择说明

变更

  1. docs/开发方案.md 增加 §6.0 云服务器配置选择说明(最低/推荐/余量规格、地域网络、选型速查)。
  2. docs/商业化与授权方案.mdREADME.md 同步交付速查与链接。

2026-07-29 — 第四轮:查仓失败≠空仓;回滚/账本幂等

变更

  1. 平仓查仓 None0 分离:查失败禁止空仓 finalize(防幽灵平仓)。
  2. 永续开仓异常且查仓失败时禁止回滚期权(保留 opening)。
  3. half_open / promote 权利金入账幂等(按 group 已有 open_option 跳过)。
  4. opening 未 stamp 时仍扫任意期权残留;OKX 开仓改用 perp_open_contracts_okxopening 恢复成功后同 tick 继续 manage。

审计

详见 docs/审计说明-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 — 第二轮审计: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 — 开平仓/实盘安全审计修复

变更

  1. Critical:到期双平不再二次入账期权(skip_option_cashpending_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 — 实盘资金读交易所;永续全仓/逐仓

变更

  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/groupssqlite3.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. Manifestorientation 改为 portrait-primary

2026-07-27 — 手机端竖屏锁定

变更

  1. PWAmanifest.webmanifestorientation 改为 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
放弃期权残留 / 模式切换仅本地 未做(非本包;紧急全平/人工核对)

测试

  • pytest52 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 600CORS 改为同源优先。
  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_* 启动(硬开关)

测试

  • pytest46 passed(含 test_symbols、脱敏用例更新)