监控加密货币、期货、A股、美股的价格异动,通过飞书自动推送通知。
- 新币上架提醒:监控 Binance / Bybit 新上架的加密货币,第一时间推送通知
- 特殊K线检测:检测日涨跌幅或成交额是否超过历史均值,支持自定义倍率和阈值
- 多市场支持:加密货币(Binance Futures)、国内期货(白糖、沪金)、A股指数(创业板指)、美股指数(纳斯达克100)
- 中国100指数:自定义指数,跟踪在美股/港股/A股上市的中国非金融公司
trading_monitor/
├── trading_data/ # Python - 数据服务 (FastAPI + AkShare)
│ └── 提供期货、股票、指数的统一 HTTP API
├── trading_helper/ # Go - 业务服务 (Hertz)
│ └── 监控逻辑、告警判断、飞书通知
└── docker-compose.yml # 一键启动
cp .env.example .env编辑 .env,填入你的密钥:
| 变量 | 说明 | 必填 |
|---|---|---|
BINANCE_API_KEY |
币安 Futures API Key | 仅持仓功能需要 |
BINANCE_SECRET_KEY |
币安 Futures Secret Key | 仅持仓功能需要 |
BINANCE_HOST |
币安 API 地址 | 是(https://fapi.binance.com) |
ALI_ACCESS_KEY |
阿里云 AccessKey | 是 |
ALI_SECRET_KEY |
阿里云 SecretKey | 是 |
ALI_OSS_BUCKET |
OSS Bucket 名称 | 是 |
ALI_OSS_ENDPOINT |
OSS Endpoint | 是 |
ALI_OSS_ENDPOINT_INTERNAL |
OSS 内网 Endpoint | 云端部署时填 |
CONFIG_BACKEND |
配置来源:oss 或 local/file/test |
默认 oss |
LOCAL_CONFIG_DIR |
本地配置目录,读取 special_klines.json 等文件 |
默认 file |
JWT_SIGN_KEY |
JWT 签名密钥(Base64) | 是 |
FEISHU_WEBHOOK_URL |
飞书机器人 Webhook(正式) | 是 |
FEISHU_WEBHOOK_TEST_URL |
飞书机器人 Webhook(测试) | 调试用 |
NOTIFY_BACKEND |
通知后端:mock 写本地文件,feishu 发 webhook |
默认 mock |
TRADING_DATA_HOST |
trading_data 服务地址 | docker-compose 自动配置 |
TEST_TAG |
测试模式开关 | 默认 true |
docker-compose up --build单个 Docker 镜像内会自动启动两个进程:
trading_data:Python 数据服务,仅在容器内监听127.0.0.1:8000trading_helper:Go 业务服务,对外监听8888
# 健康检查
curl http://127.0.0.1:8888/ping
# 触发新币上架检查
curl -X POST http://127.0.0.1:8888/alert/new_crypto
# 触发特殊K线检测;TEST_TAG=true 时会返回每条规则的结构化执行结果
curl -X POST http://127.0.0.1:8888/alert/special/kline
# 查看容器内数据服务健康状态
docker exec <container_name> python -c "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8000/health').read().decode())"
# 查看容器内数据服务 - 白糖期货
docker exec <container_name> python -c "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8000/futures/sina?symbol=SR0').read().decode()[:500])"配置存储在阿里云 OSS 的 special_klines.json,示例见 trading_helper/file/special_klines.json:
{
"rules": [
{
"source": "binance_futures",
"symbol": "BTCUSDT",
"name": "BTC",
"interval": "1d",
"lookback_days": 84,
"change_multiplier": 2.0,
"change_threshold": 3.0,
"volume_multiplier": 2.0,
"volume_threshold": 0,
"enabled": true
}
]
}| 字段 | 说明 |
|---|---|
source |
数据源:binance_futures / trading_data_futures_sina / stocks_sina / stocks_us_sina |
symbol |
标的代码,如 BTCUSDT、SR0、sz399006、.NDX |
name |
显示名称 |
lookback_days |
回看天数(计算历史均值) |
change_multiplier |
涨跌幅超过均值 N 倍时触发 |
change_threshold |
涨跌幅绝对阈值(%),两个条件满足其一即触发 |
volume_multiplier |
成交额超过均值 N 倍时触发 |
enabled |
规则开关 |
- 在飞书群中添加自定义机器人
- 复制 Webhook 地址,填入
.env的FEISHU_WEBHOOK_URL - 触发告警时会自动推送消息到群
项目设计为通过外部定时器触发 HTTP 接口(如阿里云函数计算的定时触发器、cron job 等):
| 接口 | 建议频率 | 说明 |
|---|---|---|
POST /alert/new_crypto |
每 5 分钟 | 检查新币上架 |
POST /alert/special/kline |
每天固定时间 | K线异动检测 |
# trading_data
cd trading_data
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn src.server:app --host 0.0.0.0 --port 8000 --reload
# trading_helper(另开终端)
cd trading_helper
source ../.env # 或 export $(cat ../.env | grep -v '^#' | xargs)
go run main.goApache License 2.0 - 详见 LICENSE