feat(crypto策略): 支持巴菲特策略纯 rawMessage 信号推送

Motivation:
新增巴菲特激进/稳健策略(PUTEJJ/PUTEWJ)的跟单推送能力。该类信号仅有 rawMessage、无 action 字段,需按原文直接推送,并过滤启动文案、本地化时间字段。

Changes:

* 支持无 action 的纯 rawMessage 信号,映射为 trade.message 事件
* 新增 not_contains 条件操作符,用于过滤启动文案
* 新增 replace 模板函数,将 Time: 替换为推送时间:
* 补充巴菲特策略模板、规则与渠道配置文档
This commit is contained in:
2026-08-17 16:38:09 +08:00
parent 33b2a96bcf
commit f7ea2e7cf9
9 changed files with 152 additions and 5 deletions
+89
View File
@@ -718,3 +718,92 @@ curl -X POST 'http://localhost:8080/api/v1/rules' \
"enabled": 1
}'
```
---
## 巴菲特激进 / 稳健(trade-signal
Source`trade-signal`。渠道:`safew_巴菲特策略``safew_巴菲特策略2``safew_巴菲特策略3`(三个不同群;`巴菲特02/03` 与策略2/3 是同一 chat,不要重复绑)。
策略 code:激进 `PUTEJJ`、稳健 `PUTEWJ`,共用上游 `rawMessage`(激进版 / 稳健版文案已在原文里)。加仓也是「市价开多/开空」,走开仓规则。
兜底 `rule-11``strategyCode ne PUTEJJ``ne PUTEWJ`,避免再发到测试AI。
启动文案(`普达特量化机器人…启动`)不含「市价开 / 平仓 / 本周期」,三条规则都匹配不上,等于过滤。
开仓 `rawMessage` 示例:
```
激进版AI 1.0
市价开空
交易品种: BTC
开空数量: 1.00
开空价格: 63578.00
持仓数量: 1.00
平均价格: 63578.00
浮动盈亏: 0.00
账户净值: 101286.40
账户余额:101286.40
Time: 2026.08.17 14:46:04
```
### 创建模板
```bash
curl -X POST 'http://localhost:8080/api/v1/templates' \
-H 'Authorization: Bearer admin-sk-change-me' \
-H 'Content-Type: application/json' \
-d '{
"name": "巴菲特策略",
"content": "{{if .rawMessage}}{{replace .rawMessage \"Time:\" \"推送时间:\"}}{{else}}{{.formatted}}{{end}}"
}'
```
线上若尚未部署 `replace`,先用 `{{if .rawMessage}}{{.rawMessage}}{{else}}{{.formatted}}{{end}}`
### 创建开仓 / 平仓 / 提现规则
```bash
curl -X POST 'http://localhost:8080/api/v1/rules' \
-H 'Authorization: Bearer admin-sk-change-me' \
-H 'Content-Type: application/json' \
-d '{
"name": "巴菲特开仓",
"source_name": "trade-signal",
"event": "trade.*",
"template_name": "巴菲特策略",
"channels": ["safew_巴菲特策略", "safew_巴菲特策略2", "safew_巴菲特策略3"],
"conditions": [{"field": "rawMessage", "op": "contains", "value": "市价开"}],
"enabled": 1
}'
```
```bash
curl -X POST 'http://localhost:8080/api/v1/rules' \
-H 'Authorization: Bearer admin-sk-change-me' \
-H 'Content-Type: application/json' \
-d '{
"name": "巴菲特平仓",
"source_name": "trade-signal",
"event": "trade.*",
"template_name": "巴菲特策略",
"channels": ["safew_巴菲特策略", "safew_巴菲特策略2", "safew_巴菲特策略3"],
"conditions": [{"field": "rawMessage", "op": "contains", "value": "平仓"}],
"enabled": 1
}'
```
```bash
curl -X POST 'http://localhost:8080/api/v1/rules' \
-H 'Authorization: Bearer admin-sk-change-me' \
-H 'Content-Type: application/json' \
-d '{
"name": "巴菲特提现",
"source_name": "trade-signal",
"event": "trade.*",
"template_name": "巴菲特策略",
"channels": ["safew_巴菲特策略", "safew_巴菲特策略2", "safew_巴菲特策略3"],
"conditions": [{"field": "rawMessage", "op": "contains", "value": "本周期"}],
"enabled": 1
}'
```