169136dd4a
Document per-module order logic, risk rules, and WeChat message templates with a central INDEX for navigation. Co-authored-by: Cursor <cursoragent@cursor.com>
306 lines
7.5 KiB
Markdown
306 lines
7.5 KiB
Markdown
# 企业微信推送
|
||
|
||
**配置**:系统设置 → 企业微信 Webhook(`wechat_webhook`)。
|
||
|
||
**发送函数**:`app.send_wechat_msg()` — 所有推送正文前自动加前缀:
|
||
|
||
```
|
||
【国内期货】
|
||
{正文}
|
||
```
|
||
|
||
未配置 Webhook 时静默跳过,不报错。
|
||
|
||
---
|
||
|
||
## 推送类型索引
|
||
|
||
| # | 类型 | 触发场景 | 模板章节 |
|
||
|---|------|----------|----------|
|
||
| 1 | 手动开仓成功(结构化) | 下单监控成交且填写止损 | [§1](#1-手动开仓成功) |
|
||
| 2 | 手动开仓(简版) | 成交但未填止损 | [§2](#2-简版开仓) |
|
||
| 3 | 挂单提交 | 限价单未立即成交 | [§3](#3-挂单提交) |
|
||
| 4 | 平仓完成(结构化) | trade_logs 写入平仓记录 | [§4](#4-平仓完成) |
|
||
| 5 | SL/TP 触发(简版) | 本地止盈止损市价平仓委托已提交 | [§5](#5-本地止盈止损触发) |
|
||
| 6 | 关键位自动单结果 | 箱体/收敛突破尝试下单 | [§6](#6-关键位自动单) |
|
||
| 7 | 关键位开仓成功(结构化) | 自动单成交 | [§7](#7-关键位开仓成功) |
|
||
| 8 | 关键支阻区提醒 | 5m 收盘突破区间 | [§8](#8-关键支阻区提醒) |
|
||
| 9 | 开单计划触发 | 现价进入决策区间 | [§9](#9-开单计划) |
|
||
| 10 | 开单计划止盈/止损 | 激活后价格触及 TP/SL | [§10](#10-开单计划结果) |
|
||
| 11 | 策略趋势回调 | 首仓/止盈/补仓 | [§11](#11-策略趋势回调) |
|
||
| 12 | AI 分析 | 开仓/平仓/日终报告 | [§12](#12-ai-分析) |
|
||
|
||
实现文件:`wechat_notify.py`、`trade_notify.py`、`key_monitor_lib.py`、`app.py`、`install_trading.py`、`ai_worker.py`。
|
||
|
||
---
|
||
|
||
## 结构化推送
|
||
|
||
以下模板由 `wechat_notify.py` 生成,字段随实际成交数据填充。
|
||
|
||
### 1. 手动开仓成功
|
||
|
||
**函数**:`format_open_success()` · **来源**:`trade_notify.notify_manual_open_filled()`
|
||
|
||
**触发**:下单监控开仓 **成交** 且填写了 **止损价**。
|
||
|
||
**模板**:
|
||
|
||
```
|
||
📈 {品种名} 开仓成功
|
||
💼 账户:{模拟盘/实盘}
|
||
|
||
🧾 订单基础信息
|
||
📌 来源:期货下单
|
||
🔖 委托号:{order_id}
|
||
📈 方向:多头(long)/ 空头(short)
|
||
⚠ 单笔风控:{risk_percent}%≈{risk_amount}元
|
||
|
||
📊 仓位配置
|
||
账户权益:{capital} 元
|
||
开仓手数:{lots} 手
|
||
占用保证金:{margin} 元
|
||
仓位占比:{margin_pct}%
|
||
|
||
🎯 价位 & 盈亏比
|
||
开仓价:{entry}
|
||
止损价:{stop_loss}
|
||
止盈价:{take_profit}
|
||
计划盈亏比:RR {rr} : 1
|
||
移动保本:1.0R → {be_px}(缓冲 {be_tick_buffer} 跳) ← 仅开启移动保本时
|
||
|
||
📌 状态
|
||
✅ 已进入下单监控,本地 SL/TP 守护
|
||
```
|
||
|
||
**示例**:
|
||
|
||
```
|
||
📈 螺纹钢 开仓成功
|
||
💼 账户:SimNow 模拟
|
||
|
||
🧾 订单基础信息
|
||
📌 来源:期货下单
|
||
📈 方向:多头(long)
|
||
⚠ 单笔风控:1%≈1000.00元
|
||
|
||
📊 仓位配置
|
||
账户权益:100000.00 元
|
||
开仓手数:2 手
|
||
占用保证金:8500.00 元
|
||
仓位占比:8.50%
|
||
|
||
🎯 价位 & 盈亏比
|
||
开仓价:3200
|
||
止损价:3180
|
||
止盈价:3240
|
||
计划盈亏比:RR 2 : 1
|
||
|
||
📌 状态
|
||
✅ 已进入下单监控,本地 SL/TP 守护
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 平仓完成
|
||
|
||
**函数**:`format_close_done()` · **来源**:`trade_notify.notify_trade_log_close()`
|
||
|
||
**触发**:`trade_logs` 新增平仓记录(SL/TP 守护、CTP 同步、手动平仓等)。
|
||
|
||
**模板**:
|
||
|
||
```
|
||
📈/📉 {品种名} 平仓完成
|
||
💼 账户:{mode_label}
|
||
|
||
🧾 平仓概要
|
||
📌 方向:多头(long)/ 空头(short)
|
||
📌 平仓结果:{止盈|止损|保本止盈|移动止盈|手动平仓}
|
||
💰 本单净盈亏:+/-{pnl_net} 元
|
||
⏱ 持仓时长:{N分钟|N小时N分钟|N天…}
|
||
💵 账户权益:{equity_after} 元
|
||
|
||
🎯 价位(计划)
|
||
开仓价:{entry}
|
||
平仓价:{close_price}
|
||
止盈价:{take_profit}
|
||
止损价:{stop_loss}
|
||
|
||
📎 备注
|
||
成交价不在计划止盈/止损带内(可能为手动或其他类型平仓) ← 可选
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 关键位开仓成功
|
||
|
||
**函数**:`format_key_open_success()` — 在 §1 基础上追加:
|
||
|
||
```
|
||
📎 关键位触发
|
||
类型:{箱体突破|收敛突破}
|
||
模式:{顺势|反转} · {向上突破|向下突破}
|
||
5m 收盘:{bar_time}
|
||
```
|
||
|
||
**来源字段**:`{monitor_type}·{trade_mode}`(如「箱体突破·顺势」)。
|
||
|
||
---
|
||
|
||
### 8. 关键支阻区提醒
|
||
|
||
**函数**:`format_zone_alert()` · **最多 3 次**,间隔约 **5 分钟**。
|
||
|
||
**模板**:
|
||
|
||
```
|
||
📌 {品种名} 关键位突破提醒({1|2|3}/3)
|
||
|
||
🧾 突破概要
|
||
📌 类型:关键支阻区
|
||
⏱ 触发时间:{bar_time}
|
||
📊 上沿:{upper}|下沿:{lower}
|
||
💹 触发收盘:{close_price}
|
||
🎯 {向上突破/向下突破}({多头/空头})
|
||
📍 突破价位:{boundary}
|
||
|
||
📎 说明
|
||
· 人工盯盘,共推送 3 次(间隔约 5 分钟)
|
||
· 推送完毕后本条监控自动结案
|
||
· 不参与自动开仓
|
||
```
|
||
|
||
---
|
||
|
||
## 简版与业务推送
|
||
|
||
### 2. 简版开仓
|
||
|
||
**触发**:成交但未填止损。
|
||
|
||
```
|
||
{模拟盘/实盘} 开仓 {symbol} {direction} {lots}手 @{price}
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 挂单提交
|
||
|
||
**触发**:限价开仓委托已提交、尚未成交。
|
||
|
||
```
|
||
委托已提交 · {symbol} {direction} {lots}手挂单中({N} 分钟未成交自动撤单)
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 本地止盈止损触发
|
||
|
||
**触发**:`sl_tp_guard` 本地检测到 TP/SL,已提交市价平仓委托(结构化平仓推送在成交写入 trade_logs 后另行发送)。
|
||
|
||
```
|
||
{止盈|止损} {symbol} {direction} {lots}手 @{mark},平仓委托已提交
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 关键位自动单
|
||
|
||
**函数**:`format_auto_breakout_msg()` · **成败均推送**。
|
||
|
||
**模板**:
|
||
|
||
```
|
||
✅/❌ {品种名} {箱体突破|收敛突破}自动单
|
||
⏱ 5m 收盘:{bar_time}
|
||
🎯 {向上突破|向下突破} · {顺势|反转} · {做多|做空}
|
||
💹 入场:{entry} 止损:{sl} 止盈:{tp}(盈亏比 {rr})
|
||
📦 手数:{lots}
|
||
🛡 已开启移动保本(达目标盈亏比自动止盈) ← 可选
|
||
{detail} ← 失败原因等
|
||
```
|
||
|
||
---
|
||
|
||
### 9. 开单计划
|
||
|
||
**触发**:`planned` → 现价进入 `[zone_lower, zone_upper]`。
|
||
|
||
```
|
||
【开单计划触发】{name} ({symbol})
|
||
方向:做多/做空
|
||
决策区间:{zone_lower} ~ {zone_upper}
|
||
决策理由:{reason}
|
||
当前价:{p}
|
||
止损:{stop_loss} 止盈:{take_profit}
|
||
```
|
||
|
||
---
|
||
|
||
### 10. 开单计划结果
|
||
|
||
**触发**:`active` 状态下触及止盈或止损。
|
||
|
||
```
|
||
[做多/做空] {name} 已{止盈|止损}
|
||
决策区间:{zone_lower} ~ {zone_upper}
|
||
止损:{stop_loss} 止盈:{take_profit}
|
||
当前价:{p}
|
||
```
|
||
|
||
> 开单计划 **不自动下单**,仅微信提醒并写入 `trade_records`。
|
||
|
||
---
|
||
|
||
### 11. 策略趋势回调
|
||
|
||
| 事件 | 模板 |
|
||
|------|------|
|
||
| 首仓成交 | `趋势回调首仓 {sym} {first_lots}手` |
|
||
| 止盈平仓 | `趋势回调止盈 {sym}` |
|
||
| 补仓成交 | `趋势回调补仓 {sym} +{add_lots}手 @档位{done+1}` |
|
||
|
||
---
|
||
|
||
### 12. AI 分析
|
||
|
||
详见 [AI.md#微信推送](./AI.md#微信推送)。
|
||
|
||
**事件分析**(开仓/平仓后,AI 成功时):
|
||
|
||
```
|
||
🤖 AI 分析 · {title}
|
||
|
||
{content 前 1800 字}
|
||
```
|
||
|
||
**日终报告**:
|
||
|
||
```
|
||
🤖 {YYYY-MM-DD} 日终持仓与交易报告
|
||
|
||
{content 前 1800 字}
|
||
```
|
||
|
||
---
|
||
|
||
## 推送与板块对照
|
||
|
||
| 板块 | 推送类型 |
|
||
|------|----------|
|
||
| 下单监控 | §1 §2 §3 §4 §5 §12 |
|
||
| 关键位监控 | §6 §7 §8 |
|
||
| 开单计划 | §9 §10 |
|
||
| 策略交易 | §11 §4 |
|
||
| AI 分析 | §12 |
|
||
|
||
---
|
||
|
||
## 注意事项
|
||
|
||
1. 所有消息经 `【国内期货】` 前缀发送,企业微信群机器人 `msgtype=text`。
|
||
2. 结构化开仓/平仓需 **填写止损** 才会发送完整模板;否则为简版。
|
||
3. AI 推送仅在 AI 调用 **成功** 时发送;失败内容只写入 `/ai` 页面。
|
||
4. 关键支阻区第 3 次推送后监控自动归档,不再推送。
|