# 下单监控 **页面路径**:`/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 | 开仓价 ± (n−1)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)