feat: 导航开关与 CTP 柜台手续费

系统设置可开关五类导航;手续费默认从 CTP 查询同步,本地/AKShare 作离线兜底;补充 FEES.md。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-24 12:19:56 +08:00
parent ca894dfd4d
commit 528d9811e3
13 changed files with 523 additions and 48 deletions
+74
View File
@@ -0,0 +1,74 @@
# 手续费与导航设置
## 手续费数据源
| 模式 | 说明 |
|------|------|
| **CTP 柜台**(默认) | 连接 SimNow/实盘 CTP 后,通过 `ReqQryInstrumentCommissionRate` 查询柜台费率并缓存到 `fee_rates``source=ctp` |
| **本地 / AKShare** | 使用 `data/fee_rates.json` 或 AKShare 交易所参考表 × 倍率,仅作离线估算 |
### 计算公式
```
单边手续费 = 固定(元/手) × 手数 + 比例 × 成交价 × 合约乘数 × 手数
往返手续费 = 开仓费 + 平仓费(同日持仓用平今,否则平昨)
```
CTP 返回字段映射:
| CTP 字段 | 本地字段 |
|----------|----------|
| OpenRatioByVolume | open_fixed |
| OpenRatioByMoney | open_ratio |
| CloseRatioByVolume | close_yesterday_fixed |
| CloseRatioByMoney | close_yesterday_ratio |
| CloseTodayRatioByVolume | close_today_fixed |
| CloseTodayRatioByMoney | close_today_ratio |
### 同步时机
1. **连接 CTP 成功后** — 后台自动同步主力合约费率(约 60 个品种)
2. **手续费配置页** — 点击「从 CTP 同步费率」
3. **按需查询** — 计算某品种手续费时,若缓存无 CTP 费率则单品种查询
### 配置路径
- 系统设置 → **手续费配置**(可在导航中开关显示)
- 选择「计费依据」→ 保存
- CTP 已连接时点击「从 CTP 同步费率」
---
## 导航显示开关
**系统设置 → 导航显示** 可单独开关以下顶栏入口:
| 开关 key | 菜单名 |
|----------|--------|
| `fees` | 手续费配置 |
| `contract` | 品种简介 |
| `plans` | 开单计划 |
| `market` | 行情K线 |
| `strategy` | 策略交易 |
关闭后:
- 顶栏不显示该链接
- 直接访问对应 URL 会提示并跳转到 **持仓监控**
始终显示的入口:持仓监控、关键位监控、交易记录与复盘、统计分析、系统设置。
设置保存在 SQLite `settings.nav_items`JSON)。
---
## 相关文件
| 文件 | 说明 |
|------|------|
| `fee_specs.py` | 费率查询与计算 |
| `ctp_fee_sync.py` | CTP 费率同步 |
| `nav_settings.py` | 导航开关 |
| `vnpy_bridge.py` | CTP 连接与费率查询 |
详见 [DEPLOY.md](./DEPLOY.md)、[TRADING.md](./TRADING.md)。