Add modular docs with index, WeChat templates, and AI guide.

Document per-module order logic, risk rules, and WeChat message templates with a central INDEX for navigation.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-28 10:49:10 +08:00
parent 840e88daad
commit 169136dd4a
13 changed files with 1327 additions and 10 deletions
+151
View File
@@ -0,0 +1,151 @@
# 下单监控
**页面路径**`/positions`(默认首页)
**相关文件**`install_trading.py``sl_tp_guard.py``pending_order_worker.py``product_recommend.py`
---
## 功能结构
| 区域 | 说明 |
|------|------|
| 顶栏 | 模拟/实盘、CTP 状态、风险状态、权益、连接按钮 |
| 期货下单 | 手动开仓/平仓表单 |
| 当前持仓 | pending 挂单 + active 持仓卡片 |
| 可开仓品种 | 按权益与保证金筛选的推荐表 |
---
## 下单逻辑
### 手动开仓
1. 选择品种、方向、限价/市价(FAK)、手数或计仓模式。
2. **前置校验**(全部通过才报单):
- CTP 已连接且不在连接中
- 处于 **交易时段**
- `assert_can_open()` — 见 [RISK.md](./RISK.md)
- `assert_product_allowed_for_capital()` — 小账户四品种限制
- 固定金额模式须填 **止损价**
- 开启 **移动保本** 须填止损(不可只填止盈)
- 保证金占用 ≤ `max_margin_pct`
- 单笔手数 ≤ 50
3. **计仓**
- 固定手数 → 使用 `fixed_lots`
- 固定金额 → `calc_lots_by_amount()` 按止损距离算手数
4. **报单**`execute_order()` → CTP。
5. **成交后**
- 写入 `trade_order_monitors`status=active 或 pending
- 注册本地 SL/TP 守护(`sl_tp_guard`
- 微信:结构化开仓推送(有止损)或简版
- AI:后台开仓分析(有止损时)
### 挂单(限价未立即成交)
- status=`pending`,显示「挂单中」。
- **超时撤单**`pending_order_worker` 每 10 秒 reconcile(有 pending 时);默认超时见系统设置 `pending_order_timeout_sec`
- 微信:`委托已提交 · … 挂单中(N 分钟未成交自动撤单)`
### 手动平仓
- 市价平仓当前品种方向持仓。
- 关闭对应 monitor,写入 `trade_logs`
- 若当日手动平仓次数超限 → 触发冷静期([RISK.md](./RISK.md))。
- 微信:结构化平仓推送(成交同步后)。
### 止盈止损守护
后台 `sl_tp_guard` 线程 + tick 事件:
| 条件 | 动作 |
|------|------|
| 价格触及 **止盈价** | 市价平仓,结果=止盈 |
| 价格触及 **止损价** | 市价平仓,结果=止损 |
| 开启 **移动保本** | 见下节 |
触发时先推简版「平仓委托已提交」,成交写入 trade_logs 后推 **结构化平仓**
---
## 移动保本
**开启条件**:下单表单勾选「移动保本」,**必须填写止损**,不设固定止盈。
**逻辑**`sl_tp_guard._update_trailing_stop_loss`):
| 浮盈 R 倍数 | 止损移动至 |
|-------------|------------|
| ≥ 1R | 开仓价 ± `trailing_be_tick_buffer` 跳(保本) |
| ≥ 2R | 开仓价 ± 1R |
| ≥ nR | 开仓价 ± (n1)R |
**平仓结果标签**
- 1R 锁定后止损出场 → **保本止盈**
- 2R 及以上锁定后止损出场 → **移动止盈**
关键位自动单若开启移动保本且设目标盈亏比(默认 3R),达 TP 仍按 **止盈** 平仓;移动止损与显式 TP **可同时生效**
---
## 风控规则
本板块执行 [RISK.md](./RISK.md) 全部规则,另加:
| 规则 | 说明 |
|------|------|
| 非交易时段 | 禁止开仓 |
| 移动保本 | 必须填止损 |
| 固定金额 | 必须填止损才能算手数 |
| 保证金 | 新开仓前校验总占用 |
| 单笔 50 手 | 超限拒绝 |
顶栏 **风险状态** 实时反映:正常 / 冷静期 / 日冻结 / 仓位上限。
---
## 可开仓品种表
- 按当前权益、`max_margin_pct`、合约保证金计算可开手数。
- 权益 ≤20 万或 CTP 未连接:仅四品种;未连接按 10 万权益估算。
- 夜盘时段过滤无夜盘品种。
- 每日后台刷新 `product_recommend_cache`
详见 [TRADING.md](./TRADING.md)。
---
## 微信推送
| 事件 | 模板 |
|------|------|
| 开仓成交(有止损) | [WECHAT §1](./WECHAT.md#1-手动开仓成功) |
| 开仓成交(无止损) | [WECHAT §2](./WECHAT.md#2-简版开仓) |
| 挂单提交 | [WECHAT §3](./WECHAT.md#3-挂单提交) |
| 平仓完成 | [WECHAT §4](./WECHAT.md#4-平仓完成) |
| SL/TP 触发 | [WECHAT §5](./WECHAT.md#5-本地止盈止损触发) |
| AI 分析 | [AI.md](./AI.md)(仅页面,默认不推微信) |
---
## 数据流
```
用户下单 → API /api/trade/order
→ CTP 报单
→ trade_order_monitors
→ sl_tp_guard 监控
→ 平仓 → trade_logs → 微信 + AI
```
SSE`/api/trading/stream` 推送持仓快照,无需整页刷新。
---
## 相关文档
- [RISK.md](./RISK.md)
- [WECHAT.md](./WECHAT.md)
- [TRADING.md](./TRADING.md)
- [SETTINGS.md](./SETTINGS.md)