# 比特骆驼自动化对冲系统 — 开发方案 > **产品名**:比特骆驼自动化对冲系统 > **工程名 / 目录**:`eth_hedge_sim` > 独立项目,与现网 `crypto_monitor` / `zk.hyf2.cc` **无部署、无进程、无密钥共用关系**。 > 可参考现有仓库的实现思路或复制片段到本仓库,但 **禁止修改** `crypto_monitor` 内任何文件。 > Git 仓库由负责人自行创建;本目录为本地工程骨架与文档。 --- ## 1. 项目定位 | 项 | 约定 | |----|------| | 产品名 | **比特骆驼自动化对冲系统** | | 工程名 / 目录名 | `eth_hedge_sim` | | 部署操作系统 | **Ubuntu 22.04** LTS | | 云服务器 | **单独一台 Ubuntu 22.04**;规格选型见 [§6.0 云服务器配置选择](#60-云服务器配置选择说明) | | 部署 | PM2 | | 行情 | OKX **实盘只读** API(REST + WebSocket) | | 成交(默认) | **本地模拟撮合 + 本地虚拟资金**(非 OKX 模拟盘) | | 后期 | 支持切换 **实盘下单**(显式开关 + 二次确认) | | 中控 | 同仓 `control/`,本地局域网运维面板(多机监控/启停/更新);见 [中控 Fleet 说明](./中控Fleet说明.md) | ### 1.1 硬边界 - 模拟阶段:**零交易类 API**(不下单、不撤单、不改单)。 - 永续:全部 **市价**(不做限价)。 - 期权:只吃 **买一 / 卖一**。 - 仓位固定:永续 **1 ETH**,期权 **2 ETH** 名义(始终 2 倍,与权利金金额无关)。 - 卖一比对 **仅用于选方向**;平仓用买一,并检查买一流动性。 --- ## 2. 业务规则 ### 2.1 时间与次数 - 期权合约:按 **剩余时长下限**(可配)筛选到期;行权价默认 **ATM**(同到期、最接近指数/标记的同一行权价 Call+Put)。 - **开仓时间窗已取消**(全天可尝试开仓,仍受选约条件约束)。 - **周六 / 周日跳过开仓**(上海时区,设置项 `skip_weekends`,默认开启):禁止新开仓;**已有持仓仍盯盘平仓**。 - **不做横盘识别**:波动过滤难以精准,避免假信号;用周末跳过等确定性规则代替。 - 同时最多 **1 组**仓;一轮全平结束后 **休息**(可配 `rest_seconds`,默认 300 秒)再开下一组。 ### 2.2 方向(Call 卖一 vs Put 卖一;期权只买入、永不为卖方) | 条件 | 期权(名义 2 ETH) | 永续(1 ETH) | |------|-------------------|---------------| | Call 卖一 > Put 卖一 | **买入 Call**(吃卖一) | **市价做空** | | Call 卖一 < Put 卖一 | **买入 Put**(吃卖一) | **市价做多** | | 相等 | 不开仓,等待 | — | ### 2.3 平仓(任一触发 → 该组全平) 1. **净盈利达标**(设置可选):固定 USDT,或初始权利金 × 倍数。 2. **到期强制全平**:到达期权到期时刻(OKX 惯例 UTC 08:00 = 上海 16:00)→ 整组卖出;绕过买一流动性闸门(与紧急平仓同类)。策略暂停时仍执行。 波动小、拖到到期亏损权利金,按预算内成本接受。 平仓执行: - 永续:本地市价平仓。 - 期权:多头平仓吃买一;买一深度需覆盖名义(到期/紧急可绕过偏差与深度校验)。 ### 2.4 组(Group)标识 每一轮开→平为一组,稳定 ID 例如:`G-YYYYMMDD-序号`(`G-20260724-01`)。 前端、交易记录、统计全部按组聚合。 --- ## 3. 本地撮合与费用 ### 3.1 手续费与滑点 - 永续、期权 **均收取手续费**,费率可配置,默认按 OKX taker 档位。 - **滑点 = 1 倍手续费**(费率 `f` 时,滑点幅度按 `f` 计入成交价;手续费另扣)。 ### 3.2 永续(仅市价) 本地市价定义(无真实交易所市价单时): - 开多 / 平空:基准 **卖一**,成交价 = 基准 × `(1 + f)`,再扣手续费。 - 开空 / 平多:基准 **买一**,成交价 = 基准 × `(1 - f)`,再扣手续费。 - UI 与引擎均不提供限价单。 ### 3.3 期权(只吃买卖一) - 买入:吃 **卖一**,成交价 = 卖一 × `(1 + f)`,再扣费。 - 卖出:吃 **买一**,成交价 = 买一 × `(1 - f)`,再扣费。 - 开仓成交后锁定该组 **初始权利金总额**(按成交价 × 2 ETH 名义)。 ### 3.4 本地账本 虚拟权益、可用、占用、持仓、成交、滑点、手续费、按组盈亏;持久化 SQLite(或等价本地 DB)。 **不是** OKX 模拟盘余额。 --- ## 4. 系统架构 ``` OKX 实盘只读行情 (WS/REST) ↓ market 行情网关(本地缓存/可选落盘) ↓ strategy 策略状态机(时间窗 / 选向 / 开平 / 3 次 / 组 ID) ↓ executor ├─ SIM(默认)→ LocalMatcher + Ledger └─ LIVE(后期)→ OkxTradeAdapter ↓ API + WebSocket 推送 ↓ Frontend(OKX 风格四页) ``` ### 4.1 与现网隔离 | | crypto_monitor(现网) | eth_hedge_sim(本项目) | |--|----------------------|------------------------| | 代码仓 | 独立 | 独立(负责人自建 remote) | | 服务器目录 | 如 `/opt/crypto_monitor` | 如 `/opt/eth_hedge_sim`(另定) | | PM2 进程名 | 现有一套 | **新名字**,如 `eth-hedge-api` / `eth-hedge-web` | | 域名/端口 | 现网 | 独立端口或独立域名 | | 密钥 | 现网 `.env` | 本项目独立 `.env`(先只读行情 Key) | 允许:从现网 **复制** 盘口解析、OKX WS 订阅、流动性检查等代码到本仓库后改。 禁止:在现网仓库里改文件、共用 PM2 restart 脚本、共用生产 Key(除非只读 Key 故意共用且你知情)。 --- ## 5. 前端 视觉:复刻 OKX 交易台观感(深色、盘口、持仓、紧凑数字)。 ### 导航(4 项) 1. **自动对冲计划** 模式 SIM/LIVE、时间窗状态、当前组 ID、方向、1+2 仓位、初始权利金、永续浮盈、距触发差值、30 点进度、永续/期权盘口、启动暂停、紧急全平(模拟)。 2. **交易记录** 按组列表与组内成交明细;筛选日期、平仓原因、盈亏。 3. **统计** 组数、胜率、总盈亏、总手续费、总滑点、平仓原因分布、按组权益曲线。 4. **系统设置** 虚拟资金、费率 `f`(滑点自动 1×f)、轮次与时间、30 点定义、选约规则、OKX Key、SIM/LIVE 开关(LIVE 二次确认)。 每组必须有明确标识(组 ID + 状态标签:持仓中 / 已平 / 流动性等待等)。 --- ## 6. 部署(Ubuntu 22.04 + PM2) ### 6.0 云服务器配置选择说明 本系统为 **轻量常驻进程**(行情 WebSocket + 策略 tick + FastAPI + SQLite),对 CPU/内存要求不高,但对 **网络延迟与稳定性** 要求高(连交易所 API)。 #### 推荐规格(单机专跑本系统) | 场景 | vCPU | 内存 | 系统盘 | 带宽 | 说明 | |------|------|------|--------|------|------| | **最低可用(SIM 试跑)** | 1 | 1 GB | 20 GB SSD | ≥3 Mbps | 可装 Ubuntu + 本服务;偏紧,构建前端时可能吃紧 | | **推荐(SIM / 小仓 LIVE)** | **2** | **2 GB** | **40 GB SSD** | **≥5 Mbps** | 日常够用;前端 `npm build`、依赖安装更稳 | | **余量(LIVE 长期 / 同机反代)** | 2~4 | 4 GB | 40~80 GB SSD | ≥5 Mbps | 同机跑 nginx、日志、备份更从容 | | **不建议** | 共享超售极低配、无稳定公网、国内机访问境外交易所极慢 | — | — | — | 行情断连、下单超时风险高 | #### 地域与网络(比「堆配置」更重要) | 项 | 建议 | |----|------| | **机房地域** | 优先选 **香港 / 新加坡 / 东京** 等对 OKX、币安延迟低的区域;大陆机房常需稳定出网或代理,不适合作为默认 LIVE 节点 | | **公网** | 要有 **固定公网 IP**(或稳定入口);安全组放行 **5155**(或仅反代 443) | | **延迟** | 部署后用本机测交易所 REST/WS;持续高延迟或频繁断线应换区,而不是盲目加 CPU | | **隔离** | **单独一台**跑本系统;勿与现网 `crypto_monitor` 混用同一套密钥/同一 PM2 `restart all` | #### 软件与其它选型 | 项 | 约定 | |----|------| | OS | **Ubuntu 22.04 LTS**(与一键脚本一致) | | 磁盘 | SSD;日志与 SQLite 在本机,无需独立数据盘(仓位不大) | | 架构 | **x86_64**(常规云主机);ARM 需自行验证 Node/Python 构建 | | 面板 | 可选;一键部署只依赖 SSH + apt,不依赖宝塔等面板 | | 反代 | 公网建议 **Nginx/Caddy + HTTPS**,后端仍监听本机 `5155` | #### 选型速查 - **只想先 SIM 看盘跑策略**:香港/新加坡 **2C2G** 即可。 - **要 LIVE 真下单**:同样 **2C2G 起**,重点换到 **低延迟机房** 并配齐非默认 `AUTH_SECRET` + 交易密钥。 - **同机还要跑其它重服务**:升到 **4G 内存**,或把本系统拆到独立机。 ### 6.1 建议目录 ```text /opt/eth_hedge_sim # git clone 目标 .env # 仅本机/本项目,不进 git deploy/ ecosystem.config.cjs # PM2 配置 pull_and_restart.sh # 仅重启本项目进程 ``` ### 6.2 PM2 进程(示例名,可改) | 进程名 | 作用 | |--------|------| | `eth-hedge-api` | 行情网关 + 策略 + 本地撮合 + HTTP/WS API | | `eth-hedge-web` | 前端静态或 Node 服务(若前后端合一可合并为一个进程) | 原则:**不要** `pm2 restart all` 误伤现网;脚本里写死本项目进程名。 ### 6.3 发布流程(负责人自建仓库后) ```bash cd /opt/eth_hedge_sim git pull # 安装依赖 / 构建前端(按实际栈) pm2 startOrReload deploy/ecosystem.config.cjs --update-env pm2 save ``` ### 6.4 环境变量(示例) ```bash MODE=SIM OKX_API_KEY=... # 模拟阶段只需能拉行情的权限 OKX_API_SECRET=... OKX_API_PASSPHRASE=... FEE_RATE=0.0005 # 示例;滑点 = 1 × FEE_RATE INITIAL_EQUITY=10000 TZ=Asia/Shanghai ``` --- ## 7. 分期实施 | 阶段 | 内容 | 完成标准 | |------|------|----------| | P0 | 仓库骨架、依赖、OKX 只读行情(永续 + 次日期权盘口) | 能稳定收到真盘口 | | P1 | 本地账本 + 撮合(永续市价、期权吃一、费+1×费滑点) | 手动开平一组账目正确 | | P2 | 策略状态机(选向、两套平仓、3 次、08:00 停开、组 ID) | 无 UI 也能跑完业务窗 | | P3 | 四页前端 | 可完整操作与复盘 | | P4 | 行情落盘与回放 | 重放结果与当时一致 | | P5 | 实盘适配器 | 显式开关下最小仓验证 | --- ## 8. 已拍板摘要 1. 期权只买入 Call 或 Put(永不卖出开仓)。 2. N 点 = 标的 ETH 波动点数,设置可配(默认 30)。 3. 行权价 ATM。 4. 权利金覆盖触发不含手续费。 5. Call 卖一 = Put 卖一:跳过等待。 6. 测试访问:`https://dc.hyf2.cc` → 本机 `5155` / PM2 `eth-hedge-api`。 --- ## 9. 一句话 **独立仓 `eth_hedge_sim`(产品:比特骆驼自动化对冲系统):OKX/币安真行情只读 + 本地虚拟资金撮合(永续市价、期权只买吃买卖一、滑点=1×手续费)+ 四页前端 + Ubuntu 22.04 / PM2 单独部署;可抄现网思路,但不改现网代码、不共用现网进程。**