补充功能说明与独立部署文档,精简 README 为文档入口

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-15 15:30:34 +08:00
parent bea7804d47
commit 613b88f2d3
3 changed files with 681 additions and 142 deletions
+32 -142
View File
@@ -1,128 +1,44 @@
# 国内期货交易监控复盘系统 # 国内期货交易监控复盘系统
基于 Flask 的国内期货监控与复盘 Web 应用支持开单计划、关键位监控、止盈止损自动跟踪、企业微信推送与统计分析 基于 Flask 的国内期货**监控 + 模拟持仓 + 复盘** Web 应用支持开单计划、关键位监控、持仓监控、交易记录、复盘 K 线、手续费估算与企业微信推送。
## 功能模块 ## 文档
| 文档 | 说明 |
|------|------|
| **[功能说明文档](docs/FEATURES.md)** | 各模块功能、操作逻辑、费率与数据库说明 |
| **[部署文档](docs/DEPLOY.md)** | 一键部署、手动部署、更新、PM2、故障排查 |
## 功能一览
| 模块 | 说明 | | 模块 | 说明 |
|------|------| |------|------|
| **开单计划** | 品种、方向、决策区间、止损/止盈;价格进入区间激活并推送 | | **开单计划** | 当日决策区间、止损止盈;进入区间激活并推送 |
| **关键位监控** | 箱体/收敛突破、阻力/支撑突破提醒(触发后去重) | | **关键位监控** | 箱体/阻力支撑突破提醒,监控历史归档 |
| **交易记录与复盘** | 自动记录止盈/止损结果 | | **持仓监控** | 模拟持仓录入、实时卡片、平仓记入交易记录 |
| **统计分析** | 总交易、胜率,按品种/类型/方向统计 | | **交易记录与复盘** | 平仓记录核对、填入复盘、K 线自动生成 |
| **系统设置** | 修改密码、配置企业微信 Webhook | | **统计分析** | 胜率、手续费与净盈亏汇总 |
| **手续费配置** | 本地费率表(默认标准×2),可选 AKShare 同步 |
| **系统设置** | 实盘资金、企业微信、改密码、深色/浅色主题 |
## 品种与合约代码(同花顺格式) ## 快速开始
输入中文品种名(如「白银」「螺纹钢」)或同花顺合约代码(如 `ag2606``SR609``IF2606`),系统自动匹配**当前主力月份合约** **服务器(Ubuntu root**
| 交易所 | 同花顺示例 | 说明 |
|--------|-----------|------|
| 上期所 / 大商所 / 上期能源 | `ag2606``rb2605``m2609` | 小写品种 + 4 位年月 |
| 郑商所 | `SR609``MA606` | 大写品种 + 3 位年月 |
| 中金所 | `IF2606``IH2606` | 大写品种 + 4 位年月 |
界面展示**同花顺合约代码**(ag2608、IF2606),与看盘软件一致;**行情默认走新浪财经**(免费,普通用户无需 token)。
## 行情说明
| 项目 | 说明 |
|------|------|
| 合约代码 | 同花顺格式,输入中文自动匹配主力月份 |
| 价格数据 | 新浪财经 API(免费) |
| 同花顺 iFinD | 仅机构/付费数据接口用户可用,**普通期货通用户无 refresh_token** |
因此个人用户使用本系统:**看同花顺代码,价格走新浪**,两者在主力合约价格上基本一致,满足监控需求。
## 快速部署(Ubuntu root + /opt/qihuo
```bash ```bash
# root 登录后执行 cd /opt/qihuo && bash deploy.sh
cd /opt/qihuo # 或先 git clone 再 bash deploy.sh # 访问 http://<IP>:6600
bash deploy.sh
``` ```
默认安装路径:`/opt/qihuo`,服务端口:`6600` **更新**
部署完成后访问:`http://服务器IP:6600`
## 环境要求
- Ubuntu 20.04+(推荐)
- **root 用户**运行(部署目录 `/opt/qihuo`
- Python 3.10+
- Node.js + PM2(进程守护)
- 网络可访问 `hq.sinajs.cn`(行情)及企业微信 API
## 手动部署
### 1. 安装系统依赖
```bash ```bash
apt update cd /opt/qihuo && git pull && pm2 restart qihuo
apt install -y python3 python3-venv python3-pip git nodejs npm
npm install -g pm2
``` ```
### 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 ```bash
python3 -m venv venv python3 -m venv venv
@@ -132,44 +48,18 @@ cp .env.example .env
python app.py python app.py
``` ```
## 目录结构 ## 品种与行情
``` - 合约代码:**同花顺格式**`ag2606``SR609``IF2606`),输入中文自动匹配主力
qihuo/ - 行情:默认**新浪财经**(免费);机构用户可配置同花顺 iFinD token
├── 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 数据库(运行后生成)
```
## 监控逻辑说明 ## 环境要求
### 开单计划 - Python 3.10+
- PM2(生产部署)
- 网络可访问 `hq.sinajs.cn`
1. **待触发**:当前价进入「决策区间 [下限, 上限]」→ 企业微信通知,状态变为「已激活」 ## 仓库
2. **已激活**:监控止盈止损直至触发,写入交易记录,计划关闭
### 关键位监控
- 箱体/收敛:突破上沿或跌破下沿各推送一次
- 阻力/支撑:单向突破推送一次
后台线程每 3 秒轮询行情。
## 安全建议
- 部署后立即修改默认密码
- 勿将 `.env` 提交到仓库
- 生产环境建议用 Nginx 反代并配置 HTTPS
- 限制 6600 端口仅内网或 VPN 访问
## 仓库地址
https://git.bz121.com/dekun/qihuo.git https://git.bz121.com/dekun/qihuo.git
+322
View File
@@ -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)
+327
View File
@@ -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