From a2c0590353c6e3483468085f55a7eaf202e43397 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 17 Aug 2026 11:07:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(crypto=E7=AD=96=E7=95=A5):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20AG=20=E8=B6=8B=E5=8A=BF=E3=80=81=E5=BC=82=E5=8A=A8?= =?UTF-8?q?=E4=B8=8E=E6=B3=A2=E6=AE=B5=E8=B7=9F=E8=B8=AA=E4=BF=A1=E5=8F=B7?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Motivation: crypto-strategy 源新增 AG 趋势(AGTS)、异动(AMA)、波段跟踪(BTS) 三类量化策略信号,需与既有 trade.* 事件区分以避免和 AI crypto signals 精确匹配冲突,并为缺省方向提供兜底推导。 Changes: * 事件名映射按 strategyCode 使用独立前缀(AGTS./AMA./BTS.,HLSS 保持不变) * direction/side 缺失时依据 isSale 兜底推导为 LONG/SHORT * 补充三类策略的模板、规则示例文档与渲染/转换测试 --- README.md | 2 +- docs/httpie/curls.md | 97 +++++++++ internal/subscriber/cryptostrategy/convert.go | 28 ++- .../subscriber/cryptostrategy/convert_test.go | 195 ++++++++++++++++++ 4 files changed, 315 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 04cd322..e408f3f 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ make build && ./bin/server 环境变量 `RABBITMQ_URL` 未设置时不启动消费,HTTP 通知不受影响。交易信号订阅需事先创建 Source(如 `trade-signal`)、模板(可用 `{{.formatted}}`)、规则 `trade.open` / `trade.add` / `trade.close` / `trade.reduce`、以及渠道。规则条件可用 `strategyCode` / `symbol` / `period`。 -`crypto-strategy` 开仓(多/空,含原来的 `isSale` 空单)都映射为 `trade.open`,不再发 `trade.sell`。止盈(`isGain`)为 `trade.gain`,止损(`isClose` 且非 `isGain`)为 `trade.close`。高低分 `HLSS` 仍用 `HLSS.open` / `HLSS.sell` / `HLSS.close`。同一 Source 允许多条相同 event 的规则(用条件区分);精确 event 优先于通配,条件通过的规则都会发送。AI crypto signals 的现成模板与规则见 `docs/httpie/curls.md`。 +`crypto-strategy` 开仓(多/空,含原来的 `isSale` 空单)都映射为 `trade.open`,不再发 `trade.sell`。止盈(`isGain`)为 `trade.gain`,止损(`isClose` 且非 `isGain`)为 `trade.close`。高低分 `HLSS`、异动 `AMA`、波段 `BTS`、AG 趋势 `AGTS` 用各自前缀:`HLSS.open` / `AMA.open` / `BTS.close` / `AGTS.open` 等。同一 Source 允许多条相同 event 的规则(用条件区分);精确 event 优先于通配,条件通过的规则都会发送。现成模板与规则见 `docs/httpie/curls.md`。 健康检查:`GET /health` → `{"status":"ok"}` diff --git a/docs/httpie/curls.md b/docs/httpie/curls.md index edd81ad..30b9d1b 100644 --- a/docs/httpie/curls.md +++ b/docs/httpie/curls.md @@ -565,3 +565,100 @@ curl -X POST 'http://localhost:8080/api/v1/rules' \ "enabled": 1 }' ``` + +--- + +## AG 趋势 / 异动 / 波段跟踪(crypto-strategy) + +Source:`crypto-strategy`。Convert 后事件为 `AGTS.*` / `AMA.*` / `BTS.*`(与 `trade.*` 分开,避免和 AI crypto signals 抢精确匹配)。 + +| 策略 | strategyCode | 样例 payload | Convert event | +|------|--------------|--------------|---------------| +| AG趋势 | `AGTS` | `isSale` 开仓,带 `gainPrices` / `openPrice2` / `lossPrice` | `AGTS.open` | +| 异动 | `AMA` | 开仓,仅 `price` | `AMA.open` | +| 波段跟踪 | `BTS` | `isClose=true`,仅 `price` | `BTS.close` | + +有效期按样例写死:AG 6 天、异动 2-4 天、波段 17h。波段周期含 `2h` → `2小时`。 + +### 创建 AG 趋势模板 + +```bash +curl -X POST 'http://localhost:8080/api/v1/templates' \ + -H 'Authorization: Bearer admin-sk-change-me' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "ag_trend", + "content": "监控告警提醒\n\n操作策略:AG趋势{{case .symbol \"BTCUSDT\" \"BTC\" \"ETHUSDT\" \"ETH\" \"SOLUSDT\" \"SOL\" \"BNBUSDT\" \"BNB\" .symbol}}-{{case .period \"1h\" \"1小时\" \"2h\" \"2小时\" \"4h\" \"4小时\" \"6h\" \"6小时\" \"15m\" \"15分钟\" \"5m\" \"5分钟\" \"30m\" \"30分钟\" \"1d\" \"1日\" .period}}周期{{case .side \"LONG\" \"做多\" \"SHORT\" \"做空\"}}\n\n提醒时间:{{.pushedAt}}\n\n{{with .takeProfitRange}}止盈目标:{{.}}\n\n{{else}}{{with .takeProfitPrice}}止盈目标:{{.}}\n\n{{end}}{{end}}{{with .entryRange}}介入区间:{{.}}\n\n{{else}}{{with .price}}介入区间:{{.}}\n\n{{end}}{{end}}{{with .stopLossPrice}}止损价位:{{.}}\n\n{{end}}有效期:6天" + }' +``` + +### 创建异动预警模板 + +```bash +curl -X POST 'http://localhost:8080/api/v1/templates' \ + -H 'Authorization: Bearer admin-sk-change-me' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "anomaly_alert", + "content": "监控告警提醒\n\n监控名称:异动预警\n\n监控时间:{{.pushedAt}}\n\n监控目标:{{case .symbol \"BTCUSDT\" \"BTC\" \"ETHUSDT\" \"ETH\" \"SOLUSDT\" \"SOL\" \"BNBUSDT\" \"BNB\" .symbol}}异动预警(暴涨/跌)生效\n\n监控提醒:异动发生概率v1(v1