Files
qihuo/docs/FEATURES.md
T
dekun 528d9811e3 feat: 导航开关与 CTP 柜台手续费
系统设置可开关五类导航;手续费默认从 CTP 查询同步,本地/AKShare 作离线兜底;补充 FEES.md。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 12:19:56 +08:00

362 lines
12 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.
# 功能说明文档
国内期货交易监控复盘系统(Flask + SQLite + PM2)各模块使用说明与技术要点。
---
## 系统概览
| 项目 | 说明 |
|------|------|
| 访问端口 | 默认 `6600` |
| 数据存储 | SQLite `futures.db`(品种、计划、监控、持仓、交易记录、复盘、费率等) |
| 行情来源 | 默认新浪财经(免费);可选同花顺 iFinD(机构 token |
| 合约代码 | 同花顺格式(如 `ag2606``SR609``IF2606` |
| 主题 | 支持深色 / 浅色切换(页头左侧) |
### 导航结构
| 菜单 | 路径 | 作用 |
|------|------|------|
| 开单计划 | `/plans` | 当日计划录入与历史 |
| 关键位监控 | `/keys` | 关键位突破监控与历史 |
| 持仓监控 | `/positions` | 模拟持仓录入与实时卡片 |
| 交易记录与复盘 | `/records` | 平仓记录 + 复盘上传与历史 |
| 统计分析 | `/stats` | 胜率、手续费、盈亏汇总 |
| 手续费配置 | `/fees` | 本地费率表与倍率 |
| 品种简介 | `/contract` | 合约规格查询 |
| 系统设置 | `/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`(乘数/保证金)。
---
## 品种简介
**路径**`/contract`
### 功能
查询指定合约的**交易所规格说明**,展示风格与看盘软件「合约简介」类似:
- 交易品种、交易代码、交易单位、报价单位
- 最小变动价位(附一手最小波动估算)
- 最低交易保证金、涨跌停幅度
- 合约月份、交易时间、最后交易日、交割日期
- 交割方式、交割地点、交割品级、上市日期、交易所
### 使用
1. 导航进入「品种简介」
2. 输入中文品种名或同花顺合约代码(如 `螺纹钢``rb2510`
3. 从联想列表选择或点击「查询」
### 数据来源
- 主数据:**东方财富** 合约详情接口
- 补充:**新浪财经** 合约页(交割地点、上市日期等)
- 若已安装 AKShare,优先走 AKShare 封装;否则直接请求上述数据源
API`GET /api/contract_profile?symbol=rb2510` 返回 JSON。
---
## 系统设置
**路径**`/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` | 品种手续费(`source`ctp / akshare / json / manual |
手续费默认 **CTP 柜台** 费率,见 [FEES.md](./FEES.md)。
数据库文件:`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 费率同步
├── contract_profile.py # 品种/合约简介查询
├── 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