Go to file
2026-05-14 22:17:21 +08:00
app 1 2026-05-14 22:17:21 +08:00
tests 1 2026-05-14 22:12:31 +08:00
.dockerignore first commit 2026-05-14 21:40:22 +08:00
.env.example 1 2026-05-14 22:12:31 +08:00
.gitignore first commit 2026-05-14 21:40:22 +08:00
docker-compose.yml 1 2026-05-14 22:12:31 +08:00
Dockerfile first commit 2026-05-14 21:40:22 +08:00
README.md 1 2026-05-14 22:12:31 +08:00
requirements.txt first commit 2026-05-14 21:40:22 +08:00

TradingView Alert Dispatcher

接收 TradingView webhook alerttimeframe / symbol / strategy 等条件路由到飞书 webhook并提供管理控制台。

Run Locally

python3 -m app

默认地址:http://localhost:8000

默认登录:

  • 用户名:admin
  • 密码:change-me-now

首次启动会把 ADMIN_PASSWORD 写入数据库并保存为哈希。之后请在管理台的「账号安全」页面修改密码;修改后环境变量不会覆盖数据库中的新密码。

Docker

docker compose up --build

Compose 会启动两个服务:dispatcher 负责 Web/API/管理台,worker 负责周期性处理失败重试。

TradingView Payload

{
  "timeframe": "5m",
  "symbol": "BTCUSDT",
  "strategy": "breakout",
  "action": "buy",
  "price": 68000
}

发送到:

POST /webhook/tradingview
Content-Type: application/json

如果设置了 WEBHOOK_TOKENTradingView 需要使用以下任一方式携带 token

POST /webhook/tradingview?token=your-shared-secret
X-Webhook-Token: your-shared-secret

docker-compose.yml 默认已经设置了占位 token生产使用前请替换本地临时调试如果不想校验 token可以把 WEBHOOK_TOKEN 置为空。

Feishu Message Templates

路由规则统一发送飞书 interactive card。

标题和正文模板支持 {{field}} 占位符,字段来自 TradingView alert JSON。嵌套字段可以写成 {{order.id}}

每条路由规则通过「发送到」下拉框选择一个飞书 Webhook。timeframesymbolstrategy 至少填写一个,空字段表示不限。例如只填 symbol=BTCUSDT 会匹配所有 BTCUSDT 信号。需要同一个信号发到多个群时,可以建多条匹配条件相同、目标不同的规则,并用优先级控制命中顺序;当前默认路由逻辑只发送最高优先级命中的规则。

示例正文模板:

**品种**: {{symbol}}
**周期**: {{timeframe}}
**策略**: {{strategy}}
**动作**: {{action}}
**价格**: {{price}}

Environment

  • ADMIN_USERNAME
  • ADMIN_PASSWORD
  • SESSION_SECRET
  • WEBHOOK_TOKEN
  • DATABASE_PATH
  • RETENTION_DAYS
  • MAX_DELIVERY_ATTEMPTS
  • RETRY_BACKOFF_SECONDS
  • FEISHU_TIMEOUT_SECONDS
  • WORKER_INTERVAL_SECONDS