Skip to content

About

A daily price change notification feature designed for long-term trading.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Trading Monitor - 量化交易监控与通知

监控加密货币、期货、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 # 一键启动

快速开始

1. 配置环境变量

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

2. 启动服务

docker-compose up --build

单个 Docker 镜像内会自动启动两个进程:

  • trading_data:Python 数据服务,仅在容器内监听 127.0.0.1:8000
  • trading_helper:Go 业务服务,对外监听 8888

3. 测试接口

# 健康检查
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])"

通知配置

特殊K线规则

配置存储在阿里云 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 规则开关

飞书机器人配置

  1. 在飞书群中添加自定义机器人
  2. 复制 Webhook 地址,填入 .env 的 FEISHU_WEBHOOK_URL
  3. 触发告警时会自动推送消息到群

定时触发

项目设计为通过外部定时器触发 HTTP 接口(如阿里云函数计算的定时触发器、cron job 等):

接口 建议频率 说明
POST /alert/new_crypto 每 5 分钟 检查新币上架
POST /alert/special/kline 每天固定时间 K线异动检测

本地开发(不用 Docker)

# 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.go

License

Apache License 2.0 - 详见 LICENSE

About

A daily price change notification feature designed for long-term trading.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages