From 613b88f2d3ade836b65a435327aad6125ef9388f Mon Sep 17 00:00:00 2001 From: dekun Date: Mon, 15 Jun 2026 15:30:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8A=9F=E8=83=BD=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E4=B8=8E=E7=8B=AC=E7=AB=8B=E9=83=A8=E7=BD=B2=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E7=B2=BE=E7=AE=80=20README=20=E4=B8=BA?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- README.md | 174 +++++-------------------- docs/DEPLOY.md | 322 ++++++++++++++++++++++++++++++++++++++++++++++ docs/FEATURES.md | 327 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 681 insertions(+), 142 deletions(-) create mode 100644 docs/DEPLOY.md create mode 100644 docs/FEATURES.md diff --git a/README.md b/README.md index dbdb44a..133492e 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,44 @@ # 国内期货交易监控复盘系统 -基于 Flask 的国内期货监控与复盘 Web 应用,支持开单计划、关键位监控、止盈止损自动跟踪、企业微信推送与统计分析。 +基于 Flask 的国内期货**监控 + 模拟持仓 + 复盘** Web 应用。支持开单计划、关键位监控、持仓监控、交易记录、复盘 K 线、手续费估算与企业微信推送。 -## 功能模块 +## 文档 + +| 文档 | 说明 | +|------|------| +| **[功能说明文档](docs/FEATURES.md)** | 各模块功能、操作逻辑、费率与数据库说明 | +| **[部署文档](docs/DEPLOY.md)** | 一键部署、手动部署、更新、PM2、故障排查 | + +## 功能一览 | 模块 | 说明 | |------|------| -| **开单计划** | 品种、方向、决策区间、止损/止盈;价格进入区间后激活并推送 | -| **关键位监控** | 箱体/收敛突破、阻力/支撑位突破提醒(触发后去重) | -| **交易记录与复盘** | 自动记录止盈/止损结果 | -| **统计分析** | 总交易、胜率,按品种/类型/方向统计 | -| **系统设置** | 修改密码、配置企业微信 Webhook | +| **开单计划** | 当日决策区间、止损止盈;进入区间激活并推送 | +| **关键位监控** | 箱体/阻力支撑突破提醒,监控历史归档 | +| **持仓监控** | 模拟持仓录入、实时卡片、平仓记入交易记录 | +| **交易记录与复盘** | 平仓记录核对、填入复盘、K 线自动生成 | +| **统计分析** | 胜率、手续费与净盈亏汇总 | +| **手续费配置** | 本地费率表(默认标准×2),可选 AKShare 同步 | +| **系统设置** | 实盘资金、企业微信、改密码、深色/浅色主题 | -## 品种与合约代码(同花顺格式) +## 快速开始 -输入中文品种名(如「白银」「螺纹钢」)或同花顺合约代码(如 `ag2606`、`SR609`、`IF2606`),系统自动匹配**当前主力月份合约**。 - -| 交易所 | 同花顺示例 | 说明 | -|--------|-----------|------| -| 上期所 / 大商所 / 上期能源 | `ag2606`、`rb2605`、`m2609` | 小写品种 + 4 位年月 | -| 郑商所 | `SR609`、`MA606` | 大写品种 + 3 位年月 | -| 中金所 | `IF2606`、`IH2606` | 大写品种 + 4 位年月 | - -界面展示**同花顺合约代码**(ag2608、IF2606),与看盘软件一致;**行情默认走新浪财经**(免费,普通用户无需 token)。 - -## 行情说明 - -| 项目 | 说明 | -|------|------| -| 合约代码 | 同花顺格式,输入中文自动匹配主力月份 | -| 价格数据 | 新浪财经 API(免费) | -| 同花顺 iFinD | 仅机构/付费数据接口用户可用,**普通期货通用户无 refresh_token** | - -因此个人用户使用本系统:**看同花顺代码,价格走新浪**,两者在主力合约价格上基本一致,满足监控需求。 - -## 快速部署(Ubuntu root + /opt/qihuo) +**服务器(Ubuntu root)** ```bash -# root 登录后执行 -cd /opt/qihuo # 或先 git clone 再 bash deploy.sh -bash deploy.sh +cd /opt/qihuo && bash deploy.sh +# 访问 http://:6600 ``` -默认安装路径:`/opt/qihuo`,服务端口:`6600`。 - -部署完成后访问:`http://服务器IP:6600` - -## 环境要求 - -- Ubuntu 20.04+(推荐) -- **root 用户**运行(部署目录 `/opt/qihuo`) -- Python 3.10+ -- Node.js + PM2(进程守护) -- 网络可访问 `hq.sinajs.cn`(行情)及企业微信 API - -## 手动部署 - -### 1. 安装系统依赖 +**更新** ```bash -apt update -apt install -y python3 python3-venv python3-pip git nodejs npm -npm install -g pm2 +cd /opt/qihuo && git pull && pm2 restart qihuo ``` -### 2. 克隆到 /opt/qihuo +详细步骤见 [部署文档](docs/DEPLOY.md)。 -```bash -git clone https://git.bz121.com/dekun/qihuo.git /opt/qihuo -cd /opt/qihuo -``` - -### 3. 虚拟环境与依赖 -source venv/bin/activate -pip install -r requirements.txt -``` - -### 4. 配置环境变量 - -```bash -cp .env.example .env -# 编辑 .env,至少修改 SECRET_KEY 和 ADMIN_PASSWORD -nano .env -``` - -`.env` 主要字段: - -```env -HOST=0.0.0.0 -PORT=6600 -SECRET_KEY=随机长字符串 -ADMIN_USERNAME=admin -ADMIN_PASSWORD=你的密码 -ADMIN_SYNC_FROM_ENV=false -WECHAT_WEBHOOK=企业微信机器人地址(可选) -QUOTE_SOURCE=sina -``` - -**改密码说明**:账号存在 `futures.db` 里,改 `.env` 后不会自动生效。 - -- **首次部署**:写好 `ADMIN_USERNAME` / `ADMIN_PASSWORD` 后启动即可。 -- **已部署后**:在 `.env` 设 `ADMIN_SYNC_FROM_ENV=true`,改密码后 `pm2 restart qihuo`;或在网页「系统设置」改密。 -- **忘记密码**:`source venv/bin/activate && python reset_admin.py` - -普通用户保持 `QUOTE_SOURCE=sina` 即可。 - -### 5. PM2 启动 - -```bash -pm2 start ecosystem.config.cjs -pm2 save -pm2 startup # 按提示执行生成的命令,实现开机自启 -``` - -### 6. 常用 PM2 命令 - -```bash -pm2 status -pm2 logs qihuo -pm2 restart qihuo -pm2 stop qihuo -``` - -## 本地开发 +**本地开发** ```bash python3 -m venv venv @@ -132,44 +48,18 @@ cp .env.example .env python app.py ``` -## 目录结构 +## 品种与行情 -``` -qihuo/ -├── app.py # 主程序 -├── market.py # 同花顺/新浪行情拉取 -├── symbols.py # 期货品种与同花顺代码映射 -├── requirements.txt -├── .env.example -├── deploy.sh # Ubuntu 一键部署 -├── ecosystem.config.cjs # PM2 配置 -├── static/js/symbol.js # 品种联想 -├── templates/ # 页面模板 -└── futures.db # SQLite 数据库(运行后生成) -``` +- 合约代码:**同花顺格式**(`ag2606`、`SR609`、`IF2606`),输入中文自动匹配主力 +- 行情:默认**新浪财经**(免费);机构用户可配置同花顺 iFinD token -## 监控逻辑说明 +## 环境要求 -### 开单计划 +- Python 3.10+ +- PM2(生产部署) +- 网络可访问 `hq.sinajs.cn` -1. **待触发**:当前价进入「决策区间 [下限, 上限]」→ 企业微信通知,状态变为「已激活」 -2. **已激活**:监控止盈止损直至触发,写入交易记录,计划关闭 - -### 关键位监控 - -- 箱体/收敛:突破上沿或跌破下沿各推送一次 -- 阻力/支撑:单向突破推送一次 - -后台线程每 3 秒轮询行情。 - -## 安全建议 - -- 部署后立即修改默认密码 -- 勿将 `.env` 提交到仓库 -- 生产环境建议用 Nginx 反代并配置 HTTPS -- 限制 6600 端口仅内网或 VPN 访问 - -## 仓库地址 +## 仓库 https://git.bz121.com/dekun/qihuo.git diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md new file mode 100644 index 0000000..21af2e6 --- /dev/null +++ b/docs/DEPLOY.md @@ -0,0 +1,322 @@ +# 部署文档 + +国内期货交易监控复盘系统 — Ubuntu 服务器部署、更新与运维说明。 + +--- + +## 部署概要 + +| 项目 | 默认值 | +|------|--------| +| 部署目录 | `/opt/qihuo` | +| 运行用户 | `root`(与 `deploy.sh` / PM2 配置一致) | +| 服务端口 | `6600` | +| 进程管理 | PM2,应用名 `qihuo` | +| 数据库 | SQLite `futures.db` | +| 仓库 | https://git.bz121.com/dekun/qihuo.git | + +--- + +## 环境要求 + +- **系统**:Ubuntu 20.04+(推荐) +- **Python**:3.10+ +- **Node.js + PM2**:进程守护与开机自启 +- **网络**: + - `hq.sinajs.cn`(新浪行情) + - 企业微信 API(若启用推送) + - `git.bz121.com`(拉取代码) + - 可选:`pip` 安装 akshare 时需访问 PyPI + +--- + +## 一键部署(推荐) + +以 **root** 登录服务器后执行: + +```bash +cd /opt/qihuo +# 若目录不存在,先克隆: +# git clone https://git.bz121.com/dekun/qihuo.git /opt/qihuo + +bash deploy.sh +``` + +`deploy.sh` 会自动完成: + +1. 安装 `python3`、`python3-venv`、`git`、`nodejs`、`npm`、`pm2` +2. `git pull` 或 `git clone` 到 `/opt/qihuo` +3. 创建虚拟环境 `venv` 并 `pip install -r requirements.txt` +4. 首次生成 `.env`(随机 `SECRET_KEY`) +5. `pm2 start ecosystem.config.cjs` 并 `pm2 save` + +部署完成后访问:`http://<服务器IP>:6600` + +--- + +## 手动部署 + +### 1. 安装系统依赖 + +```bash +apt update +apt install -y python3 python3-venv python3-pip git nodejs npm +npm install -g pm2 +``` + +### 2. 克隆代码 + +```bash +git clone https://git.bz121.com/dekun/qihuo.git /opt/qihuo +cd /opt/qihuo +``` + +### 3. Python 虚拟环境与依赖 + +```bash +python3 -m venv venv +source venv/bin/activate +pip install --upgrade pip +pip install -r requirements.txt +``` + +### 4. 可选:AKShare(手续费第三方同步) + +```bash +source venv/bin/activate +pip install akshare +``` + +不安装也可使用系统内置 `data/fee_rates.json` 默认费率。 + +### 5. 环境变量 + +```bash +cp .env.example .env +nano .env +``` + +| 变量 | 说明 | +|------|------| +| `HOST` | 监听地址,默认 `0.0.0.0` | +| `PORT` | 端口,默认 `6600` | +| `SECRET_KEY` | Flask Session 密钥,务必随机 | +| `ADMIN_USERNAME` | 初始管理员用户名 | +| `ADMIN_PASSWORD` | 初始管理员密码(仅首次建库生效) | +| `ADMIN_SYNC_FROM_ENV` | `true` 时重启可从 `.env` 同步账号密码 | +| `WECHAT_WEBHOOK` | 企业微信机器人地址(可选) | +| `QUOTE_SOURCE` | `sina`(默认)/ `ths` / `auto` | +| `THS_REFRESH_TOKEN` | 同花顺 iFinD token(机构用户) | + +示例: + +```env +HOST=0.0.0.0 +PORT=6600 +SECRET_KEY=请替换为随机长字符串 +ADMIN_USERNAME=admin +ADMIN_PASSWORD=你的强密码 +ADMIN_SYNC_FROM_ENV=false +WECHAT_WEBHOOK= +QUOTE_SOURCE=sina +``` + +### 6. PM2 启动 + +```bash +cd /opt/qihuo +pm2 start ecosystem.config.cjs +pm2 save +pm2 startup # 按提示执行命令,实现开机自启 +``` + +### 7. 创建日志目录(若不存在) + +```bash +mkdir -p /opt/qihuo/logs /opt/qihuo/uploads +``` + +--- + +## 更新部署 + +代码已推送后,在服务器执行: + +```bash +cd /opt/qihuo +git pull +source venv/bin/activate +pip install -r requirements.txt +pm2 restart qihuo +``` + +若新增可选依赖(如 akshare): + +```bash +pip install akshare +pm2 restart qihuo +``` + +应用启动时会自动执行 SQLite 表结构迁移(`ALTER TABLE` 容错),一般无需手工改库。 + +--- + +## PM2 常用命令 + +```bash +pm2 status # 查看状态 +pm2 logs qihuo # 查看日志 +pm2 logs qihuo --lines 100 +pm2 restart qihuo # 重启 +pm2 stop qihuo # 停止 +pm2 delete qihuo # 删除进程 +pm2 save # 保存进程列表 +``` + +日志文件: + +- `/opt/qihuo/logs/pm2-out.log` +- `/opt/qihuo/logs/pm2-error.log` + +--- + +## 本地开发 + +```bash +git clone https://git.bz121.com/dekun/qihuo.git +cd qihuo +python3 -m venv venv +source venv/bin/activate # Windows: venv\Scripts\activate +pip install -r requirements.txt +cp .env.example .env +python app.py +``` + +浏览器访问:`http://127.0.0.1:6600` + +--- + +## 账号与密码 + +| 场景 | 操作 | +|------|------| +| 首次部署 | `.env` 中设置 `ADMIN_USERNAME` / `ADMIN_PASSWORD` 后启动 | +| 已部署后改 `.env` 密码 | 设 `ADMIN_SYNC_FROM_ENV=true`,`pm2 restart qihuo` | +| 网页改密码 | 登录 → 系统设置 | +| 忘记密码 | `cd /opt/qihuo && source venv/bin/activate && python reset_admin.py` | + +账号数据在 `futures.db` 的 `settings` 表,不会仅因改 `.env` 自动更新(除非开启 `ADMIN_SYNC_FROM_ENV`)。 + +--- + +## 数据库与数据文件 + +| 路径 | 说明 | +|------|------| +| `/opt/qihuo/futures.db` | 主数据库,建议定期备份 | +| `/opt/qihuo/uploads/` | 复盘截图、自动 K 线图 | +| `/opt/qihuo/data/fee_rates.json` | 默认手续费表(可重载) | + +备份示例: + +```bash +cp /opt/qihuo/futures.db /opt/qihuo/futures.db.bak.$(date +%Y%m%d) +``` + +### 手工补列(极少需要) + +若极老版本库缺少字段,可对照报错执行(新版本启动会自动迁移): + +```bash +sqlite3 /opt/qihuo/futures.db "ALTER TABLE key_monitors ADD COLUMN sina_code TEXT;" +``` + +--- + +## Nginx 反向代理(可选) + +将 6600 反代到 80/443,并配置 HTTPS: + +```nginx +server { + listen 80; + server_name your.domain.com; + + location / { + proxy_pass http://127.0.0.1:6600; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +--- + +## 防火墙 + +若使用 `ufw`,开放端口: + +```bash +ufw allow 6600/tcp +# 或使用 Nginx 时只开放 80/443 +``` + +--- + +## 故障排查 + +| 现象 | 可能原因 | 处理 | +|------|----------|------| +| 无法访问 6600 | 服务未启动 / 防火墙 | `pm2 status`、`pm2 logs qihuo` | +| 登录失败 | 密码未同步 | 网页改密或 `reset_admin.py` | +| 现价一直 `--` | 新浪网络不可达 | 检查服务器能否访问 `hq.sinajs.cn` | +| 关键位 500 | 缺 `sina_code` 列 | `git pull` 重启;或手工 `ALTER TABLE` | +| K 线生成失败 | matplotlib 未装 | `pip install matplotlib==3.9.2` | +| 手续费同步失败 | 未装 akshare | `pip install akshare` 或用「重载 JSON」 | +| `git pull` 冲突 | 本地有修改 | 备份 `futures.db` 后处理冲突或 `git stash` | + +查看应用是否在监听: + +```bash +ss -tlnp | grep 6600 +``` + +--- + +## 安全建议 + +1. 部署后立即修改默认密码 +2. 勿将 `.env`、`futures.db` 提交到公开仓库 +3. 生产环境使用 HTTPS + 限制访问 IP +4. 定期备份 `futures.db` 与 `uploads/` + +--- + +## 目录结构(部署后) + +``` +/opt/qihuo/ +├── app.py +├── venv/ +├── futures.db +├── .env +├── logs/ +│ ├── pm2-out.log +│ └── pm2-error.log +├── uploads/ +├── data/fee_rates.json +├── ecosystem.config.cjs +├── deploy.sh +└── docs/ + ├── FEATURES.md + └── DEPLOY.md +``` + +--- + +## 相关文档 + +- [功能说明文档](./FEATURES.md) +- [README](../README.md) diff --git a/docs/FEATURES.md b/docs/FEATURES.md new file mode 100644 index 0000000..fb455e3 --- /dev/null +++ b/docs/FEATURES.md @@ -0,0 +1,327 @@ +# 功能说明文档 + +国内期货交易监控复盘系统(Flask + SQLite + PM2)各模块使用说明与技术要点。 + +--- + +## 系统概览 + +| 项目 | 说明 | +|------|------| +| 访问端口 | 默认 `6600` | +| 数据存储 | SQLite `futures.db`(品种、计划、监控、持仓、交易记录、复盘、费率等) | +| 行情来源 | 默认新浪财经(免费);可选同花顺 iFinD(机构 token) | +| 合约代码 | 同花顺格式(如 `ag2606`、`SR609`、`IF2606`) | +| 主题 | 支持深色 / 浅色切换(页头左侧) | + +### 导航结构 + +| 菜单 | 路径 | 作用 | +|------|------|------| +| 开单计划 | `/plans` | 当日计划录入与历史 | +| 关键位监控 | `/keys` | 关键位突破监控与历史 | +| 持仓监控 | `/positions` | 模拟持仓录入与实时卡片 | +| 交易记录与复盘 | `/records` | 平仓记录 + 复盘上传与历史 | +| 统计分析 | `/stats` | 胜率、手续费、盈亏汇总 | +| 手续费配置 | `/fees` | 本地费率表与倍率 | +| 系统设置 | `/settings` | 资金、微信、改密码 | + +--- + +## 开单计划 + +**路径**:`/plans` + +### 功能 + +- 制定**当日**开单计划:主力合约、方向、决策区间(上/下沿)、止损、止盈、决策理由。 +- 计划状态:`planned`(待触发)→ `active`(已激活)→ `closed` / `expired`。 +- 列表**实时现价**与距区间上下沿距离(约 1 秒轮询 `/api/plan_prices`)。 + +### 触发逻辑(后台线程,约 3 秒) + +1. **待触发**:现价进入决策区间 `[下限, 上限]` → 企业微信通知,状态变为「已激活」。 +2. **已激活**:持续监控止盈 / 止损;触发后写入 `trade_records`(系统自动止盈止损记录),计划关闭。 + +### 操作 + +- 左侧表单添加计划;右侧为进行中计划列表。 +- 下方可按日期筛选历史计划。 + +--- + +## 关键位监控 + +**路径**:`/keys` + +### 功能 + +- 监控类型:箱体突破、收敛突破、关键阻力位、关键支撑位。 +- 录入:品种、类型、方向、上沿/下沿(阻力/支撑)。 +- 列表显示现价、距上沿、距下沿(约 1 秒轮询 `/api/key_prices`)。 +- **监控历史**:删除的监控归档,可查看上沿、下沿、归档时间。 + +### 推送逻辑 + +| 类型 | 规则 | +|------|------| +| 箱体 / 收敛 | 突破上沿、跌破下沿各推送一次(去重) | +| 阻力 / 支撑 | 单向突破推送一次 | + +--- + +## 持仓监控 + +**路径**:`/positions` + +### 功能 + +模拟盘持仓管理,与关键位页面分离。 + +### 持仓录入 + +| 字段 | 说明 | +|------|------| +| 主力合约 | 品种联想,同花顺代码 | +| 开仓时间 | 与合约、张数同一行,避免标签错位 | +| 张数 | 手数 | +| 成交价格 / 止损 / 止盈 | 用于方向推断与盈亏计算 | + +- **方向**:未选手动方向时,根据止损与成交价自动判断(止损低于成交 → 做多,反之做空)。 +- **风险比例**:依赖系统设置中的「实盘资金」。 + +### 实时持仓卡片 + +约 1 秒轮询 `/api/position_live`,展示: + +- 成交价、止损、止盈、盈亏比、标记价、浮盈亏 +- **预估手续费**、**扣费后浮盈亏**(按本地费率表估算) +- 保证金、仓位占比、开仓时间、持仓时长、张数 +- **平仓**:按现价平仓,写入「交易记录」,并从持仓列表移除 + +### 平仓 → 交易记录 + +平仓时自动: + +1. 拉取现价作为平仓价; +2. 计算毛盈亏、手续费、净盈亏; +3. 写入 `trade_logs`; +4. 删除 `position_monitors` 对应行。 + +--- + +## 交易记录与复盘 + +**路径**:`/records`(`/trades` 自动跳转到此页) + +页面上方为**交易记录**,下方为**复盘上传**与**复盘历史**。 + +### 交易记录 + +来源主要为「持仓监控」平仓;字段包括: + +| 列 | 说明 | +|----|------| +| 品种 / 类型 / 方向 | 类型多为「持仓监控」 | +| 成交 / 止损 / 止盈 | 开仓时价格 | +| 基数 | 张数 + 保证金 | +| 持仓分钟 | 开平时间差 | +| 盈亏(元) | 毛盈亏(未扣费) | +| 手续费 | 开+平合计(本地费率估算) | +| 净盈亏 | 毛盈亏 − 手续费 | +| 结果 | 止盈 / 止损 / 手动平仓等 | + +**修改/核对开关**(小字单行):开启后可编辑关键字段并「核对修改」保存(标记 `verified`)。 + +**填入复盘**:跳转本页复盘表单,自动预填品种、方向、价格、时间、盈亏等,并滚动到「复盘上传」区域。 + +### 复盘上传 + +手动复盘表单,支持: + +- 品种、方向、张数、周期、成交价、止损、止盈、平仓价 +- 开仓/平仓时间 → 自动计算持仓时长、初始/实际盈亏比 +- 开仓类型、离场触发、行为标签(勾选为情绪单) +- 截图上传;**自动 K 线**(matplotlib 生成复盘图) +- 保存时自动计算**手续费**与**净盈亏**写入 `review_records` + +### 复盘历史 + +- 筛选:本日 / 本周 / 本月 / 自定义日期 +- 列表含盈亏、手续费、净盈亏;支持全屏详情弹窗 +- 另含「系统自动记录(止盈/止损)」:来自开单计划/关键位触发的 `trade_records` + +--- + +## 统计分析 + +**路径**:`/stats` + +### 监控触发统计(trade_records) + +- 总交易、止盈、止损、胜率 +- 按品种 / 类型 / 方向分组胜率 + +### 手续费与盈亏汇总(trade_logs + review_records) + +| 指标 | 说明 | +|------|------| +| 累计手续费 | 交易记录 + 复盘记录手续费之和 | +| 毛盈亏合计 | 未扣费盈亏 | +| 净盈亏合计 | 扣费后盈亏 | +| 计费笔数 | 有手续费字段的记录数 | +| 按品种手续费 | 交易记录中各品种累计手续费 | + +### 最近交易 + +展示最近 10 笔 `trade_logs`:毛盈亏、手续费、净盈亏、结果。 + +--- + +## 手续费配置 + +**路径**:`/fees` + +模拟盘参考费率,**非期货公司实盘账单**。 + +### 数据来源 + +1. **本地 JSON**:`data/fee_rates.json`(首次空库自动加载,已为常见品种写入约 **交易所标准 × 2**) +2. **第三方同步**:`pip install akshare` 后,点击「从第三方同步(AKShare)」 +3. **手工编辑**:表格内修改单品种费率并保存 + +### 倍率 + +- 设置项「第三方标准费率 × N」,默认 **2** +- 从 AKShare 同步时:拉取参考标准后乘以该倍率写入 `fee_rates` 表 +- 已写入表的数值即为当前生效费率,改倍率后需重新同步或手工调整 + +### 费率字段 + +| 字段 | 含义 | +|------|------| +| 开仓(元/手) | 固定每手费用 | +| 开仓(比例) | 成交价 × 合约乘数 × 手数 × 比例 | +| 平昨(元/手) / 平昨(比例) | 非当日平仓 | +| 平今(元/手) / 平今(比例) | 当日平仓(部分品种平今更高) | + +### 计费规则 + +- 一笔往返 = **开仓费 + 平仓费** +- 开仓日与平仓日相同 → 用**平今**;否则用**平昨** +- 合约乘数见 `contract_specs.py`,与保证金估算共用 + +相关代码:`fee_specs.py`(计算)、`fee_sync.py`(AKShare 同步)、`contract_specs.py`(乘数/保证金)。 + +--- + +## 系统设置 + +**路径**:`/settings` + +| 功能 | 说明 | +|------|------| +| 实盘资金 | 用于持仓监控的风险金额、仓位占比计算 | +| 行情说明 | 当前行情源展示 | +| 企业微信 Webhook | 计划/关键位触发推送 | +| 修改密码 | 修改管理员密码 | + +### 账号与密码 + +- 账号存在 `futures.db` 的 `settings` 表 +- 改 `.env` 不会自动改密码,需 `ADMIN_SYNC_FROM_ENV=true` 并重启,或网页改密 +- 忘记密码:`python reset_admin.py` + +--- + +## 品种与行情 + +### 品种联想 + +- 输入中文或代码,调用 `/api/symbols/search` +- 自动匹配主力合约,写入 `symbol`、`symbol_name`、`market_code`、`sina_code` +- 实现:`symbols.py` + `static/js/symbol.js` + +### 合约代码格式 + +| 交易所 | 示例 | 格式 | +|--------|------|------| +| 上期所 / 大商所 / 能源中心 | `ag2606`、`rb2605` | 小写品种 + 4 位年月 | +| 郑商所 | `SR609`、`MA606` | 大写品种 + 3 位年月 | +| 中金所 | `IF2606` | 大写品种 + 4 位年月 | + +### 行情 + +| 配置 | 说明 | +|------|------| +| `QUOTE_SOURCE=sina` | 默认,新浪 `hq.sinajs.cn` | +| `QUOTE_SOURCE=ths` | 仅 iFinD 机构 token | +| `QUOTE_SOURCE=auto` | 有 token 时优先同花顺,失败回退新浪 | + +个人用户:**看同花顺代码,价格走新浪**,满足监控需求。 + +--- + +## 数据库表(简要) + +| 表名 | 用途 | +|------|------| +| `settings` | 密码哈希、微信、实盘资金、手续费倍率等 | +| `order_plans` | 开单计划 | +| `key_monitors` | 关键位监控(active / archived) | +| `position_monitors` | 当前持仓 | +| `trade_logs` | 平仓交易记录(含 fee、pnl_net) | +| `trade_records` | 计划/关键位自动止盈止损记录 | +| `review_records` | 复盘记录(含 fee、pnl_net) | +| `fee_rates` | 品种手续费本地配置 | + +数据库文件:`futures.db`(项目根目录,运行后生成)。 + +--- + +## 后台任务 + +| 任务 | 频率 | 说明 | +|------|------|------| +| 计划/关键位行情轮询 | 约 3 秒 | 触发判断、微信推送 | +| 关键位列表现价 | 约 1 秒 | 前端 `/api/key_prices` | +| 计划列表现价 | 约 1 秒 | 前端 `/api/plan_prices` | +| 持仓实时卡片 | 约 1 秒 | 前端 `/api/position_live` | +| 过期计划清理 | 启动时 | 非当日计划标记 expired | + +--- + +## 目录与核心文件 + +``` +qihuo/ +├── app.py # 路由、业务、DB +├── market.py # 新浪 / 同花顺行情 +├── symbols.py # 品种搜索与主力映射 +├── contract_specs.py # 合约乘数、保证金比例 +├── fee_specs.py # 手续费计算 +├── fee_sync.py # AKShare 费率同步 +├── kline_chart.py # 复盘 K 线图 +├── data/fee_rates.json # 默认费率表 +├── reset_admin.py # 重置管理员密码 +├── templates/ # 页面模板 +├── static/js/ # 前端脚本 +├── docs/ # 文档 +├── futures.db # SQLite(运行后生成) +└── uploads/ # 复盘截图与 K 线图 +``` + +--- + +## 安全提示 + +- 部署后立即修改默认密码 +- 勿将 `.env` 提交到仓库 +- 生产环境建议 Nginx 反代 + HTTPS +- 限制 6600 端口访问范围(内网 / VPN) + +--- + +## 仓库 + +https://git.bz121.com/dekun/qihuo.git