42f2dad52a
Co-authored-by: Cursor <cursoragent@cursor.com>
266 lines
7.4 KiB
Markdown
266 lines
7.4 KiB
Markdown
# 功能说明文档
|
||
|
||
国内期货 · 交易复盘系统(Flask + SQLite + vnpy_ctp + PM2)。
|
||
|
||
---
|
||
|
||
## 系统概览
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| 访问端口 | 默认 `6600` |
|
||
| 默认首页 | 登录后 `/` → **下单监控** `/positions` |
|
||
| 数据存储 | SQLite `futures.db` |
|
||
| 行情 | 默认新浪;可选同花顺 iFinD |
|
||
| 合约代码 | 同花顺格式(`ag2606`、`SR609`、`IF2606`) |
|
||
| 主题 | 页头深色 / 浅色切换 |
|
||
|
||
### 导航结构
|
||
|
||
| 菜单 | 路径 | 可关闭 |
|
||
|------|------|--------|
|
||
| **下单监控** | `/positions` | 否(默认首页) |
|
||
| 策略交易 | `/strategy` | 是 |
|
||
| 开单计划 | `/plans` | 是 |
|
||
| 关键位监控 | `/keys` | 否 |
|
||
| 行情 K 线 | `/market` | 是 |
|
||
| 交易记录与复盘 | `/records` | 否 |
|
||
| 统计分析 | `/stats` | 否 |
|
||
| 手续费配置 | `/fees` | 是 |
|
||
| 系统设置 | `/settings` | 否 |
|
||
|
||
关闭项在 **系统设置 → 导航显示** 配置;直接访问 URL 会提示并跳回下单监控。
|
||
|
||
---
|
||
|
||
## 下单监控
|
||
|
||
**路径**:`/positions`
|
||
|
||
### 顶栏
|
||
|
||
- 模拟盘 / 实盘模式、CTP 连接状态、风险状态
|
||
- 权益、可用资金(连接 CTP 后来自柜台)
|
||
- **连接 CTP** / 重连;断线自动重连;开盘前 30 分钟自动连接
|
||
|
||
### 期货下单
|
||
|
||
- 品种联想(仅列出可开仓品种或全部主力,取决于计仓模式)
|
||
- 方向、手数(固定手数 / 固定金额计仓)
|
||
- 限价 / 市价(FAK)、止盈、止损
|
||
- 非交易时段禁止报单
|
||
|
||
### 当前持仓
|
||
|
||
- 开仓委托先显示 **挂单中**,成交后显示为 active 持仓
|
||
- 挂单超时自动撤单;交易时段内可 **手动撤单**
|
||
- 持仓卡片:浮盈亏、保证金、止盈止损、平仓等
|
||
- 数据经 SSE 推送,无需整页刷新
|
||
|
||
### 可开仓品种
|
||
|
||
- 按当前权益与保证金上限筛选可开品种,养成开仓纪律、限制仓位
|
||
- **行业分类**、走势(多头/空头/震荡/转多/转空)、跳空、昨日成交量(手)、成交额
|
||
- 支持行业筛选与多字段排序
|
||
- 每日后台刷新缓存
|
||
|
||
详见 [TRADING.md](./TRADING.md)。
|
||
|
||
---
|
||
|
||
## 策略交易
|
||
|
||
**路径**:`/strategy`、`/strategy/records`
|
||
|
||
- 趋势回调自动补仓、顺势加仓等(需 CTP 已连接且有 active 持仓监控)
|
||
- 策略记录单独归档
|
||
|
||
---
|
||
|
||
## 开单计划
|
||
|
||
**路径**:`/plans`
|
||
|
||
- 录入当日计划:主力合约、方向、决策区间、止损、止盈
|
||
- 状态:`planned` → `active` → `closed` / `expired`
|
||
- 现价进入区间 → 企业微信推送并激活
|
||
- 激活后监控止盈/止损,触发写入 `trade_records` 并关闭计划
|
||
- 列表约 1 秒轮询 `/api/plan_prices`
|
||
|
||
---
|
||
|
||
## 关键位监控
|
||
|
||
**路径**:`/keys`
|
||
|
||
- 类型:箱体突破、收敛突破、关键阻力、关键支撑
|
||
- 突破规则推送(去重);删除后归档至监控历史
|
||
- 列表约 1 秒轮询 `/api/key_prices`
|
||
|
||
---
|
||
|
||
## 行情 K 线
|
||
|
||
**路径**:`/market`
|
||
|
||
- 多周期 K 线(TradingView Lightweight Charts)
|
||
- 支持 CTP 连接后部分数据增强
|
||
- 需在导航中开启
|
||
|
||
---
|
||
|
||
## 交易记录与复盘
|
||
|
||
**路径**:`/records`(`/trades` 重定向至此)
|
||
|
||
### 资金曲线
|
||
|
||
- 页顶 Lightweight Charts 资金曲线
|
||
- 随深色/浅色主题自动切换颜色
|
||
|
||
### 交易记录
|
||
|
||
- **CTP 已连接** 时打开页面自动同步柜台成交(来源「柜台」)
|
||
- 程序写入的记录来源为「本地」,可核对、删除
|
||
- 表头固定,表体约 10 行高度内滚动
|
||
- **修改/核对开关**:开启后可编辑并「核对修改」
|
||
- **填入复盘**:预填复盘表单
|
||
|
||
主要字段:品种、类型、方向、成交价、止损/止盈、手数、保证金、盈亏、手续费、净盈亏、最新资金、结果。
|
||
|
||
### 复盘上传 / 复盘历史
|
||
|
||
- 手动复盘表单、截图、自动 K 线图(matplotlib)
|
||
- 按本日/本周/本月/自定义日期筛选历史
|
||
|
||
---
|
||
|
||
## 统计分析
|
||
|
||
**路径**:`/stats`
|
||
|
||
### 汇总指标(单行卡片)
|
||
|
||
总交易次数、胜率、平均盈利/亏损、盈亏比、连续亏损、最大回撤、最大盈亏金额及占比、累计手续费、情绪单数量/占比。
|
||
|
||
进入页面自动加载(`/api/stats`),无手动「重新计算」按钮。
|
||
|
||
### 分项统计
|
||
|
||
下拉选择维度:按时间、周、月、品种、手续费、方向、交易类型、情绪单等,表格展示分组指标。
|
||
|
||
数据来源:`trade_logs`(主)+ `review_records`(情绪单等)。
|
||
|
||
---
|
||
|
||
## 手续费配置
|
||
|
||
**路径**:`/fees`
|
||
|
||
- **默认**:连接 CTP 后同步柜台费率(`source=ctp`)
|
||
- 备选:本地 `data/fee_rates.json`、AKShare 参考表 × 倍率
|
||
- 详见 [FEES.md](./FEES.md)
|
||
|
||
---
|
||
|
||
## 系统设置
|
||
|
||
**路径**:`/settings`
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 导航显示 | 开关可选菜单项 |
|
||
| 交易模式 | SimNow / 实盘 CTP |
|
||
| 计仓模式 | 固定手数、固定金额 |
|
||
| 保证金上限、移动保本、挂单超时 | 见表单说明 |
|
||
| CTP 连接 | SimNow / 实盘前置与账号(可覆盖 `.env`) |
|
||
| 参考资金 | CTP 未连接时用于可开仓筛选与估算 |
|
||
| 企业微信 Webhook | 计划/关键位推送 |
|
||
| 修改密码 | 管理员密码 |
|
||
| 深色/浅色主题 | 页头切换 |
|
||
|
||
忘记密码:`python reset_admin.py`
|
||
|
||
---
|
||
|
||
## 品种与行情
|
||
|
||
### 合约代码格式
|
||
|
||
| 交易所 | 示例 |
|
||
|--------|------|
|
||
| 上期所 / 大商所 / 能源 | `ag2606`、`rb2605`(小写+4位年月) |
|
||
| 郑商所 | `SR609`、`MA606`(大写+3位年月) |
|
||
| 中金所 | `IF2606` |
|
||
|
||
### 行情源
|
||
|
||
| 配置 | 说明 |
|
||
|------|------|
|
||
| `QUOTE_SOURCE=sina` | 默认新浪 |
|
||
| `QUOTE_SOURCE=ths` | iFinD token |
|
||
| `QUOTE_SOURCE=auto` | 有 token 优先同花顺 |
|
||
|
||
---
|
||
|
||
## 数据库表(简要)
|
||
|
||
| 表名 | 用途 |
|
||
|------|------|
|
||
| `settings` | 密码、微信、资金、导航、交易参数 |
|
||
| `order_plans` | 开单计划 |
|
||
| `key_monitors` | 关键位监控 |
|
||
| `trade_logs` | 平仓交易记录(含 `source`、`ctp_trade_key`) |
|
||
| `review_records` | 复盘 |
|
||
| `trade_records` | 计划自动止盈止损记录 |
|
||
| `fee_rates` | 手续费缓存 |
|
||
| `product_recommend_cache` | 可开仓品种缓存 |
|
||
| `stats_cache` | 统计缓存 |
|
||
|
||
数据库文件:项目根目录 `futures.db`。
|
||
|
||
---
|
||
|
||
## 后台任务
|
||
|
||
| 任务 | 说明 |
|
||
|------|------|
|
||
| 计划/关键位轮询 | 约 3 秒,触发判断与微信推送 |
|
||
| 可开仓品种刷新 | 每日 + 按需 |
|
||
| 持仓 SSE | 前端订阅 `/api/trading/stream` |
|
||
| CTP 开盘前连接 | 默认开盘前 30 分钟 |
|
||
| 挂单超时撤单 | 可配置分钟数 |
|
||
| 止盈止损守护 | CTP 持仓监控线程 |
|
||
|
||
---
|
||
|
||
## 核心文件
|
||
|
||
```
|
||
qihuo/
|
||
├── app.py # 主路由、计划/关键位/记录/统计
|
||
├── install_trading.py # 下单、可开仓品种、策略路由
|
||
├── vnpy_bridge.py # CTP 连接、报单、持仓
|
||
├── ctp_trade_sync.py # 柜台成交同步到 trade_logs
|
||
├── product_recommend.py # 可开仓品种计算
|
||
├── stats_engine.py # 统计分析
|
||
├── fee_specs.py / ctp_fee_sync.py
|
||
├── market.py / kline_chart.py
|
||
├── templates/ static/
|
||
└── docs/
|
||
```
|
||
|
||
---
|
||
|
||
## 安全提示
|
||
|
||
- 部署后立即修改默认密码
|
||
- 勿将 `.env` 提交仓库
|
||
- 生产建议 Nginx + HTTPS,限制 6600 访问范围
|
||
|
||
---
|
||
|
||
## 仓库
|
||
|
||
https://git.bz121.com/dekun/qihuo.git
|