119 lines
5.5 KiB
Markdown
119 lines
5.5 KiB
Markdown
# 策略交易说明
|
||
|
||
本文档说明仓库根目录 **共用策略逻辑** 与四个 `crypto_monitor_*` 实例中的 **策略交易** 入口(导航栏「策略·趋势回调」「策略·顺势加仓」)。
|
||
|
||
---
|
||
|
||
## 一、架构(精简共用)
|
||
|
||
```
|
||
strategy_trend_lib.py # 趋势回调:网格价、补仓拆分、边界校验(纯计算)
|
||
strategy_roll_lib.py # 顺势加仓:总风险反推、斐波限价、最多 3 腿(纯计算)
|
||
strategy_db.py # roll_groups / roll_legs 表结构
|
||
strategy_config.py # 各所 app → 统一回调配置(交易所 API)
|
||
strategy_register.py # Flask 路由:/strategy/trend、/strategy/roll
|
||
strategy_exchange_*.py # 适配器说明(实际下单仍走各所 app 的 ccxt)
|
||
strategy_templates/ # 顺势加仓页、趋势禁用提示页
|
||
```
|
||
|
||
| 层级 | 职责 |
|
||
|------|------|
|
||
| **lib** | 不算 ccxt、不写库 |
|
||
| **config** | 把 `place_exchange_order`、`replace_active_monitor_tpsl_on_exchange` 等接到统一 cfg |
|
||
| **各所 app** | `.env`、DB、`init_db`、PM2、微信、监控轮询 |
|
||
|
||
部署时各实例 `PYTHONPATH` 需包含仓库根目录(`ecosystem.config.cjs` 中 `PYTHONPATH=..`)。
|
||
|
||
---
|
||
|
||
## 二、导航与页面
|
||
|
||
| 路由 | 名称 | 说明 |
|
||
|------|------|------|
|
||
| `/strategy/trend` | 趋势回调 | **完整功能仅在 `crypto_monitor_gate_bot`**;其它所显示说明页 |
|
||
| `/strategy/roll` | 顺势加仓 | **四所均可用**(须已有同向持仓) |
|
||
| `/trade` | 实盘下单 | 首仓、以损定仓、移动保本(不变) |
|
||
|
||
---
|
||
|
||
## 三、趋势回调(延续 Gate 趋势机器人逻辑)
|
||
|
||
- **位置**:`crypto_monitor_gate_bot` → **策略·趋势回调**(原「交易执行」页内区块已迁出)。
|
||
- **行为**:与《[crypto_monitor_gate_bot/趋势回调策略说明.md](./crypto_monitor_gate_bot/趋势回调策略说明.md)》一致——预览 → 确认执行 → 首仓 50% + 交易所止损 + 多档 **自动** 市价补仓 + 程序监控止盈。
|
||
- **共用代码**:`parse_and_compute_trend_pullback_plan` 中网格/拆档已改为调用 `strategy_trend_lib`。
|
||
- **互斥**:与「机器人下单监控」持仓上限、运行中趋势计划互斥(逻辑未改)。
|
||
|
||
其它三所打开 `/strategy/trend` 会提示:请使用 Gate 趋势机器人实例。
|
||
|
||
---
|
||
|
||
## 四、顺势加仓(滚仓,仅人工)
|
||
|
||
### 4.1 原则
|
||
|
||
- **禁止自动加仓**;仅页面按钮「执行滚仓」或挂限价单(无价格穿越自动下单)。
|
||
- **全币种**(与各所合约列表一致)。
|
||
- **止盈**:全程使用 **首仓** `order_monitors.take_profit`,滚仓不改止盈。
|
||
- **止损**:每次人工填写 **新统一止损**;成交后调用各所 **先撤后挂** TP/SL(止盈仍为首仓)。
|
||
- **总风险%**:按「合并持仓 + 新止损」反推本次加仓张数,使触及新止损时亏损约 **账户基数 × 风险%**(默认 2%,可在表单修改)。
|
||
- **做多**最多滚仓 **3** 次(首仓不计入,仅计 `roll_legs` 已成交次数);做空默认同样 3 次(见 `strategy_roll_lib.ROLL_MAX_LEGS_SHORT`)。
|
||
|
||
### 4.2 斐波限价
|
||
|
||
- 填写 **上沿 H、下沿 L**(H > L),仅用于计算限价加仓价(与 `fib_key_monitor_lib.calc_fib_plan` 的 **entry** 一致)。
|
||
- **做多**:下沿 = 结构止损侧;**做空**:上沿 = 结构止损侧。
|
||
- 可选 **0.618** 或 **0.786**;与关键位自动单的 TP(H/L 对侧)**不同**,滚仓 TP 锁定首仓。
|
||
|
||
### 4.3 前置条件
|
||
|
||
1. 在 **实盘下单** 已有同 symbol、同方向 **active** `order_monitors`。
|
||
2. 交易所有同向持仓(读 `get_live_position_contracts`)。
|
||
3. 无 **active** `trend_pullback_plans`(与趋势回调互斥)。
|
||
|
||
### 4.4 数据表(各所 `crypto.db`)
|
||
|
||
- `roll_groups`:绑定 `order_monitor_id`、首仓 TP/SL、当前 SL、已滚仓次数。
|
||
- `roll_legs`:每腿方式(市价 / 斐波0.618 / 斐波0.786)、张数、新 SL、状态(`filled` / `pending`)。
|
||
|
||
`init_db()` 时自动 `CREATE TABLE IF NOT EXISTS`(`strategy_db.init_strategy_tables`)。
|
||
|
||
### 4.5 操作步骤
|
||
|
||
1. 打开 **策略·顺势加仓** `/strategy/roll`。
|
||
2. 选择持仓币种、方向、加仓方式,填写 H/L(斐波时)、**新统一止损**、总风险%。
|
||
3. 点击 **执行滚仓**(市价立即加仓并更新止损;限价则挂委托,成交后需再处理止损——当前版本限价 pending 后提示手动同步)。
|
||
4. 查看页底 **滚仓腿历史**。
|
||
|
||
可选:对表单字段 POST `/strategy/roll/preview`(JSON)查看 `strategy_roll_lib.preview_roll` 结果。
|
||
|
||
---
|
||
|
||
## 五、升级与重启
|
||
|
||
```bash
|
||
cd /opt/crypto_monitor
|
||
git pull
|
||
# 四所 PM2 若用到滚仓/趋势 lib,建议重启
|
||
pm2 restart crypto_binance crypto_gate crypto_gate_bot crypto_okx manual-trading-hub
|
||
```
|
||
|
||
仅改 Python 库、未改模板时,重启对应 Flask 进程即可。
|
||
|
||
---
|
||
|
||
## 六、相关文档
|
||
|
||
| 文档 | 内容 |
|
||
|------|------|
|
||
| [crypto_monitor_gate_bot/趋势回调策略说明.md](./crypto_monitor_gate_bot/趋势回调策略说明.md) | 趋势回调细则 |
|
||
| [manual_trading_hub/使用说明.md](./manual_trading_hub/使用说明.md) | 中控(不含策略交易) |
|
||
| [fib_key_monitor_lib.py](./fib_key_monitor_lib.py) | 斐波公式共用 |
|
||
|
||
---
|
||
|
||
## 七、后续可增强(未实现)
|
||
|
||
- 滚仓页内嵌预览按钮、限价成交后一键同步止损。
|
||
- 趋势回调计划逻辑进一步迁入 `strategy_trend_lib` + 各所 adapter 类(当前仅拆出网格/拆档计算)。
|
||
- Binance / Gate 主站 / OKX 移植趋势回调自动补仓(需复制 `check_trend_pullback_plans` 轮询)。
|