# 功能说明文档 国内期货交易监控复盘系统(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` | 品种手续费本地配置 | 数据库文件:`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